]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/widget/ScrolledCompositeWidget.java b/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/widget/ScrolledCompositeWidget.java
new file mode 100644 (file)
index 0000000..6ee7a91
--- /dev/null
@@ -0,0 +1,83 @@
+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