]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.views.swt/src/org/simantics/views/swt/loader/TrackedTextLoader.java.keep
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.views.swt / src / org / simantics / views / swt / loader / TrackedTextLoader.java.keep
1 package org.simantics.views.swt.loader;\r
2 \r
3 import org.simantics.databoard.Bindings;\r
4 import org.simantics.datatypes.literal.Font;\r
5 import org.simantics.datatypes.literal.RGB;\r
6 import org.simantics.db.Resource;\r
7 import org.simantics.db.VirtualGraph;\r
8 import org.simantics.db.WriteGraph;\r
9 import org.simantics.db.common.request.WriteRequest;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.db.layer0.util.Simantics;\r
12 import org.simantics.db.layer0.variable.Variable;\r
13 import org.simantics.scenegraph.ParentNode;\r
14 import org.simantics.scenegraph.loader.ScenegraphLoader;\r
15 import org.simantics.utils.ui.widgets.TrackedModifyEvent;\r
16 import org.simantics.utils.ui.widgets.TrackedModifyListener;\r
17 import org.simantics.views.ViewUtils;\r
18 import org.simantics.views.ontology.ViewsResources;\r
19 import org.simantics.views.swt.client.base.ISWTViewNode;\r
20 import org.simantics.views.swt.client.impl.SWTTrackedText;\r
21 \r
22 public class TrackedTextLoader implements ScenegraphLoader {\r
23 \r
24         final private Resource configuration;\r
25         \r
26         public TrackedTextLoader(Resource configuration) {\r
27                 this.configuration = configuration;\r
28         }\r
29         \r
30         @Override\r
31         public ISWTViewNode create(ParentNode<ISWTViewNode> parent, final Variable context) throws DatabaseException {\r
32                 \r
33                 SWTTrackedText node = parent.addNode(SWTTrackedText.class);\r
34                 \r
35                 node.setLayoutData(LoaderUtils.getGridData(configuration));\r
36                 node.setStyle(LoaderUtils.getStyle(configuration));\r
37                 \r
38                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TextContainer_HasText, node.getTextFunction());\r
39                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.Control_HasForeground, RGB.Integer.BINDING, node.getForegroundFunction());\r
40                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TrackedText_HasInvalidBackground, RGB.Integer.BINDING, node.getInvalidBackgroundFunction());\r
41                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TrackedText_HasInactiveBackground, RGB.Integer.BINDING, node.getInactiveBackgroundFunction());\r
42                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TrackedText_HasHoverBackground, RGB.Integer.BINDING, node.getHoverBackgroundFunction());\r
43                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TrackedText_HasEditingBackground, RGB.Integer.BINDING, node.getEditingBackgroundFunction());\r
44                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.Control_HasFont, Font.BINDING, node.getFontFunction());\r
45                 \r
46                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TextReceiver_Modifier, node.getModifierFunction());\r
47                 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TextReceiver_Validator, node.getValidatorFunction());\r
48                 \r
49                 node.addModifyListener(new TrackedModifyListener() {\r
50                         \r
51                         @Override\r
52                         public void modifyText(TrackedModifyEvent e) {\r
53                                 \r
54                                 final String text = e.getText();\r
55                     \r
56                     Simantics.getSession().async(new WriteRequest(Simantics.getSession().getService(VirtualGraph.class)) {\r
57 \r
58                                         @Override\r
59                                         public void perform(WriteGraph graph) throws DatabaseException {\r
60                                                 ViewsResources VIEW = ViewsResources.getInstance(graph);\r
61                                                 System.err.println("setParameter " + context.getURI(graph) + " -> " + text);\r
62                                     ViewUtils.setParameter(graph, context, VIEW.TrackedText_Content, text, Bindings.STRING);\r
63                                         }\r
64                         \r
65                     });\r
66                                 \r
67                         }\r
68                         \r
69                 });\r
70                 \r
71                 return node;\r
72                 \r
73         }\r
74         \r
75 }\r