]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/base/ScrolledCompositeContent.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.swt.core / src / org / simantics / document / swt / core / base / ScrolledCompositeContent.java
diff --git a/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/base/ScrolledCompositeContent.java b/bundles/org.simantics.document.swt.core/src/org/simantics/document/swt/core/base/ScrolledCompositeContent.java
new file mode 100644 (file)
index 0000000..28f6b40
--- /dev/null
@@ -0,0 +1,41 @@
+package org.simantics.document.swt.core.base;\r
+\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.ScrolledComposite;\r
+import org.eclipse.swt.graphics.Point;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.ScrollBar;\r
+import org.simantics.utils.ui.SWTUtils;\r
+\r
+public class ScrolledCompositeContent extends Composite implements Runnable {\r
+       \r
+       public ScrolledCompositeContent(Composite parent, int style) {\r
+               super(parent, style);\r
+       }\r
+       \r
+       public void refreshSize() {\r
+               SWTUtils.asyncExec(this, this);\r
+       }\r
+\r
+       public void run() {\r
+\r
+               if(isDisposed()) return;\r
+\r
+               ScrolledComposite sc = (ScrolledComposite)getParent();\r
+               int scWidth = sc.getSize().x;\r
+               \r
+               ScrollBar bar = sc.getVerticalBar();\r
+               if(bar != null && bar.isVisible())\r
+                       scWidth -= bar.getSize().x;\r
+               \r
+               Point current = getSize();\r
+               Point target = computeSize(scWidth, SWT.DEFAULT, true);\r
+               \r
+               if(!current.equals(target)) {\r
+                       setSize(target);\r
+                       sc.getParent().layout(true, true);\r
+               }\r
+               \r
+       }\r
+       \r
+}\r