Intercept mouse events (drag a button with the mouse) : Mouse Key « SWT JFace Eclipse « Java






Intercept mouse events (drag a button with the mouse)

Intercept mouse events (drag a button with the mouse)


 
/*
 * Composite example snippet: intercept mouse events (drag a button with the mouse)
 *
 * 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.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
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.Shell;

public class Snippet46 {
public static void main (String [] args) {
  Display display = new Display ();
  final Shell shell = new Shell (display);
  final Composite composite = new Composite (shell, SWT.NONE);
  composite.setEnabled (false);
  composite.setLayout (new FillLayout ());
  Button button = new Button (composite, SWT.PUSH);
  button.setText ("Button");
  composite.pack ();
  composite.setLocation (10, 10);
  final Point [] offset = new Point [1];
  Listener listener = new Listener () {
    public void handleEvent (Event event) {
      switch (event.type) {
        case SWT.MouseDown:
          Rectangle rect = composite.getBounds ();
          if (rect.contains (event.x, event.y)) {
            Point pt1 = composite.toDisplay (0, 0);
            Point pt2 = shell.toDisplay (event.x, event.y); 
            offset [0] = new Point (pt2.x - pt1.x, pt2.y - pt1.y);
          }
          break;
        case SWT.MouseMove:
          if (offset [0] != null) {
            Point pt = offset [0];
            composite.setLocation (event.x - pt.x, event.y - pt.y);
          }
          break;
        case SWT.MouseUp:
          offset [0] = null;
          break;
      }
    }
  };
  shell.addListener (SWT.MouseDown, listener);
  shell.addListener (SWT.MouseUp, listener);
  shell.addListener (SWT.MouseMove, listener);
  shell.setSize (300, 300);
  shell.open ();
  while (!shell.isDisposed ()) {
    if (!display.readAndDispatch ()) display.sleep ();
  }
  display.dispose ();
}
}

           
       








Related examples in the same category

1.Mouse Track Example
2.Mouse Move Listener Example
3.Mouse Listener Example
4.SWT Mouse: A tracker (drag when 'torn off')SWT Mouse: A tracker (drag when 'torn off')
5.SWT Mouse : drag on mouse downSWT Mouse : drag on mouse down
6.UI Automation (for testing tools) snippet: post key eventsUI Automation (for testing tools) snippet: post key events
7.UI Automation (for testing tools) snippet: post mouse eventsUI Automation (for testing tools) snippet: post mouse events
8.Detect mouse enter, exit and hover eventsDetect mouse enter, exit and hover events
9.How to implement hover help feedback using the MouseTrackListenerHow to implement hover help feedback using the MouseTrackListener