]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkVertexElementFactory.java
Optimization of district scene graph node rendering
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / adapters / DistrictNetworkVertexElementFactory.java
index 6fa19c422a2d9439f36a265650f3b3cc051e7409..1fc38bf6e03f8cf56566a9445e929fb621d510ea 100644 (file)
@@ -1,7 +1,5 @@
 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;
@@ -13,7 +11,6 @@ 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.ModelledCRS;
 import org.simantics.district.network.ontology.DistrictNetworkResource;
 import org.simantics.g2d.canvas.ICanvasContext;
 import org.simantics.g2d.diagram.DiagramHints;
@@ -23,6 +20,7 @@ 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;
+import org.simantics.maps.MapScalingTransform;
 
 public class DistrictNetworkVertexElementFactory extends SyncElementFactory {
 
@@ -47,7 +45,9 @@ public class DistrictNetworkVertexElementFactory extends SyncElementFactory {
 
     @Override
     public void load(ReadGraph graph, ICanvasContext canvas, IDiagram diagram, Resource vertexResource, IElement element) throws DatabaseException {
-        
+        if (!graph.hasStatement(vertexResource))
+            return; // already deleted
+
         double[] coords = graph.getRelatedValue(vertexResource, DIA.HasLocation);
         DistrictNetworkVertex vertex = new DistrictNetworkVertex(coords);
         
@@ -55,15 +55,8 @@ public class DistrictNetworkVertexElementFactory extends SyncElementFactory {
         element.setHint(DistrictNetworkAdditionalColor.KEY_DN_MAPPING_RESOURCE, mapping);
         element.setHint(DistrictNetworkVertexElement.KEY_DN_VERTEX, vertex);
         
-        // TODO: set element transform based on layer SRS and coords
-        
-        double x = ModelledCRS.longitudeToX(coords[0]);
-        double y = ModelledCRS.latitudeToY(coords[1]);
-        
-        double scale = 100000;
-        
-        AffineTransform at = new AffineTransform(1, 0, 0, 1, x * scale, y * scale);
-        ElementUtils.setTransform(element, at);
+        // set scaling transform for vertices
+        ElementUtils.setTransform(element, MapScalingTransform.INSTANCE);
         
         IModifiableSynchronizationContext context = diagram.getHint(SynchronizationHints.CONTEXT);
         GraphLayerManager layerManager = context.get(GraphSynchronizationHints.GRAPH_LAYER_MANAGER);