--- /dev/null
+package org.simantics.document.swt.core.widget;\r
+\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.TreeMap;\r
+\r
+import org.simantics.document.server.IEventCommand;\r
+import org.simantics.document.server.JSONObject;\r
+import org.simantics.document.server.bean.DataDefinition;\r
+import org.simantics.document.server.client.WidgetData;\r
+import org.simantics.document.server.client.WidgetManager;\r
+import org.simantics.document.server.handler.AbstractEventHandler;\r
+import org.simantics.document.swt.core.SWTDocument;\r
+import org.simantics.document.swt.core.base.PostEventCommand;\r
+import org.simantics.document.swt.core.base.PropertyWidgetManager;\r
+\r
+public class CommandEventWidget extends PropertyWidgetManager<Object> {\r
+\r
+ @Override\r
+ public Object createWidget(JSONObject object) {\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public void updateProperties(SWTDocument document, JSONObject object, Object widget) {\r
+ // No properties\r
+ }\r
+\r
+ @Override\r
+ public void updateChildren(SWTDocument document, JSONObject object, Object widget,\r
+ TreeMap<String, WidgetData> childMap) {\r
+ // No children\r
+ }\r
+\r
+ @Override\r
+ public IEventCommand eventCommand(SWTDocument document, JSONObject object, Object component, String command) {\r
+ if("event".equals(command)) {\r
+ List<DataDefinition> dataDefinitions = object.getJSONField("dataDefinitions");\r
+ HashMap<String, String> data = new HashMap<String, String>();\r
+ for(DataDefinition dd : dataDefinitions) {\r
+ WidgetData wd = document.getWidgetData().get(dd.getElementId());\r
+ if(wd != null && wd.object != null) {\r
+ @SuppressWarnings("rawtypes")\r
+ WidgetManager manager = document.getManager(wd.object);\r
+ if(manager != null) {\r
+ @SuppressWarnings("unchecked")\r
+ String result = manager.getProperty(document, wd.object, wd.widget, dd.getProperty());\r
+ data.put(dd.getTarget(), result);\r
+ }\r
+ }\r
+ }\r
+ AbstractEventHandler handler = object.getJSONField("SCLFunction");\r
+ return new PostEventCommand(document, handler, data);\r
+ } else {\r
+ return null;\r
+ }\r
+ }\r
+ \r
+}\r