<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSWT_JFace_Eclipse%2FMouse_Key</id>
		<title>Java/SWT JFace Eclipse/Mouse Key - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSWT_JFace_Eclipse%2FMouse_Key"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Mouse_Key&amp;action=history"/>
		<updated>2026-04-21T19:07:43Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Mouse_Key&amp;diff=5682&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Mouse_Key&amp;diff=5682&amp;oldid=prev"/>
				<updated>2010-06-01T05:56:11Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:56, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Mouse_Key&amp;diff=5681&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Mouse_Key&amp;diff=5681&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Detect mouse enter, exit and hover events ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Control example snippet: detect mouse enter, exit and hover events&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class Snippet14 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Display display = new Display();&lt;br /&gt;
    Shell shell = new Shell(display);&lt;br /&gt;
    shell.setSize(100, 100);&lt;br /&gt;
    shell.addListener(SWT.MouseEnter, new Listener() {&lt;br /&gt;
      public void handleEvent(Event e) {&lt;br /&gt;
        System.out.println(&amp;quot;ENTER&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    shell.addListener(SWT.MouseExit, new Listener() {&lt;br /&gt;
      public void handleEvent(Event e) {&lt;br /&gt;
        System.out.println(&amp;quot;EXIT&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    shell.addListener(SWT.MouseHover, new Listener() {&lt;br /&gt;
      public void handleEvent(Event e) {&lt;br /&gt;
        System.out.println(&amp;quot;HOVER&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    shell.open();&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How to implement hover help feedback using the MouseTrackListener ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.text.MessageFormat;&lt;br /&gt;
import java.util.MissingResourceException;&lt;br /&gt;
import java.util.ResourceBundle;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.events.DisposeEvent;&lt;br /&gt;
import org.eclipse.swt.events.DisposeListener;&lt;br /&gt;
import org.eclipse.swt.events.HelpEvent;&lt;br /&gt;
import org.eclipse.swt.events.HelpListener;&lt;br /&gt;
import org.eclipse.swt.events.MouseAdapter;&lt;br /&gt;
import org.eclipse.swt.events.MouseEvent;&lt;br /&gt;
import org.eclipse.swt.events.MouseTrackAdapter;&lt;br /&gt;
import org.eclipse.swt.graphics.Image;&lt;br /&gt;
import org.eclipse.swt.graphics.ImageData;&lt;br /&gt;
import org.eclipse.swt.graphics.Point;&lt;br /&gt;
import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;
import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;
import org.eclipse.swt.layout.GridData;&lt;br /&gt;
import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.ruposite;&lt;br /&gt;
import org.eclipse.swt.widgets.Control;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Item;&lt;br /&gt;
import org.eclipse.swt.widgets.Label;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Table;&lt;br /&gt;
import org.eclipse.swt.widgets.TableItem;&lt;br /&gt;
import org.eclipse.swt.widgets.ToolBar;&lt;br /&gt;
import org.eclipse.swt.widgets.ToolItem;&lt;br /&gt;
import org.eclipse.swt.widgets.Tree;&lt;br /&gt;
import org.eclipse.swt.widgets.TreeItem;&lt;br /&gt;
import org.eclipse.swt.widgets.Widget;&lt;br /&gt;
/**&lt;br /&gt;
 * This example demonstrates how to implement hover help feedback using the&lt;br /&gt;
 * MouseTrackListener.&lt;br /&gt;
 */&lt;br /&gt;
public class HoverHelp {&lt;br /&gt;
  static final int hhiInformation = 0, hhiWarning = 1;&lt;br /&gt;
  static final String[] imageLocations = { &amp;quot;information.gif&amp;quot;, &amp;quot;warning.gif&amp;quot; };&lt;br /&gt;
  Image images[];&lt;br /&gt;
  /**&lt;br /&gt;
   * Runs main program.&lt;br /&gt;
   */&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Display display = new Display();&lt;br /&gt;
    Shell shell = new HoverHelp().open(display);&lt;br /&gt;
    // Event loop&lt;br /&gt;
    while (shell != null &amp;amp;&amp;amp; !shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    // Cleanup&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Opens the main program.&lt;br /&gt;
   */&lt;br /&gt;
  public Shell open(Display display) {&lt;br /&gt;
    // Load the images&lt;br /&gt;
    Class clazz = HoverHelp.class;&lt;br /&gt;
    try {&lt;br /&gt;
      if (images == null) {&lt;br /&gt;
        images = new Image[imageLocations.length];&lt;br /&gt;
        for (int i = 0; i &amp;lt; imageLocations.length; ++i) {&lt;br /&gt;
          InputStream stream = clazz&lt;br /&gt;
              .getResourceAsStream(imageLocations[i]);&lt;br /&gt;
          ImageData source = new ImageData(stream);&lt;br /&gt;
          ImageData mask = source.getTransparencyMask();&lt;br /&gt;
          images[i] = new Image(display, source, mask);&lt;br /&gt;
          try {&lt;br /&gt;
            stream.close();&lt;br /&gt;
          } catch (IOException e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    } catch (Exception ex) {&lt;br /&gt;
      System.err.println(getResourceString(&amp;quot;error.CouldNotLoadResources&amp;quot;,&lt;br /&gt;
          new Object[] { ex.getMessage() }));&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
    // Create the window&lt;br /&gt;
    Shell shell = new Shell();&lt;br /&gt;
    createPartControl(shell);&lt;br /&gt;
    shell.addDisposeListener(new DisposeListener() {&lt;br /&gt;
      public void widgetDisposed(DisposeEvent e) {&lt;br /&gt;
        /* Free resources */&lt;br /&gt;
        if (images != null) {&lt;br /&gt;
          for (int i = 0; i &amp;lt; images.length; i++) {&lt;br /&gt;
            final Image image = images[i];&lt;br /&gt;
            if (image != null)&lt;br /&gt;
              image.dispose();&lt;br /&gt;
          }&lt;br /&gt;
          images = null;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    shell.pack();&lt;br /&gt;
    shell.open();&lt;br /&gt;
    return shell;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets a string from the resource bundle. We don&amp;quot;t want to crash because of&lt;br /&gt;
   * a missing String. Returns the key if not found.&lt;br /&gt;
   */&lt;br /&gt;
  public String getResourceString(String key) {&lt;br /&gt;
      return key;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Gets a string from the resource bundle and binds it with the given&lt;br /&gt;
   * arguments. If the key is not found, return the key.&lt;br /&gt;
   */&lt;br /&gt;
  public String getResourceString(String key, Object[] args) {&lt;br /&gt;
    try {&lt;br /&gt;
      return MessageFormat.format(getResourceString(key), args);&lt;br /&gt;
    } catch (MissingResourceException e) {&lt;br /&gt;
      return key;&lt;br /&gt;
    } catch (NullPointerException e) {&lt;br /&gt;
      return &amp;quot;!&amp;quot; + key + &amp;quot;!&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Creates the example&lt;br /&gt;
   */&lt;br /&gt;
  public void createPartControl(Composite frame) {&lt;br /&gt;
    final ToolTipHandler tooltip = new ToolTipHandler(frame.getShell());&lt;br /&gt;
    GridLayout layout = new GridLayout();&lt;br /&gt;
    layout.numColumns = 3;&lt;br /&gt;
    frame.setLayout(layout);&lt;br /&gt;
    ToolBar bar = new ToolBar(frame, SWT.BORDER);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
      ToolItem item = new ToolItem(bar, SWT.PUSH);&lt;br /&gt;
      item.setText(getResourceString(&amp;quot;ToolItem.text&amp;quot;,&lt;br /&gt;
          new Object[] { new Integer(i) }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_TEXT&amp;quot;, getResourceString(&amp;quot;ToolItem.tooltip&amp;quot;,&lt;br /&gt;
          new Object[] { item.getText() }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_HELPTEXTHANDLER&amp;quot;, new ToolTipHelpTextHandler() {&lt;br /&gt;
        public String getHelpText(Widget widget) {&lt;br /&gt;
          Item item = (Item) widget;&lt;br /&gt;
          return getResourceString(&amp;quot;ToolItem.help&amp;quot;,&lt;br /&gt;
              new Object[] { item.getText() });&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    GridData gridData = new GridData();&lt;br /&gt;
    gridData.horizontalSpan = 3;&lt;br /&gt;
    bar.setLayoutData(gridData);&lt;br /&gt;
    tooltip.activateHoverHelp(bar);&lt;br /&gt;
    Table table = new Table(frame, SWT.BORDER);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
      TableItem item = new TableItem(table, SWT.PUSH);&lt;br /&gt;
      item.setText(getResourceString(&amp;quot;Item&amp;quot;,&lt;br /&gt;
          new Object[] { new Integer(i) }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_IMAGE&amp;quot;, images[hhiInformation]);&lt;br /&gt;
      item.setText(getResourceString(&amp;quot;TableItem.text&amp;quot;,&lt;br /&gt;
          new Object[] { new Integer(i) }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_TEXT&amp;quot;, getResourceString(&amp;quot;TableItem.tooltip&amp;quot;,&lt;br /&gt;
          new Object[] { item.getText() }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_HELPTEXTHANDLER&amp;quot;, new ToolTipHelpTextHandler() {&lt;br /&gt;
        public String getHelpText(Widget widget) {&lt;br /&gt;
          Item item = (Item) widget;&lt;br /&gt;
          return getResourceString(&amp;quot;TableItem.help&amp;quot;,&lt;br /&gt;
              new Object[] { item.getText() });&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    table.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL));&lt;br /&gt;
    tooltip.activateHoverHelp(table);&lt;br /&gt;
    Tree tree = new Tree(frame, SWT.BORDER);&lt;br /&gt;
    for (int i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
      TreeItem item = new TreeItem(tree, SWT.PUSH);&lt;br /&gt;
      item.setText(getResourceString(&amp;quot;Item&amp;quot;,&lt;br /&gt;
          new Object[] { new Integer(i) }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_IMAGE&amp;quot;, images[hhiWarning]);&lt;br /&gt;
      item.setText(getResourceString(&amp;quot;TreeItem.text&amp;quot;,&lt;br /&gt;
          new Object[] { new Integer(i) }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_TEXT&amp;quot;, getResourceString(&amp;quot;TreeItem.tooltip&amp;quot;,&lt;br /&gt;
          new Object[] { item.getText() }));&lt;br /&gt;
      item.setData(&amp;quot;TIP_HELPTEXTHANDLER&amp;quot;, new ToolTipHelpTextHandler() {&lt;br /&gt;
        public String getHelpText(Widget widget) {&lt;br /&gt;
          Item item = (Item) widget;&lt;br /&gt;
          return getResourceString(&amp;quot;TreeItem.help&amp;quot;,&lt;br /&gt;
              new Object[] { item.getText() });&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    tree.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL));&lt;br /&gt;
    tooltip.activateHoverHelp(tree);&lt;br /&gt;
    Button button = new Button(frame, SWT.PUSH);&lt;br /&gt;
    button.setText(getResourceString(&amp;quot;Hello.text&amp;quot;));&lt;br /&gt;
    button.setData(&amp;quot;TIP_TEXT&amp;quot;, getResourceString(&amp;quot;Hello.tooltip&amp;quot;));&lt;br /&gt;
    tooltip.activateHoverHelp(button);&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Emulated tooltip handler Notice that we could display anything in a&lt;br /&gt;
   * tooltip besides text and images. For instance, it might make sense to&lt;br /&gt;
   * embed large tables of data or buttons linking data under inspection to&lt;br /&gt;
   * material elsewhere, or perform dynamic lookup for creating tooltip text&lt;br /&gt;
   * on the fly.&lt;br /&gt;
   */&lt;br /&gt;
  protected static class ToolTipHandler {&lt;br /&gt;
    private Shell parentShell;&lt;br /&gt;
    private Shell tipShell;&lt;br /&gt;
    private Label tipLabelImage, tipLabelText;&lt;br /&gt;
    private Widget tipWidget; // widget this tooltip is hovering over&lt;br /&gt;
    private Point tipPosition; // the position being hovered over&lt;br /&gt;
    /**&lt;br /&gt;
     * Creates a new tooltip handler&lt;br /&gt;
     * &lt;br /&gt;
     * @param parent&lt;br /&gt;
     *            the parent Shell&lt;br /&gt;
     */&lt;br /&gt;
    public ToolTipHandler(Shell parent) {&lt;br /&gt;
      final Display display = parent.getDisplay();&lt;br /&gt;
      this.parentShell = parent;&lt;br /&gt;
      tipShell = new Shell(parent, SWT.ON_TOP | SWT.TOOL);&lt;br /&gt;
      GridLayout gridLayout = new GridLayout();&lt;br /&gt;
      gridLayout.numColumns = 2;&lt;br /&gt;
      gridLayout.marginWidth = 2;&lt;br /&gt;
      gridLayout.marginHeight = 2;&lt;br /&gt;
      tipShell.setLayout(gridLayout);&lt;br /&gt;
      tipShell.setBackground(display&lt;br /&gt;
          .getSystemColor(SWT.COLOR_INFO_BACKGROUND));&lt;br /&gt;
      tipLabelImage = new Label(tipShell, SWT.NONE);&lt;br /&gt;
      tipLabelImage.setForeground(display&lt;br /&gt;
          .getSystemColor(SWT.COLOR_INFO_FOREGROUND));&lt;br /&gt;
      tipLabelImage.setBackground(display&lt;br /&gt;
          .getSystemColor(SWT.COLOR_INFO_BACKGROUND));&lt;br /&gt;
      tipLabelImage.setLayoutData(new GridData(GridData.FILL_HORIZONTAL&lt;br /&gt;
          | GridData.VERTICAL_ALIGN_CENTER));&lt;br /&gt;
      tipLabelText = new Label(tipShell, SWT.NONE);&lt;br /&gt;
      tipLabelText.setForeground(display&lt;br /&gt;
          .getSystemColor(SWT.COLOR_INFO_FOREGROUND));&lt;br /&gt;
      tipLabelText.setBackground(display&lt;br /&gt;
          .getSystemColor(SWT.COLOR_INFO_BACKGROUND));&lt;br /&gt;
      tipLabelText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL&lt;br /&gt;
          | GridData.VERTICAL_ALIGN_CENTER));&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Enables customized hover help for a specified control&lt;br /&gt;
     * &lt;br /&gt;
     * @control the control on which to enable hoverhelp&lt;br /&gt;
     */&lt;br /&gt;
    public void activateHoverHelp(final Control control) {&lt;br /&gt;
      /*&lt;br /&gt;
       * Get out of the way if we attempt to activate the control&lt;br /&gt;
       * underneath the tooltip&lt;br /&gt;
       */&lt;br /&gt;
      control.addMouseListener(new MouseAdapter() {&lt;br /&gt;
        public void mouseDown(MouseEvent e) {&lt;br /&gt;
          if (tipShell.isVisible())&lt;br /&gt;
            tipShell.setVisible(false);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      /*&lt;br /&gt;
       * Trap hover events to pop-up tooltip&lt;br /&gt;
       */&lt;br /&gt;
      control.addMouseTrackListener(new MouseTrackAdapter() {&lt;br /&gt;
        public void mouseExit(MouseEvent e) {&lt;br /&gt;
          if (tipShell.isVisible())&lt;br /&gt;
            tipShell.setVisible(false);&lt;br /&gt;
          tipWidget = null;&lt;br /&gt;
        }&lt;br /&gt;
        public void mouseHover(MouseEvent event) {&lt;br /&gt;
          Point pt = new Point(event.x, event.y);&lt;br /&gt;
          Widget widget = event.widget;&lt;br /&gt;
          if (widget instanceof ToolBar) {&lt;br /&gt;
            ToolBar w = (ToolBar) widget;&lt;br /&gt;
            widget = w.getItem(pt);&lt;br /&gt;
          }&lt;br /&gt;
          if (widget instanceof Table) {&lt;br /&gt;
            Table w = (Table) widget;&lt;br /&gt;
            widget = w.getItem(pt);&lt;br /&gt;
          }&lt;br /&gt;
          if (widget instanceof Tree) {&lt;br /&gt;
            Tree w = (Tree) widget;&lt;br /&gt;
            widget = w.getItem(pt);&lt;br /&gt;
          }&lt;br /&gt;
          if (widget == null) {&lt;br /&gt;
            tipShell.setVisible(false);&lt;br /&gt;
            tipWidget = null;&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
          if (widget == tipWidget)&lt;br /&gt;
            return;&lt;br /&gt;
          tipWidget = widget;&lt;br /&gt;
          tipPosition = control.toDisplay(pt);&lt;br /&gt;
          String text = (String) widget.getData(&amp;quot;TIP_TEXT&amp;quot;);&lt;br /&gt;
          Image image = (Image) widget.getData(&amp;quot;TIP_IMAGE&amp;quot;);&lt;br /&gt;
          tipLabelText.setText(text != null ? text : &amp;quot;&amp;quot;);&lt;br /&gt;
          tipLabelImage.setImage(image); // accepts null&lt;br /&gt;
          tipShell.pack();&lt;br /&gt;
          setHoverLocation(tipShell, tipPosition);&lt;br /&gt;
          tipShell.setVisible(true);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      /*&lt;br /&gt;
       * Trap F1 Help to pop up a custom help box&lt;br /&gt;
       */&lt;br /&gt;
      control.addHelpListener(new HelpListener() {&lt;br /&gt;
        public void helpRequested(HelpEvent event) {&lt;br /&gt;
          if (tipWidget == null)&lt;br /&gt;
            return;&lt;br /&gt;
          ToolTipHelpTextHandler handler = (ToolTipHelpTextHandler) tipWidget&lt;br /&gt;
              .getData(&amp;quot;TIP_HELPTEXTHANDLER&amp;quot;);&lt;br /&gt;
          if (handler == null)&lt;br /&gt;
            return;&lt;br /&gt;
          String text = handler.getHelpText(tipWidget);&lt;br /&gt;
          if (text == null)&lt;br /&gt;
            return;&lt;br /&gt;
          if (tipShell.isVisible()) {&lt;br /&gt;
            tipShell.setVisible(false);&lt;br /&gt;
            Shell helpShell = new Shell(parentShell, SWT.SHELL_TRIM);&lt;br /&gt;
            helpShell.setLayout(new FillLayout());&lt;br /&gt;
            Label label = new Label(helpShell, SWT.NONE);&lt;br /&gt;
            label.setText(text);&lt;br /&gt;
            helpShell.pack();&lt;br /&gt;
            setHoverLocation(helpShell, tipPosition);&lt;br /&gt;
            helpShell.open();&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Sets the location for a hovering shell&lt;br /&gt;
     * &lt;br /&gt;
     * @param shell&lt;br /&gt;
     *            the object that is to hover&lt;br /&gt;
     * @param position&lt;br /&gt;
     *            the position of a widget to hover over&lt;br /&gt;
     * @return the top-left location for a hovering box&lt;br /&gt;
     */&lt;br /&gt;
    private void setHoverLocation(Shell shell, Point position) {&lt;br /&gt;
      Rectangle displayBounds = shell.getDisplay().getBounds();&lt;br /&gt;
      Rectangle shellBounds = shell.getBounds();&lt;br /&gt;
      shellBounds.x = Math.max(Math.min(position.x, displayBounds.width&lt;br /&gt;
          - shellBounds.width), 0);&lt;br /&gt;
      shellBounds.y = Math.max(Math.min(position.y + 16,&lt;br /&gt;
          displayBounds.height - shellBounds.height), 0);&lt;br /&gt;
      shell.setBounds(shellBounds);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * ToolTip help handler&lt;br /&gt;
   */&lt;br /&gt;
  protected interface ToolTipHelpTextHandler {&lt;br /&gt;
    /**&lt;br /&gt;
     * Get help text&lt;br /&gt;
     * &lt;br /&gt;
     * @param widget&lt;br /&gt;
     *            the widget that is under help&lt;br /&gt;
     * @return a help text string&lt;br /&gt;
     */&lt;br /&gt;
    public String getHelpText(Widget widget);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Intercept mouse events (drag a button with the mouse) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Composite example snippet: intercept mouse events (drag a button with the mouse)&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.graphics.Point;&lt;br /&gt;
import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;
import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.ruposite;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class Snippet46 {&lt;br /&gt;
public static void main (String [] args) {&lt;br /&gt;
  Display display = new Display ();&lt;br /&gt;
  final Shell shell = new Shell (display);&lt;br /&gt;
  final Composite composite = new Composite (shell, SWT.NONE);&lt;br /&gt;
  composite.setEnabled (false);&lt;br /&gt;
  composite.setLayout (new FillLayout ());&lt;br /&gt;
  Button button = new Button (composite, SWT.PUSH);&lt;br /&gt;
  button.setText (&amp;quot;Button&amp;quot;);&lt;br /&gt;
  composite.pack ();&lt;br /&gt;
  composite.setLocation (10, 10);&lt;br /&gt;
  final Point [] offset = new Point [1];&lt;br /&gt;
  Listener listener = new Listener () {&lt;br /&gt;
    public void handleEvent (Event event) {&lt;br /&gt;
      switch (event.type) {&lt;br /&gt;
        case SWT.MouseDown:&lt;br /&gt;
          Rectangle rect = composite.getBounds ();&lt;br /&gt;
          if (rect.contains (event.x, event.y)) {&lt;br /&gt;
            Point pt1 = composite.toDisplay (0, 0);&lt;br /&gt;
            Point pt2 = shell.toDisplay (event.x, event.y); &lt;br /&gt;
            offset [0] = new Point (pt2.x - pt1.x, pt2.y - pt1.y);&lt;br /&gt;
          }&lt;br /&gt;
          break;&lt;br /&gt;
        case SWT.MouseMove:&lt;br /&gt;
          if (offset [0] != null) {&lt;br /&gt;
            Point pt = offset [0];&lt;br /&gt;
            composite.setLocation (event.x - pt.x, event.y - pt.y);&lt;br /&gt;
          }&lt;br /&gt;
          break;&lt;br /&gt;
        case SWT.MouseUp:&lt;br /&gt;
          offset [0] = null;&lt;br /&gt;
          break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  };&lt;br /&gt;
  shell.addListener (SWT.MouseDown, listener);&lt;br /&gt;
  shell.addListener (SWT.MouseUp, listener);&lt;br /&gt;
  shell.addListener (SWT.MouseMove, listener);&lt;br /&gt;
  shell.setSize (300, 300);&lt;br /&gt;
  shell.open ();&lt;br /&gt;
  while (!shell.isDisposed ()) {&lt;br /&gt;
    if (!display.readAndDispatch ()) display.sleep ();&lt;br /&gt;
  }&lt;br /&gt;
  display.dispose ();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mouse Listener Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.events.MouseEvent;&lt;br /&gt;
import org.eclipse.swt.events.MouseListener;&lt;br /&gt;
import org.eclipse.swt.graphics.Image;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Label;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class MouseListenerExample {&lt;br /&gt;
  final Display d;&lt;br /&gt;
  final Shell s;&lt;br /&gt;
  public MouseListenerExample() {&lt;br /&gt;
    d = new Display();&lt;br /&gt;
    s = new Shell(d);&lt;br /&gt;
    s.setSize(250, 200);&lt;br /&gt;
    &lt;br /&gt;
    s.setText(&amp;quot;A MouseListener Example&amp;quot;);&lt;br /&gt;
    s.open();&lt;br /&gt;
    s.addMouseListener(new MouseListener() {&lt;br /&gt;
      public void mouseDown(MouseEvent e) {&lt;br /&gt;
        Label l = new Label(s, SWT.FLAT);&lt;br /&gt;
        l.setText(&amp;quot;Mouse Button Down at:&amp;quot; + e.x + &amp;quot; &amp;quot; + e.y);&lt;br /&gt;
        l.setBounds(e.x, e.y, 150, 15);&lt;br /&gt;
      }&lt;br /&gt;
      public void mouseUp(MouseEvent e) {&lt;br /&gt;
        Label l = new Label(s, SWT.FLAT);&lt;br /&gt;
        l.setText(&amp;quot;Mouse Button up at:&amp;quot; + e.x + &amp;quot; &amp;quot; + e.y);&lt;br /&gt;
        l.setBounds(e.x, e.y, 150, 15);&lt;br /&gt;
      }&lt;br /&gt;
      public void mouseDoubleClick(MouseEvent e) {&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    while (!s.isDisposed()) {&lt;br /&gt;
      if (!d.readAndDispatch())&lt;br /&gt;
        d.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    d.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main() {&lt;br /&gt;
    new MouseListenerExample();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mouse Move Listener Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.events.MouseEvent;&lt;br /&gt;
import org.eclipse.swt.events.MouseMoveListener;&lt;br /&gt;
import org.eclipse.swt.graphics.Image;&lt;br /&gt;
import org.eclipse.swt.graphics.Point;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class MouseMoveListenerExample {&lt;br /&gt;
  final Display d;&lt;br /&gt;
  final Shell s;&lt;br /&gt;
  public MouseMoveListenerExample() {&lt;br /&gt;
    d = new Display();&lt;br /&gt;
    s = new Shell(d);&lt;br /&gt;
    s.setSize(250, 200);&lt;br /&gt;
    &lt;br /&gt;
    s.setText(&amp;quot;A MouseListener Example&amp;quot;);&lt;br /&gt;
    final Button b = new Button(s, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Push Me&amp;quot;);&lt;br /&gt;
    b.setBounds(20, 50, 55, 25);&lt;br /&gt;
    s.open();&lt;br /&gt;
    b.addMouseMoveListener(new MouseMoveListener() {&lt;br /&gt;
      public void mouseMove(MouseEvent e) {&lt;br /&gt;
        Random r = new Random(System.currentTimeMillis());&lt;br /&gt;
        Point p = s.getSize();&lt;br /&gt;
        int newX = r.nextInt(p.y);&lt;br /&gt;
        int newY = r.nextInt(p.x);&lt;br /&gt;
        b.setBounds(newX - 55, newY - 25, 55, 25);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    while (!s.isDisposed()) {&lt;br /&gt;
      if (!d.readAndDispatch())&lt;br /&gt;
        d.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    d.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main() {&lt;br /&gt;
    new MouseMoveListenerExample();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mouse Track Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.events.MouseEvent;&lt;br /&gt;
import org.eclipse.swt.events.MouseTrackAdapter;&lt;br /&gt;
import org.eclipse.swt.graphics.Color;&lt;br /&gt;
import org.eclipse.swt.graphics.Image;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class MouseTrackExample {&lt;br /&gt;
  final Display d;&lt;br /&gt;
  final Shell s;&lt;br /&gt;
  public MouseTrackExample() {&lt;br /&gt;
    d = new Display();&lt;br /&gt;
    s = new Shell(d);&lt;br /&gt;
    s.setSize(250, 200);&lt;br /&gt;
    &lt;br /&gt;
    s.setText(&amp;quot;A MouseTrackListener Example&amp;quot;);&lt;br /&gt;
    final Button b = new Button(s, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Push Me&amp;quot;);&lt;br /&gt;
    b.setBounds(20, 50, 55, 25);&lt;br /&gt;
    s.open();&lt;br /&gt;
    final Color oldColor = b.getBackground();&lt;br /&gt;
    b.addMouseTrackListener(new MouseTrackAdapter() {&lt;br /&gt;
      public void mouseEnter(MouseEvent e) {&lt;br /&gt;
        b.setBackground(new Color(d, 0, 153, 153));&lt;br /&gt;
      }&lt;br /&gt;
      public void mouseExit(MouseEvent e) {&lt;br /&gt;
        b.setBackground(oldColor);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    while (!s.isDisposed()) {&lt;br /&gt;
      if (!d.readAndDispatch())&lt;br /&gt;
        d.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    d.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  public static void main() {&lt;br /&gt;
    new MouseTrackExample();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SWT Mouse: A tracker (drag when &amp;quot;torn off&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Tracker example snippet: create a tracker (drag when &amp;quot;torn off&amp;quot;)&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.graphics.Point;&lt;br /&gt;
import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Tracker;&lt;br /&gt;
public class Snippet31 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    final Display display = new Display();&lt;br /&gt;
    final Shell shell = new Shell(display);&lt;br /&gt;
    shell.setSize(200, 200);&lt;br /&gt;
    shell.open();&lt;br /&gt;
    Listener listener = new Listener() {&lt;br /&gt;
      Point point = null;&lt;br /&gt;
      static final int JITTER = 8;&lt;br /&gt;
      public void handleEvent(Event event) {&lt;br /&gt;
        switch (event.type) {&lt;br /&gt;
        case SWT.MouseDown:&lt;br /&gt;
          point = new Point(event.x, event.y);&lt;br /&gt;
          break;&lt;br /&gt;
        case SWT.MouseMove:&lt;br /&gt;
          if (point == null)&lt;br /&gt;
            return;&lt;br /&gt;
          int deltaX = point.x - event.x,&lt;br /&gt;
          deltaY = point.y - event.y;&lt;br /&gt;
          if (Math.abs(deltaX) &amp;lt; JITTER &amp;amp;&amp;amp; Math.abs(deltaY) &amp;lt; JITTER) {&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
          Tracker tracker = new Tracker(display, SWT.NONE);&lt;br /&gt;
          Rectangle rect = display.map(shell, null, shell&lt;br /&gt;
              .getClientArea());&lt;br /&gt;
          rect.x -= deltaX;&lt;br /&gt;
          rect.y -= deltaY;&lt;br /&gt;
          tracker.setRectangles(new Rectangle[] { rect });&lt;br /&gt;
          tracker.open();&lt;br /&gt;
        // FALL THROUGH&lt;br /&gt;
        case SWT.MouseUp:&lt;br /&gt;
          point = null;&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    shell.addListener(SWT.MouseDown, listener);&lt;br /&gt;
    shell.addListener(SWT.MouseMove, listener);&lt;br /&gt;
    shell.addListener(SWT.MouseUp, listener);&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SWT Mouse : drag on mouse down ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Tracker example snippet: create a tracker (drag on mouse down)&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Tracker;&lt;br /&gt;
public class Snippet23 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Display display = new Display();&lt;br /&gt;
    final Shell shell = new Shell(display);&lt;br /&gt;
    shell.open();&lt;br /&gt;
    shell.addListener(SWT.MouseDown, new Listener() {&lt;br /&gt;
      public void handleEvent(Event e) {&lt;br /&gt;
        Tracker tracker = new Tracker(shell, SWT.NONE);&lt;br /&gt;
        tracker.setRectangles(new Rectangle[] { new Rectangle(e.x, e.y,&lt;br /&gt;
            100, 100), });&lt;br /&gt;
        tracker.open();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI Automation (for testing tools) snippet: post key events ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * UI Automation (for testing tools) snippet: post key events&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Text;&lt;br /&gt;
public class Snippet146 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    final Display display = new Display();&lt;br /&gt;
    final Shell shell = new Shell(display);&lt;br /&gt;
    final Text text = new Text(shell, SWT.BORDER);&lt;br /&gt;
    text.setSize(text.ruputeSize(150, SWT.DEFAULT));&lt;br /&gt;
    shell.pack();&lt;br /&gt;
    shell.open();&lt;br /&gt;
    new Thread() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        String string = &amp;quot;Love the method.&amp;quot;;&lt;br /&gt;
        for (int i = 0; i &amp;lt; string.length(); i++) {&lt;br /&gt;
          char ch = string.charAt(i);&lt;br /&gt;
          boolean shift = Character.isUpperCase(ch);&lt;br /&gt;
          ch = Character.toLowerCase(ch);&lt;br /&gt;
          if (shift) {&lt;br /&gt;
            Event event = new Event();&lt;br /&gt;
            event.type = SWT.KeyDown;&lt;br /&gt;
            event.keyCode = SWT.SHIFT;&lt;br /&gt;
            display.post(event);&lt;br /&gt;
          }&lt;br /&gt;
          Event event = new Event();&lt;br /&gt;
          event.type = SWT.KeyDown;&lt;br /&gt;
          event.character = ch;&lt;br /&gt;
          display.post(event);&lt;br /&gt;
          try {&lt;br /&gt;
            Thread.sleep(10);&lt;br /&gt;
          } catch (InterruptedException e) {&lt;br /&gt;
          }&lt;br /&gt;
          event.type = SWT.KeyUp;&lt;br /&gt;
          display.post(event);&lt;br /&gt;
          try {&lt;br /&gt;
            Thread.sleep(100);&lt;br /&gt;
          } catch (InterruptedException e) {&lt;br /&gt;
          }&lt;br /&gt;
          if (shift) {&lt;br /&gt;
            event = new Event();&lt;br /&gt;
            event.type = SWT.KeyUp;&lt;br /&gt;
            event.keyCode = SWT.SHIFT;&lt;br /&gt;
            display.post(event);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }.start();&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI Automation (for testing tools) snippet: post mouse events ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
/*&lt;br /&gt;
 * UI Automation (for testing tools) snippet: post mouse events&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.graphics.Point;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
public class Snippet142 {&lt;br /&gt;
public static void main(String[] args) {&lt;br /&gt;
  final Display display = new Display();&lt;br /&gt;
  final Shell shell = new Shell(display);&lt;br /&gt;
  final Button button = new Button(shell,SWT.NONE);&lt;br /&gt;
  button.setSize(100,100);&lt;br /&gt;
  button.setText(&amp;quot;Click&amp;quot;);&lt;br /&gt;
  shell.pack();&lt;br /&gt;
  shell.open();&lt;br /&gt;
  button.addListener(SWT.MouseDown, new Listener() {&lt;br /&gt;
    public void handleEvent(Event e){&lt;br /&gt;
      System.out.println(&amp;quot;Mouse Down (button: &amp;quot; + e.button + &amp;quot; x: &amp;quot; + e.x + &amp;quot; y: &amp;quot; + e.y + &amp;quot;)&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
  final Point pt = display.map(shell, null, 50, 50);&lt;br /&gt;
  new Thread(){&lt;br /&gt;
    Event event;&lt;br /&gt;
    public void run(){&lt;br /&gt;
      try {&lt;br /&gt;
        Thread.sleep(300);&lt;br /&gt;
      } catch (InterruptedException e) {}&lt;br /&gt;
      event = new Event();&lt;br /&gt;
      event.type = SWT.MouseMove;&lt;br /&gt;
      event.x = pt.x;&lt;br /&gt;
      event.y = pt.y;&lt;br /&gt;
      display.post(event);&lt;br /&gt;
      try {&lt;br /&gt;
        Thread.sleep(300);&lt;br /&gt;
      } catch (InterruptedException e) {}&lt;br /&gt;
      event.type = SWT.MouseDown;&lt;br /&gt;
      event.button = 1;&lt;br /&gt;
      display.post(event);&lt;br /&gt;
      try {&lt;br /&gt;
        Thread.sleep(300);&lt;br /&gt;
      } catch (InterruptedException e) {}&lt;br /&gt;
      event.type = SWT.MouseUp;&lt;br /&gt;
      display.post(event);&lt;br /&gt;
    }  &lt;br /&gt;
  }.start();&lt;br /&gt;
  while (!shell.isDisposed()) {&lt;br /&gt;
    if (!display.readAndDispatch()) display.sleep();&lt;br /&gt;
  }&lt;br /&gt;
  display.dispose();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>