]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkVertexElementFactory.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 / DistrictNetworkVertexElementFactory.java
index c19716469d243e81ce7f35ead2b7799310d49c46..976abd48596ccf177065addfa8ffbc1914e1904e 100644 (file)
@@ -1,52 +1,64 @@
-package org.simantics.district.network.ui.adapters;\r
-\r
-import java.awt.geom.AffineTransform;\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.district.network.ontology.DistrictNetworkResource;\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.ElementUtils;\r
-import org.simantics.g2d.element.IElement;\r
-import org.simantics.g2d.element.handler.impl.StaticObjectAdapter;\r
-\r
-public class DistrictNetworkVertexElementFactory extends SyncElementFactory {\r
-\r
-    public static final ElementClass CLASS = DistrictNetworkVertexElement.CLASS;\r
-    private DistrictNetworkResource DN;\r
-    private DiagramResource DIA;\r
-\r
-    public DistrictNetworkVertexElementFactory(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.Vertex;\r
-    }\r
-\r
-    @Override\r
-    public void load(ReadGraph graph, ICanvasContext canvas, IDiagram diagram, Resource vertexResource, IElement element) throws DatabaseException {\r
-        \r
-        double[] coords = graph.getRelatedValue(vertexResource, DIA.HasLocation);\r
-        DistrictNetworkVertex vertex = new DistrictNetworkVertex(coords);\r
-        element.setHint(DistrictNetworkVertexElement.KEY_DN_VERTEX, vertex);\r
-        \r
-        // set element transform based on layer SRS and coords\r
-        AffineTransform at = new AffineTransform(1, 0, 0, 1, coords[0], coords[1]);\r
-        ElementUtils.setTransform(element, at);\r
-    }\r
-}\r
+package org.simantics.district.network.ui.adapters;
+
+import java.awt.geom.AffineTransform;
+
+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.district.network.ontology.DistrictNetworkResource;
+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.ElementUtils;
+import org.simantics.g2d.element.IElement;
+import org.simantics.g2d.element.handler.impl.StaticObjectAdapter;
+import org.simantics.g2d.layers.ILayersEditor;
+
+public class DistrictNetworkVertexElementFactory extends SyncElementFactory {
+
+    public static final ElementClass CLASS = DistrictNetworkVertexElement.CLASS;
+    private DistrictNetworkResource DN;
+    private DiagramResource DIA;
+
+    public DistrictNetworkVertexElementFactory(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.Vertex;
+    }
+
+    @Override
+    public void load(ReadGraph graph, ICanvasContext canvas, IDiagram diagram, Resource vertexResource, IElement element) throws DatabaseException {
+        
+        double[] coords = graph.getRelatedValue(vertexResource, DIA.HasLocation);
+        DistrictNetworkVertex vertex = new DistrictNetworkVertex(coords);
+        element.setHint(DistrictNetworkVertexElement.KEY_DN_VERTEX, vertex);
+        
+        // set element transform based on layer SRS and coords
+        AffineTransform at = new AffineTransform(1, 0, 0, 1, coords[0], coords[1]);
+        ElementUtils.setTransform(element, at);
+        
+        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, vertexResource);
+    }
+}