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