]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/NetworkDrawingNode.java
Final push of district changes
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / NetworkDrawingNode.java
index 147442343c13b6b7c3dfa42ab04694757aa4f834..13bd2cbe9426a536e9ce3b8030a0a4b0ca1b5158 100644 (file)
@@ -17,6 +17,7 @@ import org.simantics.db.WriteGraph;
 import org.simantics.db.common.request.WriteRequest;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.diagram.ui.DiagramModelHints;
+import org.simantics.district.network.ModelledCRS;
 import org.simantics.district.network.ui.DNEdgeBuilder;
 import org.simantics.district.network.ui.NetworkDrawingParticipant;
 import org.simantics.g2d.canvas.Hints;
@@ -150,20 +151,34 @@ public class NetworkDrawingNode extends G2DNode {
         }
         return super.mouseDoubleClicked(e);
     }
-    
+
     private void createEdge(Point2D start, Point2D end) {
         
         double padding = GeometryUtils.getScale(getTransform());
         
-        double[] startCoords = new double[] { start.getX(), start.getY() };
-        double[] endCoords = new double[] { end.getX(), end.getY() };
+        /*
+         *  To convert y-coordinates to map coordinates in ruler, use:
+         *    double val = (y-offsetY)/scaleY;
+         *    val = Math.toDegrees(Math.atan(Math.sinh(Math.toRadians(val))));
+         *    String str = formatValue(val);
+         */
+        // TODO: fix scale
+        double scale = 100000;
+        double startLat = ModelledCRS.yToLatitude(start.getY() / scale);
+        double startLon = ModelledCRS.xToLongitude(start.getX() / scale);
+        
+        double endLat = ModelledCRS.yToLatitude(end.getY() / scale);
+        double endLon = ModelledCRS.xToLongitude(end.getX() / scale);
+        
+        double[] startCoords = new double[] { startLon, startLat };
+        double[] endCoords = new double[] { endLon, endLat };
         
         DNEdgeBuilder builder = new DNEdgeBuilder(diagramResource, diagram);
         Simantics.getSession().asyncRequest(new WriteRequest() {
             
             @Override
             public void perform(WriteGraph graph) throws DatabaseException {
-                builder.create(graph, startCoords, endCoords, padding);
+                builder.create(graph, startCoords, endCoords, padding / scale);
             }
         });