Java/SWT JFace Eclipse/Mouse Key

Материал из Java эксперт
Перейти к: навигация, поиск

Detect mouse enter, exit and hover events

   <source lang="java">

/*

* Control example snippet: detect mouse enter, exit and hover events
*
* 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.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class Snippet14 {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setSize(100, 100);
   shell.addListener(SWT.MouseEnter, new Listener() {
     public void handleEvent(Event e) {
       System.out.println("ENTER");
     }
   });
   shell.addListener(SWT.MouseExit, new Listener() {
     public void handleEvent(Event e) {
       System.out.println("EXIT");
     }
   });
   shell.addListener(SWT.MouseHover, new Listener() {
     public void handleEvent(Event e) {
       System.out.println("HOVER");
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}


      </source>
   
  
 
  



How to implement hover help feedback using the MouseTrackListener

   <source lang="java">

import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.HelpEvent; import org.eclipse.swt.events.HelpListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseTrackAdapter; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.ruposite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.swt.widgets.Widget; /**

* This example demonstrates how to implement hover help feedback using the
* MouseTrackListener.
*/

public class HoverHelp {

 static final int hhiInformation = 0, hhiWarning = 1;
 static final String[] imageLocations = { "information.gif", "warning.gif" };
 Image images[];
 /**
  * Runs main program.
  */
 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new HoverHelp().open(display);
   // Event loop
   while (shell != null && !shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   // Cleanup
   display.dispose();
 }
 /**
  * Opens the main program.
  */
 public Shell open(Display display) {
   // Load the images
   Class clazz = HoverHelp.class;
   try {
     if (images == null) {
       images = new Image[imageLocations.length];
       for (int i = 0; i < imageLocations.length; ++i) {
         InputStream stream = clazz
             .getResourceAsStream(imageLocations[i]);
         ImageData source = new ImageData(stream);
         ImageData mask = source.getTransparencyMask();
         images[i] = new Image(display, source, mask);
         try {
           stream.close();
         } catch (IOException e) {
           e.printStackTrace();
         }
       }
     }
   } catch (Exception ex) {
     System.err.println(getResourceString("error.CouldNotLoadResources",
         new Object[] { ex.getMessage() }));
     return null;
   }
   // Create the window
   Shell shell = new Shell();
   createPartControl(shell);
   shell.addDisposeListener(new DisposeListener() {
     public void widgetDisposed(DisposeEvent e) {
       /* Free resources */
       if (images != null) {
         for (int i = 0; i < images.length; i++) {
           final Image image = images[i];
           if (image != null)
             image.dispose();
         }
         images = null;
       }
     }
   });
   shell.pack();
   shell.open();
   return shell;
 }
 /**
  * Gets a string from the resource bundle. We don"t want to crash because of
  * a missing String. Returns the key if not found.
  */
 public String getResourceString(String key) {
     return key;
 }
 /**
  * Gets a string from the resource bundle and binds it with the given
  * arguments. If the key is not found, return the key.
  */
 public String getResourceString(String key, Object[] args) {
   try {
     return MessageFormat.format(getResourceString(key), args);
   } catch (MissingResourceException e) {
     return key;
   } catch (NullPointerException e) {
     return "!" + key + "!";
   }
 }
 /**
  * Creates the example
  */
 public void createPartControl(Composite frame) {
   final ToolTipHandler tooltip = new ToolTipHandler(frame.getShell());
   GridLayout layout = new GridLayout();
   layout.numColumns = 3;
   frame.setLayout(layout);
   ToolBar bar = new ToolBar(frame, SWT.BORDER);
   for (int i = 0; i < 5; i++) {
     ToolItem item = new ToolItem(bar, SWT.PUSH);
     item.setText(getResourceString("ToolItem.text",
         new Object[] { new Integer(i) }));
     item.setData("TIP_TEXT", getResourceString("ToolItem.tooltip",
         new Object[] { item.getText() }));
     item.setData("TIP_HELPTEXTHANDLER", new ToolTipHelpTextHandler() {
       public String getHelpText(Widget widget) {
         Item item = (Item) widget;
         return getResourceString("ToolItem.help",
             new Object[] { item.getText() });
       }
     });
   }
   GridData gridData = new GridData();
   gridData.horizontalSpan = 3;
   bar.setLayoutData(gridData);
   tooltip.activateHoverHelp(bar);
   Table table = new Table(frame, SWT.BORDER);
   for (int i = 0; i < 4; i++) {
     TableItem item = new TableItem(table, SWT.PUSH);
     item.setText(getResourceString("Item",
         new Object[] { new Integer(i) }));
     item.setData("TIP_IMAGE", images[hhiInformation]);
     item.setText(getResourceString("TableItem.text",
         new Object[] { new Integer(i) }));
     item.setData("TIP_TEXT", getResourceString("TableItem.tooltip",
         new Object[] { item.getText() }));
     item.setData("TIP_HELPTEXTHANDLER", new ToolTipHelpTextHandler() {
       public String getHelpText(Widget widget) {
         Item item = (Item) widget;
         return getResourceString("TableItem.help",
             new Object[] { item.getText() });
       }
     });
   }
   table.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL));
   tooltip.activateHoverHelp(table);
   Tree tree = new Tree(frame, SWT.BORDER);
   for (int i = 0; i < 4; i++) {
     TreeItem item = new TreeItem(tree, SWT.PUSH);
     item.setText(getResourceString("Item",
         new Object[] { new Integer(i) }));
     item.setData("TIP_IMAGE", images[hhiWarning]);
     item.setText(getResourceString("TreeItem.text",
         new Object[] { new Integer(i) }));
     item.setData("TIP_TEXT", getResourceString("TreeItem.tooltip",
         new Object[] { item.getText() }));
     item.setData("TIP_HELPTEXTHANDLER", new ToolTipHelpTextHandler() {
       public String getHelpText(Widget widget) {
         Item item = (Item) widget;
         return getResourceString("TreeItem.help",
             new Object[] { item.getText() });
       }
     });
   }
   tree.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL));
   tooltip.activateHoverHelp(tree);
   Button button = new Button(frame, SWT.PUSH);
   button.setText(getResourceString("Hello.text"));
   button.setData("TIP_TEXT", getResourceString("Hello.tooltip"));
   tooltip.activateHoverHelp(button);
 }
 /**
  * Emulated tooltip handler Notice that we could display anything in a
  * tooltip besides text and images. For instance, it might make sense to
  * embed large tables of data or buttons linking data under inspection to
  * material elsewhere, or perform dynamic lookup for creating tooltip text
  * on the fly.
  */
 protected static class ToolTipHandler {
   private Shell parentShell;
   private Shell tipShell;
   private Label tipLabelImage, tipLabelText;
   private Widget tipWidget; // widget this tooltip is hovering over
   private Point tipPosition; // the position being hovered over
   /**
    * Creates a new tooltip handler
    * 
    * @param parent
    *            the parent Shell
    */
   public ToolTipHandler(Shell parent) {
     final Display display = parent.getDisplay();
     this.parentShell = parent;
     tipShell = new Shell(parent, SWT.ON_TOP | SWT.TOOL);
     GridLayout gridLayout = new GridLayout();
     gridLayout.numColumns = 2;
     gridLayout.marginWidth = 2;
     gridLayout.marginHeight = 2;
     tipShell.setLayout(gridLayout);
     tipShell.setBackground(display
         .getSystemColor(SWT.COLOR_INFO_BACKGROUND));
     tipLabelImage = new Label(tipShell, SWT.NONE);
     tipLabelImage.setForeground(display
         .getSystemColor(SWT.COLOR_INFO_FOREGROUND));
     tipLabelImage.setBackground(display
         .getSystemColor(SWT.COLOR_INFO_BACKGROUND));
     tipLabelImage.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
         | GridData.VERTICAL_ALIGN_CENTER));
     tipLabelText = new Label(tipShell, SWT.NONE);
     tipLabelText.setForeground(display
         .getSystemColor(SWT.COLOR_INFO_FOREGROUND));
     tipLabelText.setBackground(display
         .getSystemColor(SWT.COLOR_INFO_BACKGROUND));
     tipLabelText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
         | GridData.VERTICAL_ALIGN_CENTER));
   }
   /**
    * Enables customized hover help for a specified control
    * 
    * @control the control on which to enable hoverhelp
    */
   public void activateHoverHelp(final Control control) {
     /*
      * Get out of the way if we attempt to activate the control
      * underneath the tooltip
      */
     control.addMouseListener(new MouseAdapter() {
       public void mouseDown(MouseEvent e) {
         if (tipShell.isVisible())
           tipShell.setVisible(false);
       }
     });
     /*
      * Trap hover events to pop-up tooltip
      */
     control.addMouseTrackListener(new MouseTrackAdapter() {
       public void mouseExit(MouseEvent e) {
         if (tipShell.isVisible())
           tipShell.setVisible(false);
         tipWidget = null;
       }
       public void mouseHover(MouseEvent event) {
         Point pt = new Point(event.x, event.y);
         Widget widget = event.widget;
         if (widget instanceof ToolBar) {
           ToolBar w = (ToolBar) widget;
           widget = w.getItem(pt);
         }
         if (widget instanceof Table) {
           Table w = (Table) widget;
           widget = w.getItem(pt);
         }
         if (widget instanceof Tree) {
           Tree w = (Tree) widget;
           widget = w.getItem(pt);
         }
         if (widget == null) {
           tipShell.setVisible(false);
           tipWidget = null;
           return;
         }
         if (widget == tipWidget)
           return;
         tipWidget = widget;
         tipPosition = control.toDisplay(pt);
         String text = (String) widget.getData("TIP_TEXT");
         Image image = (Image) widget.getData("TIP_IMAGE");
         tipLabelText.setText(text != null ? text : "");
         tipLabelImage.setImage(image); // accepts null
         tipShell.pack();
         setHoverLocation(tipShell, tipPosition);
         tipShell.setVisible(true);
       }
     });
     /*
      * Trap F1 Help to pop up a custom help box
      */
     control.addHelpListener(new HelpListener() {
       public void helpRequested(HelpEvent event) {
         if (tipWidget == null)
           return;
         ToolTipHelpTextHandler handler = (ToolTipHelpTextHandler) tipWidget
             .getData("TIP_HELPTEXTHANDLER");
         if (handler == null)
           return;
         String text = handler.getHelpText(tipWidget);
         if (text == null)
           return;
         if (tipShell.isVisible()) {
           tipShell.setVisible(false);
           Shell helpShell = new Shell(parentShell, SWT.SHELL_TRIM);
           helpShell.setLayout(new FillLayout());
           Label label = new Label(helpShell, SWT.NONE);
           label.setText(text);
           helpShell.pack();
           setHoverLocation(helpShell, tipPosition);
           helpShell.open();
         }
       }
     });
   }
   /**
    * Sets the location for a hovering shell
    * 
    * @param shell
    *            the object that is to hover
    * @param position
    *            the position of a widget to hover over
    * @return the top-left location for a hovering box
    */
   private void setHoverLocation(Shell shell, Point position) {
     Rectangle displayBounds = shell.getDisplay().getBounds();
     Rectangle shellBounds = shell.getBounds();
     shellBounds.x = Math.max(Math.min(position.x, displayBounds.width
         - shellBounds.width), 0);
     shellBounds.y = Math.max(Math.min(position.y + 16,
         displayBounds.height - shellBounds.height), 0);
     shell.setBounds(shellBounds);
   }
 }
 /**
  * ToolTip help handler
  */
 protected interface ToolTipHelpTextHandler {
   /**
    * Get help text
    * 
    * @param widget
    *            the widget that is under help
    * @return a help text string
    */
   public String getHelpText(Widget widget);
 }

}


      </source>
   
  
 
  



