]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkEdgeElementFactory.java
Some more added functionality to simantics district editor etc
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / adapters / DistrictNetworkEdgeElementFactory.java
index ff1d844faf936c93a5344db9804a768c85a29991..63590990cd9ba421097cd65270be0b6cf8faaa4c 100644 (file)
@@ -1,62 +1,75 @@
-package org.simantics.district.network.ui.adapters;\r
-\r
-import java.awt.geom.Path2D;\r
-\r
-import org.simantics.db.AsyncReadGraph;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.procedure.AsyncProcedure;\r
-import org.simantics.diagram.adapter.SyncElementFactory;\r
-import org.simantics.diagram.stubs.DiagramResource;\r
-import org.simantics.diagram.ui.DiagramModelHints;\r
-import org.simantics.district.network.ontology.DistrictNetworkResource;\r
-import org.simantics.district.network.ui.DistrictNetworkEdge;\r
-import org.simantics.g2d.canvas.ICanvasContext;\r
-import org.simantics.g2d.diagram.IDiagram;\r
-import org.simantics.g2d.element.ElementClass;\r
-import org.simantics.g2d.element.IElement;\r
-import org.simantics.g2d.element.handler.impl.StaticObjectAdapter;\r
-\r
-public class DistrictNetworkEdgeElementFactory extends SyncElementFactory {\r
-\r
-    public static final ElementClass CLASS = DistrictNetworkEdgeElement.CLASS;\r
-    \r
-    private DistrictNetworkResource DN;\r
-    private DiagramResource DIA;\r
-    \r
-    public DistrictNetworkEdgeElementFactory(ReadGraph graph) {\r
-        this.DN = DistrictNetworkResource.getInstance(graph);\r
-        this.DIA = DiagramResource.getInstance(graph);\r
-    }\r
-    \r
-    @Override\r
-    public void create(AsyncReadGraph graph, ICanvasContext canvas, IDiagram diagram, Resource elementType, AsyncProcedure<ElementClass> procedure) {\r
-        procedure.execute(graph, CLASS.newClassWith(false, new StaticObjectAdapter(elementType)));\r
-    }\r
-    \r
-    @Override\r
-    protected Resource getElementClassBaseType(AsyncReadGraph graph) {\r
-        return DN.Edge;\r
-    }\r
-    \r
-    @Override\r
-    public void load(ReadGraph graph, ICanvasContext canvas, IDiagram diagram, Resource edgeResource, IElement element) throws DatabaseException {\r
-        \r
-        Resource diagramRuntime = diagram.getHint(DiagramModelHints.KEY_DIAGRAM_RUNTIME_RESOURCE);\r
-        \r
-        Resource startVertex = graph.getSingleObject(edgeResource, DN.HasStartVertex);\r
-        Resource endVertex = graph.getSingleObject(edgeResource, DN.HasEndVertex);\r
-        \r
-        double[] startCoords = graph.getRelatedValue2(startVertex, DIA.HasLocation);\r
-        double[] endCoords = graph.getRelatedValue2(endVertex, DIA.HasLocation);\r
-        \r
-        Path2D path = new Path2D.Double();\r
-        path.moveTo(startCoords[0], startCoords[1]);\r
-        path.lineTo(endCoords[0], endCoords[1]);\r
-        \r
-        DistrictNetworkEdge edge = new DistrictNetworkEdge(path);\r
-        \r
-        element.setHint(DistrictNetworkEdgeElement.KEY_DN_EDGE, edge);\r
-    }\r
-}\r
+package org.simantics.district.network.ui.adapters;
+
+import java.awt.geom.Path2D;
+
+import org.simantics.db.AsyncReadGraph;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.procedure.AsyncProcedure;
+import org.simantics.diagram.adapter.SyncElementFactory;
+import org.simantics.diagram.stubs.DiagramResource;
+import org.simantics.diagram.synchronization.IModifiableSynchronizationContext;
+import org.simantics.diagram.synchronization.SynchronizationHints;
+import org.simantics.diagram.synchronization.graph.GraphSynchronizationHints;
+import org.simantics.diagram.synchronization.graph.layer.GraphLayerManager;
+import org.simantics.diagram.ui.DiagramModelHints;
+import org.simantics.district.network.ontology.DistrictNetworkResource;
+import org.simantics.district.network.ui.DistrictNetworkEdge;
+import org.simantics.g2d.canvas.ICanvasContext;
+import org.simantics.g2d.diagram.DiagramHints;
+import org.simantics.g2d.diagram.IDiagram;
+import org.simantics.g2d.element.ElementClass;
+import org.simantics.g2d.element.IElement;
+import org.simantics.g2d.element.handler.impl.StaticObjectAdapter;
+import org.simantics.g2d.layers.ILayersEditor;
+
+public class DistrictNetworkEdgeElementFactory extends SyncElementFactory {
+
+    public static final ElementClass CLASS = DistrictNetworkEdgeElement.CLASS;
+    
+    private DistrictNetworkResource DN;
+    private DiagramResource DIA;
+    
+    public DistrictNetworkEdgeElementFactory(ReadGraph graph) {
+        this.DN = DistrictNetworkResource.getInstance(graph);
+        this.DIA = DiagramResource.getInstance(graph);
+    }
+    
+    @Override
+    public void create(AsyncReadGraph graph, ICanvasContext canvas, IDiagram diagram, Resource elementType, AsyncProcedure<ElementClass> procedure) {
+        procedure.execute(graph, CLASS.newClassWith(false, new StaticObjectAdapter(elementType)));
+    }
+    
+    @Override
+    protected Resource getElementClassBaseType(AsyncReadGraph graph) {
+        return DN.Edge;
+    }
+    
+    @Override
+    public void load(ReadGraph graph, ICanvasContext canvas, IDiagram diagram, Resource edgeResource, IElement element) throws DatabaseException {
+        
+        Resource diagramRuntime = diagram.getHint(DiagramModelHints.KEY_DIAGRAM_RUNTIME_RESOURCE);
+        
+        Resource startVertex = graph.getSingleObject(edgeResource, DN.HasStartVertex);
+        Resource endVertex = graph.getSingleObject(edgeResource, DN.HasEndVertex);
+        
+        double[] startCoords = graph.getRelatedValue2(startVertex, DIA.HasLocation);
+        double[] endCoords = graph.getRelatedValue2(endVertex, DIA.HasLocation);
+        
+        Path2D path = new Path2D.Double();
+        path.moveTo(startCoords[0], startCoords[1]);
+        path.lineTo(endCoords[0], endCoords[1]);
+        
+        DistrictNetworkEdge edge = new DistrictNetworkEdge(path);
+        
+        element.setHint(DistrictNetworkEdgeElement.KEY_DN_EDGE, edge);
+        
+        IModifiableSynchronizationContext context = diagram.getHint(SynchronizationHints.CONTEXT);
+        GraphLayerManager layerManager = context.get(GraphSynchronizationHints.GRAPH_LAYER_MANAGER);
+        
+        ILayersEditor layersEditor = diagram.getHint(DiagramHints.KEY_LAYERS_EDITOR);
+        layerManager.loadLayersForElement(graph, layersEditor, element, edgeResource);
+        
+    }
+}