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