Intercept mouse events (drag a button with the mouse)

   <source lang="java">


/*

* 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.ruposite; 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 ();

} }

      </source>
   
  
 
  



Mouse Listener Example

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class MouseListenerExample {

 final Display d;
 final Shell s;
 public MouseListenerExample() {
   d = new Display();
   s = new Shell(d);
   s.setSize(250, 200);
   
   s.setText("A MouseListener Example");
   s.open();
   s.addMouseListener(new MouseListener() {
     public void mouseDown(MouseEvent e) {
       Label l = new Label(s, SWT.FLAT);
       l.setText("Mouse Button Down at:" + e.x + " " + e.y);
       l.setBounds(e.x, e.y, 150, 15);
     }
     public void mouseUp(MouseEvent e) {
       Label l = new Label(s, SWT.FLAT);
       l.setText("Mouse Button up at:" + e.x + " " + e.y);
       l.setBounds(e.x, e.y, 150, 15);
     }
     public void mouseDoubleClick(MouseEvent e) {
     }
   });
   while (!s.isDisposed()) {
     if (!d.readAndDispatch())
       d.sleep();
   }
   d.dispose();
 }
 public static void main() {
   new MouseListenerExample();
 }

}

      </source>
   
  
 
  



Mouse Move Listener Example

   <source lang="java">

import java.util.Random; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseMoveListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class MouseMoveListenerExample {

 final Display d;
 final Shell s;
 public MouseMoveListenerExample() {
   d = new Display();
   s = new Shell(d);
   s.setSize(250, 200);
   
   s.setText("A MouseListener Example");
   final Button b = new Button(s, SWT.PUSH);
   b.setText("Push Me");
   b.setBounds(20, 50, 55, 25);
   s.open();
   b.addMouseMoveListener(new MouseMoveListener() {
     public void mouseMove(MouseEvent e) {
       Random r = new Random(System.currentTimeMillis());
       Point p = s.getSize();
       int newX = r.nextInt(p.y);
       int newY = r.nextInt(p.x);
       b.setBounds(newX - 55, newY - 25, 55, 25);
     }
   });
   while (!s.isDisposed()) {
     if (!d.readAndDispatch())
       d.sleep();
   }
   d.dispose();
 }
 public static void main() {
   new MouseMoveListenerExample();
 }

}


      </source>
   
  
 
  



Mouse Track Example

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseTrackAdapter; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class MouseTrackExample {

 final Display d;
 final Shell s;
 public MouseTrackExample() {
   d = new Display();
   s = new Shell(d);
   s.setSize(250, 200);
   
   s.setText("A MouseTrackListener Example");
   final Button b = new Button(s, SWT.PUSH);
   b.setText("Push Me");
   b.setBounds(20, 50, 55, 25);
   s.open();
   final Color oldColor = b.getBackground();
   b.addMouseTrackListener(new MouseTrackAdapter() {
     public void mouseEnter(MouseEvent e) {
       b.setBackground(new Color(d, 0, 153, 153));
     }
     public void mouseExit(MouseEvent e) {
       b.setBackground(oldColor);
     }
   });
   while (!s.isDisposed()) {
     if (!d.readAndDispatch())
       d.sleep();
   }
   d.dispose();
 }
 public static void main() {
   new MouseTrackExample();
 }

}


      </source>
   
  
 
  



SWT Mouse: A tracker (drag when "torn off")

   <source lang="java">

/*

* Tracker example snippet: create a tracker (drag when "torn off")
*
* 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.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tracker; public class Snippet31 {

 public static void main(String[] args) {
   final Display display = new Display();
   final Shell shell = new Shell(display);
   shell.setSize(200, 200);
   shell.open();
   Listener listener = new Listener() {
     Point point = null;
     static final int JITTER = 8;
     public void handleEvent(Event event) {
       switch (event.type) {
       case SWT.MouseDown:
         point = new Point(event.x, event.y);
         break;
       case SWT.MouseMove:
         if (point == null)
           return;
         int deltaX = point.x - event.x,
         deltaY = point.y - event.y;
         if (Math.abs(deltaX) < JITTER && Math.abs(deltaY) < JITTER) {
           return;
         }
         Tracker tracker = new Tracker(display, SWT.NONE);
         Rectangle rect = display.map(shell, null, shell
             .getClientArea());
         rect.x -= deltaX;
         rect.y -= deltaY;
         tracker.setRectangles(new Rectangle[] { rect });
         tracker.open();
       // FALL THROUGH
       case SWT.MouseUp:
         point = null;
         break;
       }
     }
   };
   shell.addListener(SWT.MouseDown, listener);
   shell.addListener(SWT.MouseMove, listener);
   shell.addListener(SWT.MouseUp, listener);
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}


      </source>
   
  
 
  



SWT Mouse : drag on mouse down

   <source lang="java">

/*

* Tracker example snippet: create a tracker (drag on mouse down)
*
* 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.Rectangle; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tracker; public class Snippet23 {

 public static void main(String[] args) {
   Display display = new Display();
   final Shell shell = new Shell(display);
   shell.open();
   shell.addListener(SWT.MouseDown, new Listener() {
     public void handleEvent(Event e) {
       Tracker tracker = new Tracker(shell, SWT.NONE);
       tracker.setRectangles(new Rectangle[] { new Rectangle(e.x, e.y,
           100, 100), });
       tracker.open();
     }
   });
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}


      </source>
   
  
 
  



UI Automation (for testing tools) snippet: post key events

   <source lang="java">

/*

* UI Automation (for testing tools) snippet: post key events
*
* 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.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class Snippet146 {

 public static void main(String[] args) {
   final Display display = new Display();
   final Shell shell = new Shell(display);
   final Text text = new Text(shell, SWT.BORDER);
   text.setSize(text.ruputeSize(150, SWT.DEFAULT));
   shell.pack();
   shell.open();
   new Thread() {
     public void run() {
       String string = "Love the method.";
       for (int i = 0; i < string.length(); i++) {
         char ch = string.charAt(i);
         boolean shift = Character.isUpperCase(ch);
         ch = Character.toLowerCase(ch);
         if (shift) {
           Event event = new Event();
           event.type = SWT.KeyDown;
           event.keyCode = SWT.SHIFT;
           display.post(event);
         }
         Event event = new Event();
         event.type = SWT.KeyDown;
         event.character = ch;
         display.post(event);
         try {
           Thread.sleep(10);
         } catch (InterruptedException e) {
         }
         event.type = SWT.KeyUp;
         display.post(event);
         try {
           Thread.sleep(100);
         } catch (InterruptedException e) {
         }
         if (shift) {
           event = new Event();
           event.type = SWT.KeyUp;
           event.keyCode = SWT.SHIFT;
           display.post(event);
         }
       }
     }
   }.start();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}


      </source>
   
  
 
  



UI Automation (for testing tools) snippet: post mouse events

   <source lang="java">


/*

* UI Automation (for testing tools) snippet: post mouse events
*
* 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.widgets.Button; 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 Snippet142 { public static void main(String[] args) {

 final Display display = new Display();
 final Shell shell = new Shell(display);
 final Button button = new Button(shell,SWT.NONE);
 button.setSize(100,100);
 button.setText("Click");
 shell.pack();
 shell.open();
 button.addListener(SWT.MouseDown, new Listener() {
   public void handleEvent(Event e){
     System.out.println("Mouse Down (button: " + e.button + " x: " + e.x + " y: " + e.y + ")");
   }
 });
 final Point pt = display.map(shell, null, 50, 50);
 new Thread(){
   Event event;
   public void run(){
     try {
       Thread.sleep(300);
     } catch (InterruptedException e) {}
     event = new Event();
     event.type = SWT.MouseMove;
     event.x = pt.x;
     event.y = pt.y;
     display.post(event);
     try {
       Thread.sleep(300);
     } catch (InterruptedException e) {}
     event.type = SWT.MouseDown;
     event.button = 1;
     display.post(event);
     try {
       Thread.sleep(300);
     } catch (InterruptedException e) {}
     event.type = SWT.MouseUp;
     display.post(event);
   }  
 }.start();
 while (!shell.isDisposed()) {
   if (!display.readAndDispatch()) display.sleep();
 }
 display.dispose();

} }

      </source>