Scroll a child control automatically : Scroll « SWT JFace Eclipse « Java






Scroll a child control automatically

Scroll a child control automatically

/*
 * Composite example snippet: scroll a child control automatically
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Shell;

public class Snippet9 {

  public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display, SWT.SHELL_TRIM | SWT.H_SCROLL
        | SWT.V_SCROLL);
    final Composite composite = new Composite(shell, SWT.BORDER);
    composite.setSize(200, 400);
    final ScrollBar hBar = shell.getHorizontalBar();
    hBar.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        Point location = composite.getLocation();
        location.x = -hBar.getSelection();
        composite.setLocation(location);
      }
    });
    final ScrollBar vBar = shell.getVerticalBar();
    vBar.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        Point location = composite.getLocation();
        location.y = -vBar.getSelection();
        composite.setLocation(location);
      }
    });
    shell.addListener(SWT.Resize, new Listener() {
      public void handleEvent(Event e) {
        Point size = composite.getSize();
        Rectangle rect = shell.getClientArea();
        hBar.setMaximum(size.x);
        vBar.setMaximum(size.y);
        hBar.setThumb(Math.min(size.x, rect.width));
        vBar.setThumb(Math.min(size.y, rect.height));
        int hPage = size.x - rect.width;
        int vPage = size.y - rect.height;
        int hSelection = hBar.getSelection();
        int vSelection = vBar.getSelection();
        Point location = composite.getLocation();
        if (hSelection >= hPage) {
          if (hPage <= 0)
            hSelection = 0;
          location.x = -hSelection;
        }
        if (vSelection >= vPage) {
          if (vPage <= 0)
            vSelection = 0;
          location.y = -vSelection;
        }
        composite.setLocation(location);
      }
    });
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }

}


           
       








Related examples in the same category

1.Demonstrates ScrolledCompositeDemonstrates ScrolledComposite
2.Scroll SWT widgets into view when they get focusScroll SWT widgets into view when they get focus
3.Create two ScrolledComposites that scroll in tandemCreate two ScrolledComposites that scroll in tandem
4.Create a ScrolledComposite with wrapping contentCreate a ScrolledComposite with wrapping content
5.Scroll a control in a scrolled compositeScroll a control in a scrolled composite
6.scroll an image (flicker free, no double buffering)scroll an image (flicker free, no double buffering)