Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan-Frederik Wigger2011-04-15 16:32:38 +0000
committerJan-Frederik Wigger2011-04-15 16:32:38 +0000
commit4d07bdcfb682ecf425d4d0271a63ee498bbcb201 (patch)
tree0318e98ae6bcc0de1d4fd532a6187bdff6aecea2
parentab2a978ff331ea7ab7669fdd2fe832f302519d37 (diff)
downloadorg.eclipse.stem-4d07bdcfb682ecf425d4d0271a63ee498bbcb201.tar.gz
org.eclipse.stem-4d07bdcfb682ecf425d4d0271a63ee498bbcb201.tar.xz
org.eclipse.stem-4d07bdcfb682ecf425d4d0271a63ee498bbcb201.zip
added labels should be saved now. -- sometimes, changes are not shown directly after reopening graph
git-svn-id: http://dev.eclipse.org/svnroot/technology/org.eclipse.stem/trunk@1643 92a21009-5b66-0410-b83a-dc787c41c6e9
-rw-r--r--org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerType.java2
-rw-r--r--org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerValue.java2
-rw-r--r--org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboSelectionListenerValue.java2
-rw-r--r--org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/GraphCanvas.java560
-rw-r--r--org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/handlers/GraphDisplay.java2
5 files changed, 485 insertions, 83 deletions
diff --git a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerType.java b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerType.java
index a35bc0b7b..38c09c307 100644
--- a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerType.java
+++ b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerType.java
@@ -69,7 +69,7 @@ public class ComboListenerType implements SelectionListener
case GraphDefs.AREA_LABEL:
AreaLabel areaLabel = (AreaLabel) nodeLabel;
connectedCombo.add(String.valueOf(areaLabel.getCurrentAreaValue().getArea()));
- connectedLabel.setText("Value (Area km²): ");
+ connectedLabel.setText("Value (Area km^2): ");
connectedCombo.select(0);
break;
diff --git a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerValue.java b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerValue.java
index 92fa4d8a7..621729d95 100644
--- a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerValue.java
+++ b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboListenerValue.java
@@ -105,7 +105,7 @@ public class ComboListenerValue implements KeyListener
if (this.selectedValue == 0) // population name
{
populationLabel.setName(newValueString);
- //TODO setPopulationIdentifier or name?
+ populationLabel.setPopulationIdentifier(newValueString);
valueCombo.setItem(selectedValue, newValueString);
}
if (this.selectedValue == 1) // pop size
diff --git a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboSelectionListenerValue.java b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboSelectionListenerValue.java
index c1846b585..6a15f2a4b 100644
--- a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboSelectionListenerValue.java
+++ b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/ComboSelectionListenerValue.java
@@ -71,7 +71,7 @@ public class ComboSelectionListenerValue implements SelectionListener {
switch(labelTypes.get(selectedType))
{
case GraphDefs.AREA_LABEL:
- connectedLabel.setText("Value (Area km²): ");
+ connectedLabel.setText("Value (Area km^2): ");
break;
case GraphDefs.POPULATION_LABEL:
diff --git a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/GraphCanvas.java b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/GraphCanvas.java
index 8b03c2b36..63a01894a 100644
--- a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/GraphCanvas.java
+++ b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/GraphCanvas.java
@@ -12,6 +12,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
+import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -22,8 +23,18 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.EMap;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.emf.ecore.util.EObjectValidator;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.stem.adapters.file.File;
import org.eclipse.stem.core.Utility;
@@ -37,6 +48,7 @@ import org.eclipse.stem.definitions.adapters.spatial.SpatialProviderAdapter;
import org.eclipse.stem.definitions.adapters.spatial.geo.LatLong.Segment;
import org.eclipse.stem.definitions.adapters.spatial.geo.LatLong.SegmentBuilder;
import org.eclipse.stem.definitions.adapters.spatial.geo.LatLongProvider;
+import org.eclipse.stem.definitions.adapters.spatial.geo.LatLongProviderAdapter;
import org.eclipse.stem.definitions.adapters.spatial.geo.LatLongProviderAdapterFactory;
import org.eclipse.stem.definitions.edges.MigrationEdgeLabel;
import org.eclipse.stem.definitions.labels.AreaLabel;
@@ -131,13 +143,22 @@ public class GraphCanvas {
List<DisplayPolygon> polygonsToDraw = new ArrayList<DisplayPolygon>();
Map<String,GraphNode> GraphNodes = new HashMap<String, GraphNode>();
+
Map<String,GraphConnection> GraphConnections = new HashMap<String, GraphConnection>();
List<double[]> centers = new ArrayList<double[]>();
Map<String,Set<DisplayPolygon>> nodeID2Poly = new HashMap<String, Set<DisplayPolygon>>();
+
+
+
+
Map<URI,List<org.eclipse.stem.core.graph.NodeLabel>> nodeURI2Label = new HashMap<URI,List<org.eclipse.stem.core.graph.NodeLabel>>();
+
+
+
List<org.eclipse.stem.core.graph.Graph> graphList;
+
@@ -235,7 +256,6 @@ public class GraphCanvas {
-
//assign map: URI -> labels that have this URI as target
EMap<URI,org.eclipse.stem.core.graph.NodeLabel> graphNodeLabelList = stemGraph.getNodeLabels();
for(Map.Entry<URI,org.eclipse.stem.core.graph.NodeLabel> nodeLabel : graphNodeLabelList.entrySet())
@@ -259,9 +279,12 @@ public class GraphCanvas {
}
+
+
//assign nodes to index in list of graphs that were given to this graphCanvas Instance
+
int numnodes = stemGraph.getNodes().size();
final Map<URI, GraphNode> URI2Graphnodes = new HashMap<URI, GraphNode>();
int[] assign = new int[numnodes];
@@ -301,21 +324,29 @@ public class GraphCanvas {
LatLongProvider latLongProvider = (LatLongProvider) LatLongProviderAdapterFactory.INSTANCE
.adaptNew(n, LatLongProvider.class);
+
+ //LatLongProvider latLongProvider = new LatLongProviderAdapter();
+ //n.eAdapters().add((Adapter)latLongProvider);
+
+
//if node has no labels, add them from canonical graph info if available
- if (n.getLabels().size() == 0)
+ //if (n.getLabels().size() == 0)
+ //NO! otherwise several labels from different sources wont be shown
{
URI nURI = n.getURI();
if (nodeURI2Label.get(nURI) != null)
{ List<org.eclipse.stem.core.graph.NodeLabel> labelList = nodeURI2Label.get(nURI);
for (org.eclipse.stem.core.graph.NodeLabel label: labelList)
- {
- n.getLabels().add(label);
+ {
+ if (!n.getLabels().contains(label))
+ n.getLabels().add(label);
}
}
}
+
List<Segment> segments = latLongProvider.getLatLong().getSegments();
Segment segment = null;
@@ -374,7 +405,8 @@ public class GraphCanvas {
centers.clear();
-
+ n.eAdapters().remove(latLongProvider);
+ latLongProvider = null;
} // end putting nodes into graph, untranslated
@@ -607,16 +639,16 @@ private void computeTransform() {
+
+// ------------------------------ SAVING -----------------------------
+
private void saveGraph(List<org.eclipse.stem.core.graph.Graph> graphList, boolean saveAs, IProject project)
+
{
- /*System.err.println("------------------------------------------------------------------");
- System.err.println("GraphList: (Size: "+ graphList.size() + ")");
- for (org.eclipse.stem.core.graph.Graph graph : graphList)
- System.err.println(graph.getURI());
- System.err.println("------------------------------------------------------------------");
- */
-
+
+
boolean canonical = graphList.size() > 1;
+
URI newURI = null;
if (saveAs == true)
@@ -634,22 +666,20 @@ private void saveGraph(List<org.eclipse.stem.core.graph.Graph> graphList, boolea
// Did we get a valid file?
project = saveAsFile.getProject();
if (saveAsFile != null) {
- newURI = URI.createPlatformResourceURI(saveAsFile.getFullPath().toString());
-
- /*String newname = newURI.toString();
- if (!newname.endsWith(".graph"))
- {
- newURI = URI.createURI(newname.concat(".graph"));
- } */ //done by dialog
+
+ newURI = URI.createPlatformResourceURI(saveAsFile.getFullPath().toString());
}
+
}
}
+
Map<URI,URI> orig2newGraphURI = new HashMap<URI,URI>();
Map<URI,URI> orig2newModelURI = new HashMap<URI,URI>();
+
if (!canonical) //either single graph or canonical graph (with save as)
{
org.eclipse.stem.core.graph.Graph graph = graphList.get(0);
@@ -661,12 +691,14 @@ private void saveGraph(List<org.eclipse.stem.core.graph.Graph> graphList, boolea
graph.getURI().lastSegment());
}
saving(graph, project, newURI);
- //later: set new reference in models when saved (not save as)
+ //later set new reference in models when saved (not save as), save info in list
orig2newGraphURI.put(origURI, newURI);
try { project.refreshLocal(IResource.DEPTH_INFINITE, null); }
- catch (Exception ex) {}
+ catch (Exception ex) { Activator.logError(ex.getMessage(), ex); }
+
}
+
else //if (canonical): it is a collection of graphs to be saved: save all graphs in their specific files
{
for (org.eclipse.stem.core.graph.Graph graph : graphList)
@@ -682,11 +714,15 @@ private void saveGraph(List<org.eclipse.stem.core.graph.Graph> graphList, boolea
//set new reference in models when saved (not save as)
orig2newGraphURI.put(origURI, newURI);
try { project.refreshLocal(IResource.DEPTH_INFINITE, null); }
- catch (Exception ex) {}
+ catch (Exception ex) {
+ Activator.logError(ex.getMessage(), ex);
+ }
}
}
+
+
if (!saveAs)
{
List<Model> projectModels = new ArrayList<Model>();
@@ -697,7 +733,7 @@ private void saveGraph(List<org.eclipse.stem.core.graph.Graph> graphList, boolea
saveModel(model, project, orig2newModelURI);
}
try { project.refreshLocal(IResource.DEPTH_INFINITE, null); }
- catch (Exception ex) {}
+ catch (Exception ex) { Activator.logError(ex.getMessage(), ex); }
projectModels = new ArrayList<Model>();
projectModels = addProjectModels(projectModels, project);
@@ -707,9 +743,9 @@ private void saveGraph(List<org.eclipse.stem.core.graph.Graph> graphList, boolea
for (Model model : projectModels) {
updateModelReferenceAndSave(model, project, orig2newGraphURI, orig2newModelURI );
}
- //updateModelReferences(project, orig2newGraphURI);
}
+
}
@@ -717,26 +753,53 @@ private void saveGraph(List<org.eclipse.stem.core.graph.Graph> graphList, boolea
private void saving(org.eclipse.stem.core.graph.Graph graph, IProject project, URI newURI)
{
String projectName = project.getName();
-
- /*
- System.err.println("------------------------------------------------------------------");
- System.err.println("------subGraph-URI: " + graph.getURI());
- System.err.println("------subGraph-Spatial: " + graph.getDublinCore().getSpatial());
- System.err.println("\n");
- */
-
+
//make a deep copy of the graph where all changes are made
ArrayList<Identifiable> newlist = new ArrayList<Identifiable>();
Identifiable id = (Identifiable) EcoreUtil.copy(graph);
id.setURI(newURI);
org.eclipse.stem.core.graph.Graph graphcopy = (org.eclipse.stem.core.graph.Graph) id;
+ /*
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(graphcopy);
+ if (diagnostic.getCode() == EObjectValidator.EOBJECT__EVERY_PROXY_RESOLVES)
+ {
+ System.err.println("Alright");
+ }
+ else
+ {
+ System.err.println("Error");
+ }
+
+ ResourceImpl graphcopyResource = new ResourceImpl(graphcopy.getURI());
+ try {
+ graphcopyResource.load(null);
+ EcoreUtil.resolveAll(graphcopyResource);
+ }
+ catch(Exception e) {}
+
-
-
-
+
+ final ResourceSet resourceSet2 = new ResourceSetImpl();
+ try {
+ final Resource resource = resourceSet2.getResource(graphcopy.getURI(), true);
+
+
+
+
+ resource.load(null);
+ EcoreUtil.resolveAll(resource);
+ graph =
+ (org.eclipse.stem.core.graph.Graph) resource.getContents().get(0);
+
+ }
+ catch(Exception e) {}
+ */
+
+
String fileBaseName = graphcopy.getURI().lastSegment().
substring(0, graphcopy.getURI().lastSegment().lastIndexOf("."));
+
String tail = projectName + "/.gml/" + fileBaseName + "_MAP.xml";
@@ -761,39 +824,93 @@ private void saving(org.eclipse.stem.core.graph.Graph graph, IProject project, U
EMap<URI, NodeLabel> stemLabels = graphcopy.getNodeLabels();
EMap<URI, NodeLabel> stemLabels_stemGraph = stemGraph.getNodeLabels();
+ /*
+ for (Map.Entry<URI,NodeLabel> entry : stemLabels.entrySet())
+ {
+ URI uri = entry.getKey();
+ NodeLabel nodeLabel = entry.getValue();
+ if ((nodeLabel != null) && (uri != null))
+ {
+ System.err.println("graphcopy label: " + uri + " " + nodeLabel.toString() );
+ if (nodeLabel.eContainer().eIsProxy())
+ {
+ //System.err.println("is PROXY! take from stemgraph and replace with label " + stemGraph.getNodeLabels().get(nodeLabel.getURI()).getURI() );
+ //nodeLabel = stemGraph.getNodeLabels().get(nodeLabel.getURI());
+ System.err.println(nodeLabel.toString());
+ EcoreUtil.resolve(nodeLabel, (EObject) nodeLabel);
+ ResourceImpl nodeLabelResource = new ResourceImpl(uri);
+ try { nodeLabelResource.load(null);
+ EcoreUtil.resolveAll(nodeLabelResource);
+ }
+ catch (Exception e) {}
+ System.err.println(nodeLabel.toString());
+
+ }
+ }
+ }
+ */
+
+
+ /*
+ for (Map.Entry<URI,NodeLabel> entry : stemLabels.entrySet())
+ {
+ URI uri = entry.getKey();
+ NodeLabel nodeLabel = entry.getValue();
+ if ((nodeLabel != null) && (uri != null))
+ System.err.println("graphcopy label: " + uri + " " + nodeLabel.toString() );
+ }
+ for (Map.Entry<URI,NodeLabel> entry : stemLabels_stemGraph.entrySet())
+ {
+ URI uri = entry.getKey();
+ NodeLabel nodeLabel = entry.getValue();
+ if ((nodeLabel != null) && (uri != null))
+ System.err.println("stemGraph label: " + uri + " " + nodeLabel.toString() );
+ }
+ */
+
+
for (Map.Entry<URI,NodeLabel> entry : stemLabels_stemGraph.entrySet())
{
URI uri = entry.getKey();
NodeLabel nodeLabel = entry.getValue();
-
+
if(stemLabels.containsKey(uri))
- { NodeLabel copyGraphNodeLabel = stemLabels.get(uri);
+ {
+
+ NodeLabel copyGraphNodeLabel = stemLabels.get(uri);
if ((nodeLabel != null) && (copyGraphNodeLabel != null))
- if (!copyGraphNodeLabel.toString().equals(nodeLabel.toString()))
-
- //if (copyGraphNodeLabel != nodeLabel)
+ if (!copyGraphNodeLabel.toString().equals(nodeLabel.toString()))
+ //TODO if (copyGraphNodeLabel != nodeLabel)
{
-
- System.err.println("URI " + uri + " in beiden mit Werten "
- + nodeLabel.toString() + " und " + copyGraphNodeLabel.toString());
-
- //stemLabels.get(uri).setCurrentValue(nodeLabel.getCurrentValue());
-
+ //if (copyGraphNodeLabel.eContainer().eIsProxy())
+ {
+ //EcoreUtil.ProxyCrossReferencer
+ //URI proxyURI = ((EObject)copyGraphNodeLabel);
+ //eObj = resource.getEObject(proxyURI.fragment());
+ // System.err.println("PROXY!");
+ }
+ //copyGraphNodeLabel.eContainer().
+ System.err.println("Change Label with URI " + uri + " from "
+ + copyGraphNodeLabel.toString() + " to " + nodeLabel.toString());
+
if (stemLabels.get(uri) instanceof PopulationLabel)
{
((PopulationLabel)stemLabels.get(uri)).
setPopulationIdentifier(((PopulationLabel)nodeLabel).getPopulationIdentifier());
((PopulationLabel)stemLabels.get(uri)).
setName(((PopulationLabel)nodeLabel).getName());
+
}
if (stemLabels.get(uri) instanceof AreaLabel)
- ((AreaLabel)stemLabels.get(uri)).
- setCurrentValue(((AreaLabel)nodeLabel).getCurrentAreaValue());
-
+ ((AreaLabel)stemLabels.get(uri))
+ //.setCurrentValue(((AreaLabel)nodeLabel).getCurrentAreaValue());
+ .getCurrentAreaValue().setArea(((AreaLabel)nodeLabel).getCurrentAreaValue().getArea());
}
}
+
+
}
@@ -823,15 +940,14 @@ private void saving(org.eclipse.stem.core.graph.Graph graph, IProject project, U
}
- }
- //System.err.println("Edge: " + uri +
- // " \n\tTitle:" + e.getDublinCore().getTitle() +
- // " \n\tLabel:" + e.getLabel().toString());
+ }
}
+ Map<Node, NodeLabel> add2GraphMap = new HashMap<Node,NodeLabel>();
//NODES
EMap<URI, Node> stemNodes = graphcopy.getNodes();
+
Map<String,Set<GmlPolygon>> polygonMap = new HashMap<String,Set<GmlPolygon>>();
SpatialGmlExporter sgmle = new SpatialGmlExporter();
@@ -846,10 +962,98 @@ private void saving(org.eclipse.stem.core.graph.Graph graph, IProject project, U
//Title
n.getDublinCore().setTitle(nodeData.getNodeTitle());
+
+
+ if (nodeURI2Label.containsKey(nodeData.getNodeURI()))
+ {
+ //in the list nodeURI2Label the labels of the canonical graph
+ //have been assigned to their target nodes. If meanwhile
+ //new labels have been added in the editor, the list lengths should
+ //differ
+ if (nodeURI2Label.get(nodeData.getNodeURI()).size() != nodeData.getNodeLabels().size())
+ {
+ List<NodeLabel> originalLabelList = nodeURI2Label.get(nodeData.getNodeURI());
+ for (NodeLabel nodeLabel : nodeData.getNodeLabels())
+ {
+
+ //System.err.println("graphcopy node " + n.getURI() + " Label: " + nodeLabel.toString());
+ if (!originalLabelList.contains(nodeLabel))
+ { //System.err.println("^- insert to graphcopy: Label: " + nodeLabel.toString()
+ // + " LabelURI: " + nodeLabel.getURI()
+ // + "(compare StemGraph) "
+ // + " to Node: " + nodeLabel.getURIOfIdentifiableToBeLabeled());
+
+ graphcopy.getNodeLabels().put(nodeLabel.getURI(), nodeLabel);
+
+ /*
+ // TODO new label instead of copying, seems to be necessary to create "<href node=" in label entry of .graph file
+ if (nodeLabel instanceof PopulationLabel)
+ {
+ //Identifiable idLabel = (NodeLabel) EcoreUtil.copy(nodeLabel);
+ PopulationLabel origPopulationLabel = (PopulationLabel) nodeLabel;
+ PopulationLabel populationLabel = LabelsFactory.eINSTANCE.createPopulationLabel();
+ populationLabel.setPopulationIdentifier(origPopulationLabel.getPopulationIdentifier());
+ populationLabel.setPopulatedArea(origPopulationLabel.getPopulatedArea());
+ populationLabel.getCurrentPopulationValue().setCount(origPopulationLabel.getCurrentPopulationValue().getCount());
+ populationLabel.setName(origPopulationLabel.getName());
+ populationLabel.setURIOfIdentifiableToBeLabeled(nodeData.getNodeURI());
+ populationLabel.setNode(nodeData.getNode());
+ }
+ else if (nodeLabel instanceof AreaLabel)
+ {
+ //Identifiable idLabel = (NodeLabel) EcoreUtil.copy(nodeLabel);
+ AreaLabel origAreaLabel = (AreaLabel) nodeLabel;
+ AreaLabel areaLabel = LabelsFactory.eINSTANCE.createAreaLabel();
+ areaLabel.getCurrentAreaValue().setArea(origAreaLabel.getCurrentAreaValue().getArea());
+ //areaLabel.setCurrentValue(origAreaLabel.getCurrentAreaValue());
+ areaLabel.setURIOfIdentifiableToBeLabeled(nodeData.getNodeURI());
+ areaLabel.setNode(nodeData.getNode());
+ }
+ */
+ //try below with list
+ //graph.getNode(nodeLabel.getURIOfIdentifiableToBeLabeled()).getLabels().add(nodeLabel);
+
+ //if (graphList.size() == 1)
+ add2GraphMap.put(graph.getNode(nodeLabel.getURIOfIdentifiableToBeLabeled()), nodeLabel);
+ }
+ }
+ }
+ }
+ else // there were no assignments of labels to this node in advance
+ {
+ if (nodeData.getNodeLabels() != null)
+ {
+ for (NodeLabel nodeLabel : nodeData.getNodeLabels())
+ {
+ graphcopy.getNodeLabels().put(nodeLabel.getURI(), nodeLabel);
+ }
+ }
+ }
+ }
+
+
+
+ for (Map.Entry<Node,NodeLabel> URINodeEntry : add2GraphMap.entrySet())
+ {
+
+
+
+ NodeLabel nl = URINodeEntry.getValue();
+ Node node = URINodeEntry.getKey();
+ graph.getNode(node.getURI()).getLabels().add(nl);
+ /*System.err.println("^- insert to graph node Label: " + nl.toString()
+ + " LabelURI: " + nl.getURI()
+ + " to Node: " + );*/
}
-
+ /*System.err.println("Labels of current node: ");
+ for (NodeLabel nodeLabel : n.getLabels())
+ {
+ System.err.println("\t" + nodeLabel.toString());
+ }*/
+
+
//Spatial
Set<DisplayPolygon> displayPolygons = nodeID2Poly.get(n.getDublinCore().getIdentifier());
if (displayPolygons != null)
@@ -875,7 +1079,23 @@ private void saving(org.eclipse.stem.core.graph.Graph graph, IProject project, U
}
}
}//node loop
+
+
+
+
+ //TODO remove
+ /*
+ System.err.println("\n\n After label insert: ");
+ for (Map.Entry<URI,NodeLabel> entry : graphcopy.getNodeLabels().entrySet())
+ {
+ URI uri = entry.getKey();
+ NodeLabel nodeLabel = entry.getValue();
+ if ((nodeLabel != null) && (uri != null))
+ System.err.println( "graphcopy label: " + uri + " " + nodeLabel.toString() );
+ } */
+
+
if (polygonMap.size() > 0)
@@ -892,22 +1112,37 @@ private void saving(org.eclipse.stem.core.graph.Graph graph, IProject project, U
}
+
// saving Graph
try {
graphcopy.getDublinCore().setTitle("");
- newlist.add(graphcopy);
+
+ //make another copy here, or problems with save as...
+ Identifiable graphCopyCopy = (Identifiable) EcoreUtil.copy(graphcopy);
+ graphCopyCopy.setURI(newURI);
+ newlist.add(graphCopyCopy);
+
Utility.serializeIdentifiables(newlist, newURI);
+ newlist = null;
+ /*
+ ResourceSet resourceSet = new ResourceSetImpl();
+ final Resource resource = resourceSet.getResource(graphcopy.getURI(), true);
+ EcoreUtil.resolveAll(resource);
+ graphcopy =
+ (org.eclipse.stem.core.graph.Graph) resource.getContents().get(0);
+ */
} catch(Exception e) {
Activator.logError(e.getMessage(), e);
- }
+
+ }
+
- /*
- System.err.println("------new URI: " + newURI);
- System.err.println("------new subGraph-URI: " + graphcopy.getURI());
- System.err.println("------new subGraph-Spatial: " + graphcopy.getDublinCore().getSpatial());
- System.err.println("------------------------------------------------------------------");
- */
+
+ //System.err.println("GraphURI: " + graph.getURI());
+ //System.err.println("GraphCopyURI: " + graph.getURI());
+
+
}
@@ -982,11 +1217,18 @@ private Composite createBottomComposite(final Composite parent, final Graph zest
if (graphList.size() >= 1) //== // if file == null it is a canonical graph
{
ToolItem saveButton = new ToolItem(toolBar, SWT.PUSH);
- saveButton.setText("Save Graph");
+ saveButton.setText("Save Graph and Quit");
saveButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
saveGraph(graphList, false, project);
+ try { project.refreshLocal(IResource.DEPTH_INFINITE, null); }
+ catch (Exception ex) { Activator.logError(ex.getMessage(), ex); }
Activator.getDefault().getWorkbench().getDisplay().getActiveShell().dispose();
+ //clean(graphList, project);
+ //display(graphList, null, project, null); //TODO check to give model
+
+
+
}
public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
@@ -1005,7 +1247,10 @@ private Composite createBottomComposite(final Composite parent, final Graph zest
new ArrayList<org.eclipse.stem.core.graph.Graph>();
saveGraphList.add(stemGraph);
saveGraph(saveGraphList, true, project);
- Activator.getDefault().getWorkbench().getDisplay().getActiveShell().dispose();
+ try { project.refreshLocal(IResource.DEPTH_INFINITE, null); }
+ catch (Exception ex) { Activator.logError(ex.getMessage(), ex); }
+ //Activator.getDefault().getWorkbench().getDisplay().getActiveShell().dispose();
+
}
public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) {
@@ -1420,7 +1665,7 @@ private Composite createDataComposite(final Composite parent, final Graph zestGr
{
case AREA_LABEL: AreaLabel areaLabel = (AreaLabel) nodeLabel;
nodeLabelValue_edit.add(String.valueOf(areaLabel.getCurrentAreaValue().getArea()));
- nodeLabelValue.setText("Value (Area km²): ");
+ nodeLabelValue.setText("Value (Area km^2): ");
break;
case POPULATION_LABEL: PopulationLabel populationLabel = (PopulationLabel) nodeLabel;
nodeLabelValue_edit.add(populationLabel.getName());
@@ -1601,7 +1846,10 @@ menu.addMenuListener(new MenuListener() {
areaLabel.setURIOfIdentifiableToBeLabeled(nodeData.getNodeURI());
areaLabel.setNode(nodeData.getNode());
URI newURI = createAreaLabelURI(nodeData.getNode());
- stemGraph.getNodeLabels().put(newURI, areaLabel);
+ //prevents multiple labels, important for population already
+ //areaLabel.setURI(newURI);
+ //stemGraph.getNodeLabels().put(newURI, areaLabel);
+ stemGraph.getNodeLabels().put(areaLabel.getURI(), areaLabel);
nodeData.getNodeLabels().add(areaLabel);
nodeData.getNodeLabelTypes().add(AREA_LABEL);
@@ -1638,7 +1886,13 @@ menu.addMenuListener(new MenuListener() {
populationLabel.setURIOfIdentifiableToBeLabeled(nodeData.getNodeURI());
populationLabel.setNode(nodeData.getNode());
URI newURI = createPopulationLabelURI(nodeData.getNode(), initPop);
- stemGraph.getNodeLabels().put(newURI, populationLabel);
+
+ //this would prevent multiple labels, important for population already
+ //populationLabel.setURI(newURI);
+
+ //stemGraph.getNodeLabels().put(newURI, populationLabel);
+ stemGraph.getNodeLabels().put(populationLabel.getURI(), populationLabel);
+
nodeData.getNodeLabels().add(populationLabel);
nodeData.getNodeLabelTypes().add(POPULATION_LABEL);
@@ -1740,6 +1994,7 @@ private String getCountryCode(Node n) {
+
private List<Model> addProjectModels(List<Model> projectModels, IProject project)
{
IFolder modelFolder = project.getFolder("models");
@@ -1747,7 +2002,7 @@ private List<Model> addProjectModels(List<Model> projectModels, IProject project
try {
models = modelFolder.members();
} catch(Exception e) {
- e.printStackTrace();
+ Activator.logError(e.getMessage(), e);
}
if (models != null) {
for(IResource r:models) {
@@ -1763,7 +2018,9 @@ private List<Model> addProjectModels(List<Model> projectModels, IProject project
projectModels.add((Model)id);
}
}
- catch(Exception ex) { }
+ catch(Exception ex) {
+ Activator.logError(ex.getMessage(), ex);
+ }
}
}
return projectModels;
@@ -1802,10 +2059,9 @@ private void saveModel (Model model, IProject project, Map<URI,URI> orig2newMode
newlist.add(modelCopy);
try {
- Utility.serializeIdentifiables(newlist, newModelURI);
- //System.err.println("1761: gelungen: Writing " + newModelURI);
+ Utility.serializeIdentifiables(newlist, newModelURI);
}
- catch (Exception ex) { //System.err.println("ERROR");
+ catch (Exception ex) { Activator.logError(ex.getMessage(), ex);
}
}
}
@@ -1825,8 +2081,7 @@ private void updateModelReferenceAndSave(Model model, IProject project, Map<URI
{
if(!graphURI.equals(orig2newGraphURI.get(graphURI)))
{
- graph.setURI(orig2newGraphURI.get(graphURI));
- //System.err.println("1783: ersetze " +graphURI + " durch " + orig2newGraphURI.get(graphURI));
+ graph.setURI(orig2newGraphURI.get(graphURI));
}
}
@@ -1839,8 +2094,7 @@ private void updateModelReferenceAndSave(Model model, IProject project, Map<URI
{
if(!childModelURI.equals(orig2newModelURI.get(childModelURI)))
{
- childModel.setURI(orig2newModelURI.get(childModelURI));
- //System.err.println("1797: ersetze " +childModelURI + " durch " + orig2newModelURI.get(childModelURI));
+ childModel.setURI(orig2newModelURI.get(childModelURI));
}
}
@@ -1849,16 +2103,164 @@ private void updateModelReferenceAndSave(Model model, IProject project, Map<URI
URI newModelURI = URI.createPlatformResourceURI
(project.getName() + "/models/" + modelURI.lastSegment());
- //virgin test?
+ //TODO virgin test?
{ ArrayList<Identifiable> newlist = new ArrayList<Identifiable>();
Identifiable modelCopy = (Identifiable) EcoreUtil.copy(model);
modelCopy.setURI(newModelURI);
newlist.add(modelCopy);
- //System.err.println("1811: Writing " + newModelURI);
Utility.serializeIdentifiables(newlist, newModelURI);
}
- } catch(Exception e) {}
+ } catch(Exception e) { Activator.logError(e.getMessage(), e); }
+}
+
+
+private void clean(List<org.eclipse.stem.core.graph.Graph> graphList, IProject project)
+{
+ /*
+ zoomFactor = 1.0;
+ ZOOMING_FACTOR = 1.1;
+ UNZOOMING_FACTOR = 1 / ZOOMING_FACTOR;
+ offsetX=0;
+ offsetY=0;
+ scaleFactor=0;
+ lastOffsetX=0;
+ lastOffsetY=0;
+ leftMouseButtonPressed=false;
+ xTranslation = 0.0;
+ yTranslation = 0.0;
+ maxLT=Double.NEGATIVE_INFINITY;
+ maxLG=Double.NEGATIVE_INFINITY;
+ minLT=Double.MAX_VALUE;
+ minLG=Double.MAX_VALUE;
+
+ zestGraphBounds = null;
+ graphBounds = null;
+ polygonsToDraw = new ArrayList<DisplayPolygon>();
+ GraphNodes = new HashMap<String, GraphNode>();
+ GraphConnections = new HashMap<String, GraphConnection>();
+ centers = new ArrayList<double[]>();
+ nodeID2Poly = new HashMap<String, Set<DisplayPolygon>>();
+ nodeURI2Label = new HashMap<URI,List<org.eclipse.stem.core.graph.NodeLabel>>();
+ */
+
+
+
+
+ /*
+ for (org.eclipse.stem.core.graph.Graph graph : graphList)
+ {
+ EMap<URI,Node> nodeList = graph.getNodes();
+ for (Map.Entry<URI,Node> entry : nodeList.entrySet())
+ {
+ URI uri = entry.getKey();
+ Node node = entry.getValue();
+ EList<Adapter> adapterList = node.eAdapters();
+ node.eAdapters().removeAll(node.eAdapters());
+ String a = "";
+ }
+
+ }
+
+
+
+
+ List<URI> graphURIs = new ArrayList<URI>();
+ for (org.eclipse.stem.core.graph.Graph graph : graphList)
+ {
+ graphURIs.add(graph.getURI());
+ }
+ graphList = new ArrayList<org.eclipse.stem.core.graph.Graph>();
+
+ */
+
+
+ IContainer graphsFolder = project.getFolder("graphs");
+ IResource[] graphs = null;
+ try {
+ graphs = graphsFolder.members();
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ if (graphs != null) {
+ for(IResource r:graphs) {
+ // ignore system files
+ if(r.getName().startsWith(".")) continue;
+
+ try {
+
+ URI uri = URI.createURI(r.getLocationURI().toString());
+ Identifiable id = Utility.getIdentifiable(uri);
+ if (id instanceof org.eclipse.stem.core.graph.Graph)
+ {
+ /*if (graphURIs.contains( ((org.eclipse.stem.core.graph.Graph)id).getURI()))
+ {
+ graphList.add((org.eclipse.stem.core.graph.Graph)id);
+ System.err.println("Add graph " + ((org.eclipse.stem.core.graph.Graph)id).getURI());
+ }*/
+
+ org.eclipse.stem.core.graph.Graph graph = (org.eclipse.stem.core.graph.Graph) id;
+
+ for (Map.Entry<URI,Node> entry : graph.getNodes().entrySet())
+ {
+ URI nodeURI = entry.getKey();
+ Node node = entry.getValue();
+ if (node.eContainer().eIsProxy())
+ {
+ EcoreUtil.resolve(node, (EObject) node);
+ }
+ for (NodeLabel label : node.getLabels())
+ {
+ if (label.eContainer().eIsProxy())
+ {
+ EcoreUtil.resolve(label, (EObject) label);
+ }
+ }
+ }
+
+ }
+ } catch(Exception e) {
+ // Skip bad file
+ }
+ }
+ }
+ /*
+ IContainer modelsFolder = project.getFolder("models");
+ IResource[] models = null;
+ try {
+ models = modelsFolder.members();
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ if (models != null) {
+ for(IResource r:models) {
+ // ignore system files
+ if(r.getName().startsWith(".")) continue;
+
+ try {
+
+ URI uri = URI.createURI(r.getLocationURI().toString());
+ Identifiable id = Utility.getIdentifiable(uri);
+ if (id instanceof Model)
+ {
+ for (org.eclipse.stem.core.graph.Graph graph : ((Model)id).getGraphs())
+ if (graphURIs.contains( graph.getURI()))
+ {
+ if (!graphList.contains(graph.getURI()))
+ {
+ graphList.add((org.eclipse.stem.core.graph.Graph)id);
+ System.err.println("Add graph " + ((org.eclipse.stem.core.graph.Graph)id).getURI());
+ }
+ }
+ }
+ } catch(Exception e) {
+ // Skip bad file
+ }
+ }
+ }
+ */
}
+
+
} //end of graph canvas
diff --git a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/handlers/GraphDisplay.java b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/handlers/GraphDisplay.java
index 20c21e080..102d4d411 100644
--- a/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/handlers/GraphDisplay.java
+++ b/org.eclipse.stem.ui.grapheditor/src/org/eclipse/stem/ui/grapheditor/handlers/GraphDisplay.java
@@ -176,7 +176,7 @@ implements IHandler {
}
// Skip bad file
- catch(Exception e) { }
+ catch(Exception e) { e.printStackTrace(); }
} // models iterator
} // models != null, end updating graphs
*/

Back to the top