--- /dev/null
+package org.simantics.document.swt.core.widget;\r
+\r
+import java.util.TreeMap;\r
+\r
+import org.eclipse.jface.layout.GridDataFactory;\r
+import org.eclipse.jface.layout.GridLayoutFactory;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.ScrolledComposite;\r
+import org.eclipse.swt.events.ControlEvent;\r
+import org.eclipse.swt.events.ControlListener;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.simantics.document.server.JSONObject;\r
+import org.simantics.document.server.client.WidgetData;\r
+import org.simantics.document.swt.core.SWTDocument;\r
+import org.simantics.document.swt.core.SWTViews;\r
+import org.simantics.document.swt.core.base.HasWidgetsWidgetManager;\r
+import org.simantics.document.swt.core.base.ScrolledCompositeContent;\r
+import org.simantics.document.swt.core.base.WidgetContainer;\r
+\r
+public class ScrolledCompositeWidget extends HasWidgetsWidgetManager<ScrolledCompositeContent> {\r
+ \r
+ @Override\r
+ protected void doUpdateProperties(SWTDocument document, ScrolledCompositeContent control, JSONObject object) {\r
+ }\r
+\r
+ @Override\r
+ protected ScrolledCompositeContent doCreateControl(SWTDocument document, Composite parent, JSONObject object) {\r
+ \r
+ ScrolledComposite explorersScroll = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.BORDER);\r
+ explorersScroll.setBackground(Display.getCurrent().getSystemColor(\r
+ SWT.COLOR_WHITE));\r
+ explorersScroll.setLayout(GridLayoutFactory.fillDefaults()\r
+ .margins(0, 0).spacing(0, 0).create());\r
+ GridDataFactory.fillDefaults().grab(true, true).span(1, 1)\r
+ .applyTo(explorersScroll);\r
+\r
+ ScrolledCompositeContent explorers = new ScrolledCompositeContent(explorersScroll, SWT.NONE);\r
+\r
+ explorersScroll.addControlListener(new ControlListener() {\r
+\r
+ @Override\r
+ public void controlResized(ControlEvent e) {\r
+ SWTViews.notifyScrolledComposite(explorers);\r
+ }\r
+\r
+ @Override\r
+ public void controlMoved(ControlEvent e) {\r
+ SWTViews.notifyScrolledComposite(explorers);\r
+ }\r
+ });\r
+\r
+ explorers.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
+ \r
+ // Make sure that exploders are initially visible\r
+ explorers.setSize(10, 300);\r
+ explorers.setLayout(GridLayoutFactory.fillDefaults().margins(0, 0).numColumns(1)\r
+ .spacing(0, 0).create());\r
+\r
+ explorersScroll.setMinSize(100, 100);\r
+ explorersScroll.setContent(explorers);\r
+\r
+ return explorers;\r
+\r
+ }\r
+ \r
+ @Override\r
+ public void updateChildren(SWTDocument document, JSONObject object, WidgetContainer widget, TreeMap<String, WidgetData> childMap) {\r
+ \r
+ super.updateChildren(document, object, widget, childMap);\r
+\r
+ for(WidgetData c : childMap.values()) {\r
+\r
+ WidgetContainer con = (WidgetContainer)c.widget;\r
+ Control child = con.getControl();\r
+ GridDataFactory.fillDefaults().grab(true, false).applyTo(child);\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+}\r