]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.document.swt.core.base;\r
2 \r
3 import org.eclipse.swt.SWT;\r
4 import org.eclipse.swt.custom.ScrolledComposite;\r
5 import org.eclipse.swt.graphics.Point;\r
6 import org.eclipse.swt.widgets.Composite;\r
7 import org.eclipse.swt.widgets.ScrollBar;\r
8 import org.simantics.utils.ui.SWTUtils;\r
9 \r
10 public class ScrolledCompositeContent extends Composite implements Runnable {\r
11         \r
12         public ScrolledCompositeContent(Composite parent, int style) {\r
13                 super(parent, style);\r
14         }\r
15         \r
16         public void refreshSize() {\r
17                 SWTUtils.asyncExec(this, this);\r
18         }\r
19 \r
20         public void run() {\r
21 \r
22                 if(isDisposed()) return;\r
23 \r
24                 ScrolledComposite sc = (ScrolledComposite)getParent();\r
25                 int scWidth = sc.getSize().x;\r
26                 \r
27                 ScrollBar bar = sc.getVerticalBar();\r
28                 if(bar != null && bar.isVisible())\r
29                         scWidth -= bar.getSize().x;\r
30                 \r
31                 Point current = getSize();\r
32                 Point target = computeSize(scWidth, SWT.DEFAULT, true);\r
33                 \r
34                 if(!current.equals(target)) {\r
35                         setSize(target);\r
36                         sc.getParent().layout(true, true);\r
37                 }\r
38                 \r
39         }\r
40         \r
41 }\r