]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/base/HasWidgetsWidgetManager.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.swt.core / src / org / simantics / document / swt / core / base / HasWidgetsWidgetManager.java
1 package org.simantics.document.swt.core.base;\r
2 \r
3 \r
4 import java.util.TreeMap;\r
5 \r
6 import org.eclipse.swt.widgets.Composite;\r
7 import org.eclipse.swt.widgets.Control;\r
8 import org.simantics.document.server.JSONObject;\r
9 import org.simantics.document.server.client.WidgetData;\r
10 import org.simantics.document.swt.core.SWTDocument;\r
11 \r
12 public abstract class HasWidgetsWidgetManager<W extends Composite> extends PropertyWidgetManager<WidgetContainer> {\r
13         \r
14         class Container extends WidgetContainer {\r
15                 \r
16                 @SuppressWarnings("unchecked")\r
17                 @Override\r
18                 protected void doUpdateProperties(SWTDocument document, Control control, JSONObject object) {\r
19                         HasWidgetsWidgetManager.this.doUpdateProperties(document, (W)control, object);\r
20                 }\r
21                 \r
22                 @Override\r
23                 protected Control doCreateControl(SWTDocument document, Composite parent, JSONObject object) {\r
24                         if(parent.isDisposed()) {\r
25                                 new Exception().printStackTrace();\r
26                                 return null;\r
27                         }\r
28                         return HasWidgetsWidgetManager.this.doCreateControl(document, parent, object);\r
29                 }\r
30                 \r
31         }       \r
32         \r
33         @Override\r
34         public WidgetContainer createWidget(JSONObject object) {\r
35                 return new Container();\r
36         }       \r
37         \r
38         @SuppressWarnings("unchecked")\r
39         @Override\r
40         public void updateChildren(SWTDocument document, JSONObject object, WidgetContainer widget, TreeMap<String, WidgetData> childMap) {\r
41                 \r
42                 for(WidgetData c : childMap.values()) {\r
43                         WidgetContainer con = (WidgetContainer)c.widget;\r
44                         con.getOrCreateControl(document, c.object);\r
45                 }\r
46                         \r
47         }\r
48         \r
49         @Override\r
50         public void updateProperties(SWTDocument document, JSONObject object, WidgetContainer widget) {\r
51                 widget.updateProperties(document, object);\r
52         }\r
53         \r
54         abstract protected void doUpdateProperties(SWTDocument document, W control, JSONObject object);\r
55         abstract protected W doCreateControl(SWTDocument document, Composite parent, JSONObject object);\r
56         \r
57 }\r