X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fparticipants%2FDNTranslateMode.java;h=9132fa2fd2133b5fc8158a6920ff5a040af9eefc;hb=e6378bf9c77ffd2d33d81ab882e6a2243506a0a8;hp=8603add13e995f670265ec0845abfe2476210e84;hpb=00e4eca98cef6d77d5023f4b424f9e8da0487463;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DNTranslateMode.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DNTranslateMode.java index 8603add1..9132fa2f 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DNTranslateMode.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DNTranslateMode.java @@ -2,7 +2,6 @@ package org.simantics.district.network.ui.participants; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.Collection; @@ -17,13 +16,10 @@ import org.simantics.diagram.elements.ElementTransforms.TransformedObject; import org.simantics.diagram.stubs.DiagramResource; import org.simantics.district.network.ModelledCRS; import org.simantics.district.network.ontology.DistrictNetworkResource; -import org.simantics.district.network.ui.adapters.DistrictNetworkVertexElement; -import org.simantics.district.network.ui.nodes.DistrictNetworkVertexNode; import org.simantics.g2d.canvas.Hints; import org.simantics.g2d.diagram.participant.pointertool.TranslateMode; import org.simantics.g2d.element.ElementUtils; import org.simantics.g2d.element.IElement; -import org.simantics.g2d.element.handler.Move; public class DNTranslateMode extends TranslateMode { @@ -33,13 +29,6 @@ public class DNTranslateMode extends TranslateMode { @Override protected boolean commit() { - for (IElement el : elementsToReallyTranslate) { - Move move = el.getElementClass().getAtMostOneItemOfClass(Move.class); - if (move != null) { - Point2D oldPos = move.getPosition(el); - move.moveTo(el, oldPos.getX() + dx, oldPos.getY() + dy); - } - } try { Simantics.getSession().syncRequest(new WriteRequest() { @Override @@ -49,20 +38,23 @@ public class DNTranslateMode extends TranslateMode { DiagramResource DIA = DiagramResource.getInstance(graph); for (IElement e : elementsToReallyTranslate) { - DistrictNetworkVertexNode node = e.getHint(DistrictNetworkVertexElement.KEY_DN_VERTEX_NODE); - Rectangle2D bounds = node.getBounds(); Object obj = ElementUtils.getObject(e); if (obj instanceof Resource) { + Resource res = (Resource) obj; + + // Read current location from graph + double[] currentCoords = graph.getRelatedValue2(res, DIA.HasLocation); + + double x = ModelledCRS.longitudeToX(currentCoords[0]); + double y = ModelledCRS.latitudeToY(currentCoords[1]); + AffineTransform at = ElementUtils.getLocalTransform(e, new AffineTransform()); if (graph.isInstanceOf(res, DN.Vertex)) { - double x = at.getTranslateX(); - double y = at.getTranslateY(); - - double lat = ModelledCRS.yToLatitude(y / at.getScaleY()); - double lon = ModelledCRS.xToLongitude(x / at.getScaleX()); + double lat = ModelledCRS.yToLatitude(y + (dy / at.getScaleY())); + double lon = ModelledCRS.xToLongitude(x + (dx / at.getScaleX())); // write to db double[] coords = new double[] { lon, lat };