]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/ElementTranslation.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / ElementTranslation.java
1 package org.simantics.diagram.profile;
2
3 import org.simantics.Simantics;
4 import org.simantics.datatypes.DatatypeResource;
5 import org.simantics.datatypes.literal.Vec2d;
6 import org.simantics.db.Resource;
7 import org.simantics.db.WriteGraph;
8 import org.simantics.db.common.request.IndexRoot;
9 import org.simantics.db.common.request.WriteRequest;
10 import org.simantics.db.common.utils.CommonDBUtils;
11 import org.simantics.db.exception.DatabaseException;
12 import org.simantics.diagram.stubs.DiagramResource;
13 import org.simantics.scl.commands.Commands;
14 import org.simantics.scl.runtime.function.Function1;
15 import org.simantics.scl.runtime.function.FunctionImpl1;
16
17 public class ElementTranslation {
18
19     public static Function1<Vec2d, Boolean> function(final Resource element) {
20         return new FunctionImpl1<Vec2d, Boolean>() {
21
22             @Override
23             public Boolean apply(final Vec2d delta) {
24                 Simantics.getSession().asyncRequest(new WriteRequest() {
25                     @Override
26                     public void perform(WriteGraph graph)
27                             throws DatabaseException {
28                         DiagramResource DIA = DiagramResource.getInstance(graph);
29                         Vec2d offset = graph.getRelatedValue(element, DIA.Element_profileMonitorOffset, Vec2d.BINDING);
30                         Commands.get(graph, "Simantics/Profile/setProfileMonitorPosition")
31                         .execute(graph, graph.syncRequest(new IndexRoot(element)), element, 
32                                 offset.x+delta.x, offset.y+delta.y);
33                     }
34                 });
35                 return null;
36             }
37
38         };
39     }
40
41     public static void setProfileMonitorPosition(WriteGraph graph, Resource element, double offsetX, double offsetY) throws DatabaseException {
42         CommonDBUtils.selectClusterSet(graph, element);
43         DiagramResource DIA = DiagramResource.getInstance(graph);
44         DatatypeResource DATA = DatatypeResource.getInstance(graph);
45         Vec2d newOffset = new Vec2d(offsetX, offsetY);
46         graph.claimLiteral(element, DIA.Element_profileMonitorOffset, DATA.Vec2d, newOffset, Vec2d.BINDING);
47     }
48
49     public static void resetProfileMonitorPosition(WriteGraph graph, Resource element) throws DatabaseException {
50         DiagramResource DIA = DiagramResource.getInstance(graph);
51         graph.deny(element, DIA.Element_profileMonitorOffset);
52     }
53 }