]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.server/src/org/simantics/document/server/client/WidgetData.java
Playground for Antti.
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / client / WidgetData.java
1 package org.simantics.document.server.client;
2
3 import java.util.HashSet;
4 import java.util.TreeMap;
5
6 import org.simantics.document.server.IEventCommand;
7 import org.simantics.document.server.JSONObject;
8 import org.simantics.document.server.io.CommandContext;
9 import org.simantics.document.server.io.ICommand;
10
11 public class WidgetData {
12         
13         public Object widget;
14         public JSONObject object;
15         public Document document;
16         public TreeMap<String, WidgetData> childmap = new TreeMap<String, WidgetData>(new AlphanumericComparator());
17     public HashSet<Object> listenerRegistrations = new HashSet<Object>();
18
19         public WidgetData(Document document, Object widget, JSONObject object) {
20                 this.widget = widget;
21                 this.object = object;
22                 this.document = document;
23         }
24         
25         @SuppressWarnings({ "rawtypes" })
26         public Object createElement() {
27                 if(object == null)
28                         return null;
29                 WidgetManager manager = document.getManager(object);
30                 return manager == null ? null : manager.createWidget(object);
31         }
32         
33         @SuppressWarnings({ "unchecked", "rawtypes" })
34         public void updateChildren() {
35                 if(object != null && widget != null && childmap != null) {
36                         WidgetManager manager = document.getManager(object);
37                         if(manager != null)
38                                 manager.updateChildren(document, object, widget, childmap);
39                 }
40         }
41         
42         @SuppressWarnings({ "unchecked", "rawtypes" })
43         public void updateProperties() {
44                 if(object == null)
45                         return;
46                 WidgetManager manager = document.getManager(object);
47                 if(manager != null)
48                         manager.updateProperties(document, object, widget);             
49         }
50         
51     @SuppressWarnings({ "rawtypes", "unchecked" })
52     public void updateCommands() {
53         if(object == null)
54             return;
55         
56         // Then create the updated registrations
57         CommandManager manager = document.getCommandManager(object); 
58         
59         // First remove all handler registrations
60         if(manager != null) {
61                 for(Object listener : listenerRegistrations) {
62                         manager.removeListener(widget, listener);
63                 }
64         }
65         listenerRegistrations.clear();
66         if(manager != null)
67             listenerRegistrations.addAll(manager.updateCommandListeners(document, object, widget));
68         
69     }
70     
71     @SuppressWarnings({ "unchecked", "rawtypes" })
72     public IEventCommand eventCommand(ICommand command, CommandContext c) {
73         if(object == null)
74             return null;
75         WidgetManager manager = document.getManager(object);
76         if(manager != null)
77             return manager.eventCommand(document, object, widget, command, c); 
78         else
79             return null;
80     }
81         
82 }