--- /dev/null
+package org.simantics.document.server.client;\r
+\r
+import java.util.HashSet;\r
+import java.util.TreeMap;\r
+\r
+import org.simantics.document.server.IEventCommand;\r
+import org.simantics.document.server.JSONObject;\r
+\r
+public class WidgetData {\r
+ \r
+ public Object widget;\r
+ public JSONObject object;\r
+ public Document document;\r
+ public TreeMap<String, WidgetData> childmap = new TreeMap<String, WidgetData>(new AlphanumericComparator());\r
+ public HashSet<Object> listenerRegistrations = new HashSet<Object>();\r
+\r
+ public WidgetData(Document document, Object widget, JSONObject object) {\r
+ this.widget = widget;\r
+ this.object = object;\r
+ this.document = document;\r
+ }\r
+ \r
+ @SuppressWarnings({ "rawtypes" })\r
+ public Object createElement() {\r
+ if(object == null)\r
+ return null;\r
+ WidgetManager manager = document.getManager(object);\r
+ return manager == null ? null : manager.createWidget(object);\r
+ }\r
+ \r
+ @SuppressWarnings({ "unchecked", "rawtypes" })\r
+ public void updateChildren() {\r
+ if(object != null && widget != null && childmap != null) {\r
+ WidgetManager manager = document.getManager(object);\r
+ if(manager != null)\r
+ manager.updateChildren(document, object, widget, childmap);\r
+ }\r
+ }\r
+ \r
+ @SuppressWarnings({ "unchecked", "rawtypes" })\r
+ public void updateProperties() {\r
+ if(object == null)\r
+ return;\r
+ WidgetManager manager = document.getManager(object);\r
+ if(manager != null)\r
+ manager.updateProperties(document, object, widget); \r
+ }\r
+ \r
+ @SuppressWarnings({ "rawtypes", "unchecked" })\r
+ public void updateCommands() {\r
+ if(object == null)\r
+ return;\r
+ \r
+ // Then create the updated registrations\r
+ CommandManager manager = document.getCommandManager(object); \r
+ \r
+ // First remove all handler registrations\r
+ if(manager != null) {\r
+ for(Object listener : listenerRegistrations) {\r
+ manager.removeListener(widget, listener);\r
+ }\r
+ }\r
+ listenerRegistrations.clear();\r
+ if(manager != null)\r
+ listenerRegistrations.addAll(manager.updateCommandListeners(document, object, widget));\r
+ \r
+ }\r
+ \r
+ @SuppressWarnings({ "unchecked", "rawtypes" })\r
+ public IEventCommand eventCommand(String command) {\r
+ if(object == null)\r
+ return null;\r
+ WidgetManager manager = document.getManager(object);\r
+ if(manager != null)\r
+ return manager.eventCommand(document, object, widget, command); \r
+ else\r
+ return null;\r
+ }\r
+ \r
+}\r