-package org.simantics.district.network.ui.participants;\r
-\r
-import java.awt.geom.AffineTransform;\r
-import java.awt.geom.Point2D;\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-\r
-import org.simantics.Simantics;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.WriteGraph;\r
-import org.simantics.db.common.CommentMetadata;\r
-import org.simantics.db.common.request.WriteRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.diagram.elements.ElementTransforms;\r
-import org.simantics.diagram.elements.ElementTransforms.TransformedObject;\r
-import org.simantics.diagram.stubs.DiagramResource;\r
-import org.simantics.district.network.ontology.DistrictNetworkResource;\r
-import org.simantics.g2d.canvas.Hints;\r
-import org.simantics.g2d.diagram.participant.pointertool.TranslateMode;\r
-import org.simantics.g2d.element.ElementUtils;\r
-import org.simantics.g2d.element.IElement;\r
-import org.simantics.g2d.element.handler.Move;\r
-\r
-public class DNTranslateMode extends TranslateMode {\r
-\r
- public DNTranslateMode(Point2D startingPoint, Point2D currentPoint, int mouseId, Collection<IElement> elements) {\r
- super(startingPoint, currentPoint, mouseId, elements);\r
- }\r
- \r
- @Override\r
- protected boolean commit() {\r
- for (IElement el : elementsToReallyTranslate) {\r
- Move move = el.getElementClass().getAtMostOneItemOfClass(Move.class);\r
- if (move != null) {\r
- Point2D oldPos = move.getPosition(el);\r
- move.moveTo(el, oldPos.getX() + dx, oldPos.getY() + dy);\r
- }\r
- }\r
- try {\r
- Simantics.getSession().syncRequest(new WriteRequest() {\r
- @Override\r
- public void perform(WriteGraph graph) throws DatabaseException {\r
- Collection<TransformedObject> transformed = new ArrayList<TransformedObject>();\r
- DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);\r
- DiagramResource DIA = DiagramResource.getInstance(graph);\r
- for (IElement e : elementsToReallyTranslate) {\r
- Object obj = ElementUtils.getObject(e);\r
- if (obj instanceof Resource) {\r
- Resource res = (Resource) obj;\r
- if (graph.isInstanceOf(res, DN.Vertex)) {\r
- AffineTransform at = ElementUtils.getLocalTransform(e, new AffineTransform());\r
- transformed.add( new TransformedObject((Resource) obj, at) );\r
- \r
- \r
- // write to db\r
- double[] coords = new double[] { at.getTranslateX(), at.getTranslateY() };\r
- graph.claimLiteral(res, DIA.HasLocation, coords);\r
- }\r
- }\r
- }\r
- \r
- if (!transformed.isEmpty()) {\r
- CommentMetadata cm = graph.getMetadata(CommentMetadata.class);\r
- graph.addMetadata(cm.add("Translated " + transformed.size() + " "\r
- + (transformed.size() == 1 ? "element" : "elements")\r
- + " by (" + dx + "," + dy + ") mm."));\r
- graph.markUndoPoint();\r
- }\r
- }\r
- });\r
- } catch (DatabaseException e) {\r
- e.printStackTrace();\r
- }\r
- \r
- for (IElement dirty : elementsToDirty)\r
- dirty.setHint(Hints.KEY_DIRTY, Hints.VALUE_SG_DIRTY);\r
-\r
- setDirty();\r
- remove();\r
- return false;\r
- }\r
-\r
-}\r
+package org.simantics.district.network.ui.participants;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.simantics.Simantics;
+import org.simantics.db.Resource;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.common.CommentMetadata;
+import org.simantics.db.common.request.WriteRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.diagram.elements.ElementTransforms.TransformedObject;
+import org.simantics.diagram.stubs.DiagramResource;
+import org.simantics.district.network.ontology.DistrictNetworkResource;
+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 {
+
+ public DNTranslateMode(Point2D startingPoint, Point2D currentPoint, int mouseId, Collection<IElement> elements) {
+ super(startingPoint, currentPoint, mouseId, elements);
+ }
+
+ @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
+ public void perform(WriteGraph graph) throws DatabaseException {
+ Collection<TransformedObject> transformed = new ArrayList<TransformedObject>();
+ 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;
+ if (graph.isInstanceOf(res, DN.Vertex)) {
+ AffineTransform at = ElementUtils.getLocalTransform(e, new AffineTransform());
+ transformed.add( new TransformedObject((Resource) obj, at) );
+
+
+ // write to db
+ double[] coords = new double[] { at.getTranslateX(), at.getTranslateY() };
+ graph.claimLiteral(res, DIA.HasLocation, coords);
+ }
+ }
+ }
+
+ if (!transformed.isEmpty()) {
+ CommentMetadata cm = graph.getMetadata(CommentMetadata.class);
+ graph.addMetadata(cm.add("Translated " + transformed.size() + " "
+ + (transformed.size() == 1 ? "element" : "elements")
+ + " by (" + dx + "," + dy + ") mm."));
+ graph.markUndoPoint();
+ }
+ }
+ });
+ } catch (DatabaseException e) {
+ e.printStackTrace();
+ }
+
+ for (IElement dirty : elementsToDirty)
+ dirty.setHint(Hints.KEY_DIRTY, Hints.VALUE_SG_DIRTY);
+
+ setDirty();
+ remove();
+ return false;
+ }
+
+}