Mega Code Archive

 
Categories / Java Tutorial / SWT
 

Show a tool tip inside a rectangle

/*******************************************************************************  * Copyright (c) 2000, 2004 IBM Corporation and others.  * All rights reserved. This program and the accompanying materials  * are made available under the terms of the Eclipse Public License v1.0  * which accompanies this distribution, and is available at  * http://www.eclipse.org/legal/epl-v10.html  *  * Contributors:  *     IBM Corporation - initial API and implementation  *******************************************************************************/ //package org.eclipse.swt.snippets; /*  * Tool Tips example snippet: show a tool tip inside a rectangle  *  * For a list of all SWT example snippets see  * http://www.eclipse.org/swt/snippets/  */ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; 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; public class ToolTipRectangle {   public static void main(String[] args) {     Display display = new Display();     final Color[] colors = { display.getSystemColor(SWT.COLOR_RED),         display.getSystemColor(SWT.COLOR_GREEN), display.getSystemColor(SWT.COLOR_BLUE), };     final Rectangle[] rects = { new Rectangle(10, 10, 30, 30), new Rectangle(20, 45, 25, 35),         new Rectangle(80, 80, 10, 10), };     final Shell shell = new Shell(display);     Listener mouseListener = new Listener() {       public void handleEvent(Event event) {         switch (event.type) {         case SWT.MouseEnter:         case SWT.MouseMove:           for (int i = 0; i < rects.length; i++) {             if (rects[i].contains(event.x, event.y)) {               String text = "ToolTip " + i;               if (!(text.equals(shell.getToolTipText()))) {                 shell.setToolTipText("ToolTip " + i);               }               return;             }           }           shell.setToolTipText(null);           break;         }       }     };     shell.addListener(SWT.MouseMove, mouseListener);     shell.addListener(SWT.MouseEnter, mouseListener);     shell.addListener(SWT.Paint, new Listener() {       public void handleEvent(Event event) {         GC gc = event.gc;         for (int i = 0; i < rects.length; i++) {           gc.setBackground(colors[i]);           gc.fillRectangle(rects[i]);           gc.drawRectangle(rects[i]);         }       }     });     shell.setSize(200, 200);     shell.open();     while (!shell.isDisposed()) {       if (!display.readAndDispatch())         display.sleep();     }     display.dispose();   } }