- Point2D start = null;
- Point2D end = null;
- Iterator<Point2D> nodeIter = nodes.iterator();
- while (nodeIter.hasNext()) {
- if (end == null) {
- start = nodeIter.next();
- if (!nodeIter.hasNext()) {
- break;
+ // ok, new routenode starts from here
+ Point2D localPos = NodeUtil.worldToLocal(this, e.controlPosition, new Point2D.Double());
+ Point2D.Double pos = new Point2D.Double(localPos.getX(), localPos.getY());
+ if (currentRouteNode != null) {
+ //currentRouteNode.routeNodes.add(pos);
+ currentRouteNode = new DrawingNode();
+ currentRouteNode.routeNodes.add(pos);
+ nodes.add(currentRouteNode);
+ } else {
+ // ok, this must be creation of dh_point
+ double scale = getTransform().getScaleY();
+ double x = ModelledCRS.xToLongitude(pos.getX() / scale);
+ double y = ModelledCRS.yToLatitude(-pos.getY() / scale);
+ Simantics.getSession().asyncRequest(new Write() {
+
+ @Override
+ public void perform(WriteGraph graph) throws DatabaseException {
+ graph.markUndoPoint();
+ Resource defaultMapping = graph.getSingleObject(diagramResource, DistrictNetworkResource.getInstance(graph).VertexDefaultMapping);
+ DistrictNetworkUtil.createVertex(graph, diagramResource, new double[] { x, y }, 0, defaultMapping); // TODO: elevation can be fetched from e.g. elevation API