Improve JCR based UI.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / widgets / ScrolledPage.java
index 5dd00adf21b23cba56c09ed3718f572f3a7bc435..517e796e944ccead7b930823eff203558f5bb13f 100644 (file)
@@ -6,6 +6,7 @@ import org.eclipse.swt.events.ControlEvent;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 
 /**
  * A composite that can be scrolled vertically. It wraps a
@@ -18,7 +19,11 @@ public class ScrolledPage extends Composite {
        private ScrolledComposite scrolledComposite;
 
        public ScrolledPage(Composite parent, int style) {
-               super(new ScrolledComposite(parent, SWT.V_SCROLL), style);
+               this(parent, style, false);
+       }
+
+       public ScrolledPage(Composite parent, int style, boolean alwaysShowScroll) {
+               super(createScrolledComposite(parent, alwaysShowScroll), style);
                scrolledComposite = (ScrolledComposite) getParent();
                scrolledComposite.setContent(this);
 
@@ -27,12 +32,22 @@ public class ScrolledPage extends Composite {
                scrolledComposite.addControlListener(new ScrollControlListener());
        }
 
+       private static ScrolledComposite createScrolledComposite(Composite parent, boolean alwaysShowScroll) {
+               ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.V_SCROLL);
+               scrolledComposite.setAlwaysShowScrollBars(alwaysShowScroll);
+               return scrolledComposite;
+       }
+
        @Override
        public void layout(boolean changed, boolean all) {
                updateScroll();
                super.layout(changed, all);
        }
 
+       public void showControl(Control control) {
+               scrolledComposite.showControl(control);
+       }
+
        protected void updateScroll() {
                Rectangle r = scrolledComposite.getClientArea();
                Point preferredSize = computeSize(r.width, SWT.DEFAULT);
@@ -49,8 +64,7 @@ public class ScrolledPage extends Composite {
                scrolledComposite.setLayoutData(layoutData);
        }
 
-       private class ScrollControlListener extends
-                       org.eclipse.swt.events.ControlAdapter {
+       private class ScrollControlListener extends org.eclipse.swt.events.ControlAdapter {
                private static final long serialVersionUID = -3586986238567483316L;
 
                public void controlResized(ControlEvent e) {