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;
}
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 scale = 1;
+ 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);
}
});