]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/widget/CommandEventWidget.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.swt.core / src / org / simantics / document / swt / core / widget / CommandEventWidget.java
diff --git a/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/widget/CommandEventWidget.java b/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/widget/CommandEventWidget.java
new file mode 100644 (file)
index 0000000..fcdc302
--- /dev/null
@@ -0,0 +1,59 @@
+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