]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkEdgeElementFactory.java
Enhancements to district functionalities and code
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / adapters / DistrictNetworkEdgeElementFactory.java
index 63590990cd9ba421097cd65270be0b6cf8faaa4c..c3058a0edf5518341c6389ca61ad188019a0b85c 100644 (file)
@@ -1,6 +1,7 @@
 package org.simantics.district.network.ui.adapters;
 
 import java.awt.geom.Path2D;
+import java.awt.geom.Point2D;
 
 import org.simantics.db.AsyncReadGraph;
 import org.simantics.db.ReadGraph;
@@ -13,16 +14,18 @@ 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.ModelledCRS;
 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.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 DistrictNetworkEdgeElementFactory extends SyncElementFactory {
 
@@ -49,19 +52,30 @@ public class DistrictNetworkEdgeElementFactory extends SyncElementFactory {
     @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);
+
+        // TODO: fix scale..
+        double scale = 100000;
         
         double[] startCoords = graph.getRelatedValue2(startVertex, DIA.HasLocation);
+        
+        double startLon = ModelledCRS.longitudeToX(startCoords[0]) * scale;
+        double startLat = ModelledCRS.latitudeToY(startCoords[1]) * scale;
+        
         double[] endCoords = graph.getRelatedValue2(endVertex, DIA.HasLocation);
+
+        double endLon = ModelledCRS.longitudeToX(endCoords[0]) * scale;
+        double endLat = ModelledCRS.latitudeToY(endCoords[1]) * scale;
         
         Path2D path = new Path2D.Double();
-        path.moveTo(startCoords[0], startCoords[1]);
-        path.lineTo(endCoords[0], endCoords[1]);
+        path.moveTo(startLon, startLat);
+        path.lineTo(endLon, endLat);
         
         DistrictNetworkEdge edge = new DistrictNetworkEdge(path);
+
+        Resource mapping = graph.getSingleObject(edgeResource, DistrictNetworkResource.getInstance(graph).HasMapping);
+        element.setHint(DistrictNetworkAdditionalColor.KEY_DN_MAPPING_RESOURCE, mapping);
         
         element.setHint(DistrictNetworkEdgeElement.KEY_DN_EDGE, edge);