]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/ElementTranslation.java
Sync git svn branch with SVN repository r33189.
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / ElementTranslation.java
1 package org.simantics.diagram.profile;\r
2 \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
16 \r
17 public class ElementTranslation {\r
18 \r
19     public static Function1<Vec2d, Boolean> function(final Resource element) {\r
20         return new FunctionImpl1<Vec2d, Boolean>() {\r
21 \r
22             @Override\r
23             public Boolean apply(final Vec2d delta) {\r
24                 Simantics.getSession().asyncRequest(new WriteRequest() {\r
25                     @Override\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
33                     }\r
34                 });\r
35                 return null;\r
36             }\r
37 \r
38         };\r
39     }\r
40 \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
47     }\r
48 \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
52     }\r
53 }