]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/widgets/ScrolledPage.java
[maven-release-plugin] prepare release argeo-commons-2.1.84
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / widgets / ScrolledPage.java
1 package org.argeo.cms.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
10 /**
11 * A composite that can be scrolled vertically. It wraps a
12 * {@link ScrolledComposite} (and is being wrapped by it), simplifying its
13 * configuration.
14 */
15 public class ScrolledPage extends Composite {
16 private static final long serialVersionUID = 1593536965663574437L;
17
18 private ScrolledComposite scrolledComposite;
19
20 public ScrolledPage(Composite parent, int style) {
21 super(new ScrolledComposite(parent, SWT.V_SCROLL), style);
22 scrolledComposite = (ScrolledComposite) getParent();
23 scrolledComposite.setContent(this);
24
25 scrolledComposite.setExpandVertical(true);
26 scrolledComposite.setExpandHorizontal(true);
27 scrolledComposite.addControlListener(new ScrollControlListener());
28 }
29
30 @Override
31 public void layout(boolean changed, boolean all) {
32 updateScroll();
33 super.layout(changed, all);
34 }
35
36 protected void updateScroll() {
37 Rectangle r = scrolledComposite.getClientArea();
38 Point preferredSize = computeSize(r.width, SWT.DEFAULT);
39 scrolledComposite.setMinHeight(preferredSize.y);
40 }
41
42 // public ScrolledComposite getScrolledComposite() {
43 // return this.scrolledComposite;
44 // }
45
46 /** Set it on the wrapping scrolled composite */
47 @Override
48 public void setLayoutData(Object layoutData) {
49 scrolledComposite.setLayoutData(layoutData);
50 }
51
52 private class ScrollControlListener extends
53 org.eclipse.swt.events.ControlAdapter {
54 private static final long serialVersionUID = -3586986238567483316L;
55
56 public void controlResized(ControlEvent e) {
57 updateScroll();
58 }
59 }
60 }