]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/ElementTranslation.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / ElementTranslation.java
diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/ElementTranslation.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/ElementTranslation.java
new file mode 100644 (file)
index 0000000..d109f86
--- /dev/null
@@ -0,0 +1,53 @@
+package org.simantics.diagram.profile;\r
+\r
+import org.simantics.Simantics;\r
+import org.simantics.datatypes.DatatypeResource;\r
+import org.simantics.datatypes.literal.Vec2d;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.IndexRoot;\r
+import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.common.utils.CommonDBUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.diagram.stubs.DiagramResource;\r
+import org.simantics.scl.commands.Commands;\r
+import org.simantics.scl.runtime.function.Function1;\r
+import org.simantics.scl.runtime.function.FunctionImpl1;\r
+\r
+public class ElementTranslation {\r
+\r
+    public static Function1<Vec2d, Boolean> function(final Resource element) {\r
+        return new FunctionImpl1<Vec2d, Boolean>() {\r
+\r
+            @Override\r
+            public Boolean apply(final Vec2d delta) {\r
+                Simantics.getSession().asyncRequest(new WriteRequest() {\r
+                    @Override\r
+                    public void perform(WriteGraph graph)\r
+                            throws DatabaseException {\r
+                        DiagramResource DIA = DiagramResource.getInstance(graph);\r
+                        Vec2d offset = graph.getRelatedValue(element, DIA.Element_profileMonitorOffset, Vec2d.BINDING);\r
+                        Commands.get(graph, "Simantics/Profile/setProfileMonitorPosition")\r
+                        .execute(graph, graph.syncRequest(new IndexRoot(element)), element, \r
+                                offset.x+delta.x, offset.y+delta.y);\r
+                    }\r
+                });\r
+                return null;\r
+            }\r
+\r
+        };\r
+    }\r
+\r
+    public static void setProfileMonitorPosition(WriteGraph graph, Resource element, double offsetX, double offsetY) throws DatabaseException {\r
+       CommonDBUtils.selectClusterSet(graph, element);\r
+        DiagramResource DIA = DiagramResource.getInstance(graph);\r
+        DatatypeResource DATA = DatatypeResource.getInstance(graph);\r
+        Vec2d newOffset = new Vec2d(offsetX, offsetY);\r
+        graph.claimLiteral(element, DIA.Element_profileMonitorOffset, DATA.Vec2d, newOffset, Vec2d.BINDING);\r
+    }\r
+\r
+    public static void resetProfileMonitorPosition(WriteGraph graph, Resource element) throws DatabaseException {\r
+        DiagramResource DIA = DiagramResource.getInstance(graph);\r
+        graph.deny(element, DIA.Element_profileMonitorOffset);\r
+    }\r
+}
\ No newline at end of file