Eclipse - How To Make a Scrollable View?
Sometimes you may like to have a scrollable view that contains another composite. The question is how to make it scrollable and adjustable to its content?
Sometimes you may like to have a scrollable view that contains another composite. The question is how to make it scrollable and adjustable to its content?
There is a special class in SWT named ScrolledComposite which can be used for that purpose. In Figure 1 below you can see the example of a view (it is actually the view I needed it for).
Fig. 1 An example of scrollable view in Eclipse SWT
In my case there was a main composite named container, which contained a subContainer with all controls, i.e., lables, texts. To make the subContainer scrollable I introduced ScrolledComposite in the following way:
container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout());
final ScrolledComposite sc = new ScrolledComposite(container, SWT.BORDER | SWT.H_SCROLL
| SWT.V_SCROLL);
sc.setLayout(new FillLayout());
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
final Composite subContainer = new Composite(sc, SWT.NONE);
GridLayout layout = new GridLayout();
sc.setContent(subContainer);
The scrolled composite was added directly to the container, then, the subContainer was added to the scrolled composite. You have to also set the subContainer as a content of the scrolled composite.
The make scrolled composite aware of changes in size of the subContainer you can add listener:
sc.addControlListener(new ControlAdapter() {
public void controlResized(ControlEvent e) {
Rectangle r = sc.getClientArea();
sc.setMinSize(subContainer
.computeSize(r.width, SWT.DEFAULT));
}
});

Previous:
Guideliness for Developing SRS



Implementing the scrolledcomposite directly without adding the low level composite