]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/widget/ScrolledCompositeWidget.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.swt.core / src / org / simantics / document / swt / core / widget / ScrolledCompositeWidget.java
1 package org.simantics.document.swt.core.widget;\r
2 \r
3 import java.util.TreeMap;\r
4 \r
5 import org.eclipse.jface.layout.GridDataFactory;\r
6 import org.eclipse.jface.layout.GridLayoutFactory;\r
7 import org.eclipse.swt.SWT;\r
8 import org.eclipse.swt.custom.ScrolledComposite;\r
9 import org.eclipse.swt.events.ControlEvent;\r
10 import org.eclipse.swt.events.ControlListener;\r
11 import org.eclipse.swt.widgets.Composite;\r
12 import org.eclipse.swt.widgets.Control;\r
13 import org.eclipse.swt.widgets.Display;\r
14 import org.simantics.document.server.JSONObject;\r
15 import org.simantics.document.server.client.WidgetData;\r
16 import org.simantics.document.swt.core.SWTDocument;\r
17 import org.simantics.document.swt.core.SWTViews;\r
18 import org.simantics.document.swt.core.base.HasWidgetsWidgetManager;\r
19 import org.simantics.document.swt.core.base.ScrolledCompositeContent;\r
20 import org.simantics.document.swt.core.base.WidgetContainer;\r
21 \r
22 public class ScrolledCompositeWidget extends HasWidgetsWidgetManager<ScrolledCompositeContent> {\r
23         \r
24         @Override\r
25         protected void doUpdateProperties(SWTDocument document, ScrolledCompositeContent control, JSONObject object) {\r
26         }\r
27 \r
28         @Override\r
29         protected ScrolledCompositeContent doCreateControl(SWTDocument document, Composite parent, JSONObject object) {\r
30                 \r
31                 ScrolledComposite explorersScroll = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.BORDER);\r
32                 explorersScroll.setBackground(Display.getCurrent().getSystemColor(\r
33                                 SWT.COLOR_WHITE));\r
34                 explorersScroll.setLayout(GridLayoutFactory.fillDefaults()\r
35                                 .margins(0, 0).spacing(0, 0).create());\r
36                 GridDataFactory.fillDefaults().grab(true, true).span(1, 1)\r
37                                 .applyTo(explorersScroll);\r
38 \r
39                 ScrolledCompositeContent explorers = new ScrolledCompositeContent(explorersScroll, SWT.NONE);\r
40 \r
41                 explorersScroll.addControlListener(new ControlListener() {\r
42 \r
43                         @Override\r
44                         public void controlResized(ControlEvent e) {\r
45                                 SWTViews.notifyScrolledComposite(explorers);\r
46                         }\r
47 \r
48                         @Override\r
49                         public void controlMoved(ControlEvent e) {\r
50                                 SWTViews.notifyScrolledComposite(explorers);\r
51                         }\r
52                 });\r
53 \r
54                 explorers.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
55                 \r
56                 // Make sure that exploders are initially visible\r
57                 explorers.setSize(10, 300);\r
58                 explorers.setLayout(GridLayoutFactory.fillDefaults().margins(0, 0).numColumns(1)\r
59                                 .spacing(0, 0).create());\r
60 \r
61                 explorersScroll.setMinSize(100, 100);\r
62                 explorersScroll.setContent(explorers);\r
63 \r
64                 return explorers;\r
65 \r
66         }\r
67         \r
68         @Override\r
69         public void updateChildren(SWTDocument document, JSONObject object, WidgetContainer widget, TreeMap<String, WidgetData> childMap) {\r
70                 \r
71                 super.updateChildren(document, object, widget, childMap);\r
72 \r
73                 for(WidgetData c : childMap.values()) {\r
74 \r
75                         WidgetContainer con = (WidgetContainer)c.widget;\r
76                         Control child = con.getControl();\r
77                         GridDataFactory.fillDefaults().grab(true, false).applyTo(child);\r
78                         \r
79                 }\r
80                 \r
81         }\r
82         \r
83 }\r