]> git.argeo.org Git - lgpl/argeo-commons.git/blob - swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/ScrolledPage.java
Add account-related RFC 2307bis LDAP objects and attributes
[lgpl/argeo-commons.git] / swt / org.argeo.cms.swt / src / org / argeo / cms / swt / widgets / ScrolledPage.java
1 package org.argeo.cms.swt.widgets;
2
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.custom.ScrolledComposite;
5 import org.eclipse.swt.events.ControlEvent;
6 import org.eclipse.swt.graphics.Point;
7 import org.eclipse.swt.graphics.Rectangle;
8 import org.eclipse.swt.widgets.Composite;
9 import org.eclipse.swt.widgets.Control;
10
11 /**
12 * A composite that can be scrolled vertically. It wraps a
13 * {@link ScrolledComposite} (and is being wrapped by it), simplifying its
14 * configuration.
15 */
16 public class ScrolledPage extends Composite {
17 private static final long serialVersionUID = 1593536965663574437L;
18
19 private ScrolledComposite scrolledComposite;
20
21 public ScrolledPage(Composite parent, int style) {
22 this(parent, style, false);
23 }
24
25 public ScrolledPage(Composite parent, int style, boolean alwaysShowScroll) {
26 super(createScrolledComposite(parent, alwaysShowScroll), style);
27 scrolledComposite = (ScrolledComposite) getParent();
28 scrolledComposite.setContent(this);
29
30 scrolledComposite.setExpandVertical(true);
31 scrolledComposite.setExpandHorizontal(true);
32 scrolledComposite.addControlListener(new ScrollControlListener());
33 }
34
35 private static ScrolledComposite createScrolledComposite(Composite parent, boolean alwaysShowScroll) {
36 ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.V_SCROLL);
37 scrolledComposite.setAlwaysShowScrollBars(alwaysShowScroll);
38 return scrolledComposite;
39 }
40
41 @Override
42 public void layout(boolean changed, boolean all) {
43 updateScroll();
44 super.layout(changed, all);
45 }
46
47 public void showControl(Control control) {
48 scrolledComposite.showControl(control);
49 }
50
51 protected void updateScroll() {
52 Rectangle r = scrolledComposite.getClientArea();
53 Point preferredSize = computeSize(r.width, SWT.DEFAULT);
54 scrolledComposite.setMinHeight(preferredSize.y);
55 }
56
57 // public ScrolledComposite getScrolledComposite() {
58 // return this.scrolledComposite;
59 // }
60
61 /** Set it on the wrapping scrolled composite */
62 @Override
63 public void setLayoutData(Object layoutData) {
64 scrolledComposite.setLayoutData(layoutData);
65 }
66
67 private class ScrollControlListener extends org.eclipse.swt.events.ControlAdapter {
68 private static final long serialVersionUID = -3586986238567483316L;
69
70 public void controlResized(ControlEvent e) {
71 updateScroll();
72 }
73 }
74 }