1 package org.simantics.diagram.profile;
\r
3 import org.simantics.Simantics;
\r
4 import org.simantics.datatypes.DatatypeResource;
\r
5 import org.simantics.datatypes.literal.Vec2d;
\r
6 import org.simantics.db.Resource;
\r
7 import org.simantics.db.WriteGraph;
\r
8 import org.simantics.db.common.request.IndexRoot;
\r
9 import org.simantics.db.common.request.WriteRequest;
\r
10 import org.simantics.db.common.utils.CommonDBUtils;
\r
11 import org.simantics.db.exception.DatabaseException;
\r
12 import org.simantics.diagram.stubs.DiagramResource;
\r
13 import org.simantics.scl.commands.Commands;
\r
14 import org.simantics.scl.runtime.function.Function1;
\r
15 import org.simantics.scl.runtime.function.FunctionImpl1;
\r
17 public class ElementTranslation {
\r
19 public static Function1<Vec2d, Boolean> function(final Resource element) {
\r
20 return new FunctionImpl1<Vec2d, Boolean>() {
\r
23 public Boolean apply(final Vec2d delta) {
\r
24 Simantics.getSession().asyncRequest(new WriteRequest() {
\r
26 public void perform(WriteGraph graph)
\r
27 throws DatabaseException {
\r
28 DiagramResource DIA = DiagramResource.getInstance(graph);
\r
29 Vec2d offset = graph.getRelatedValue(element, DIA.Element_profileMonitorOffset, Vec2d.BINDING);
\r
30 Commands.get(graph, "Simantics/Profile/setProfileMonitorPosition")
\r
31 .execute(graph, graph.syncRequest(new IndexRoot(element)), element,
\r
32 offset.x+delta.x, offset.y+delta.y);
\r
41 public static void setProfileMonitorPosition(WriteGraph graph, Resource element, double offsetX, double offsetY) throws DatabaseException {
\r
42 CommonDBUtils.selectClusterSet(graph, element);
\r
43 DiagramResource DIA = DiagramResource.getInstance(graph);
\r
44 DatatypeResource DATA = DatatypeResource.getInstance(graph);
\r
45 Vec2d newOffset = new Vec2d(offsetX, offsetY);
\r
46 graph.claimLiteral(element, DIA.Element_profileMonitorOffset, DATA.Vec2d, newOffset, Vec2d.BINDING);
\r
49 public static void resetProfileMonitorPosition(WriteGraph graph, Resource element) throws DatabaseException {
\r
50 DiagramResource DIA = DiagramResource.getInstance(graph);
\r
51 graph.deny(element, DIA.Element_profileMonitorOffset);
\r