1 package org.simantics.views.swt.loader;
\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
22 public class TrackedTextLoader implements ScenegraphLoader {
\r
24 final private Resource configuration;
\r
26 public TrackedTextLoader(Resource configuration) {
\r
27 this.configuration = configuration;
\r
31 public ISWTViewNode create(ParentNode<ISWTViewNode> parent, final Variable context) throws DatabaseException {
\r
33 SWTTrackedText node = parent.addNode(SWTTrackedText.class);
\r
35 node.setLayoutData(LoaderUtils.getGridData(configuration));
\r
36 node.setStyle(LoaderUtils.getStyle(configuration));
\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
46 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TextReceiver_Modifier, node.getModifierFunction());
\r
47 LoaderUtils.listen(configuration, context, ViewsResources.URIs.TextReceiver_Validator, node.getValidatorFunction());
\r
49 node.addModifyListener(new TrackedModifyListener() {
\r
52 public void modifyText(TrackedModifyEvent e) {
\r
54 final String text = e.getText();
\r
56 Simantics.getSession().async(new WriteRequest(Simantics.getSession().getService(VirtualGraph.class)) {
\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