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 {
@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
DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
DiagramResource DIA = DiagramResource.getInstance(graph);
for (IElement e : elementsToReallyTranslate) {
+
+
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();
- // TODO: Fix scale!
- double scale = 100000;
-// double scale = 1;
- double lat = ModelledCRS.yToLatitude(y / scale);
- double lon = ModelledCRS.xToLongitude(x / scale);
+ 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 };