]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/widget/CommandEventWidget.java
23311d93c18a00757af97dfea980ea379c513fcc
[simantics/platform.git] / bundles / org.simantics.document.swt.core / src / org / simantics / document / swt / core / widget / CommandEventWidget.java
1 package org.simantics.document.swt.core.widget;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.TreeMap;
6
7 import org.simantics.document.server.IEventCommand;
8 import org.simantics.document.server.JSONObject;
9 import org.simantics.document.server.bean.DataDefinition;
10 import org.simantics.document.server.client.WidgetData;
11 import org.simantics.document.server.client.WidgetManager;
12 import org.simantics.document.server.handler.AbstractEventHandler;
13 import org.simantics.document.swt.core.SWTDocument;
14 import org.simantics.document.swt.core.base.PostEventCommand;
15 import org.simantics.document.swt.core.base.PropertyWidgetManager;
16
17 public class CommandEventWidget  extends PropertyWidgetManager<Object> {
18
19     @Override
20     public Object createWidget(JSONObject object) {
21         return null;
22     }
23
24     @Override
25     public void updateProperties(SWTDocument document, JSONObject object, Object widget) {
26         // No properties
27     }
28
29     @Override
30     public void updateChildren(SWTDocument document, JSONObject object, Object widget,
31             TreeMap<String, WidgetData> childMap) {
32         // No children
33     }
34
35     @Override
36     public IEventCommand eventCommand(SWTDocument document, JSONObject object, Object component, String command) {
37         if("event".equals(command)) {
38             List<DataDefinition> dataDefinitions = object.getJSONField("dataDefinitions");
39             HashMap<String, String> data = new HashMap<String, String>();
40             for(DataDefinition dd : dataDefinitions) {
41                 WidgetData wd = document.getWidgetData().get(dd.getElementId());
42                 if(wd != null && wd.object != null) {
43                     @SuppressWarnings("rawtypes")
44                     WidgetManager manager = document.getManager(wd.object);
45                     if(manager != null) {
46                         @SuppressWarnings("unchecked")
47                         String result = manager.getProperty(document, wd.object, wd.widget, dd.getProperty());
48                         data.put(dd.getTarget(), result);
49                     }
50                 }
51             }
52             AbstractEventHandler handler = object.getJSONField("SCLFunction");
53             return new PostEventCommand(document, handler, data);
54         } else {
55             return null;
56         }
57     }
58     
59 }