]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/adapters/DistrictNetworkEdgeElementFactory.java
Final push of district changes
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / adapters / DistrictNetworkEdgeElementFactory.java
index 63590990cd9ba421097cd65270be0b6cf8faaa4c..2899a0e7cf8db5911e54beb3ad1b9d39db55c2d3 100644 (file)
@@ -13,7 +13,7 @@ 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;
@@ -49,19 +49,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);