⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snippet020customizedcontroltooltips.java

📁 对于可视的桌面开发系统的一些详细的设计资料
💻 JAVA
字号:
/*******************************************************************************
 * Copyright (c) 2006 Tom Schindl 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:
 *     Tom Schindl - initial API and implementation
 *******************************************************************************/

package org.eclipse.jface.snippets.window;


import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.Policy;
import org.eclipse.jface.window.DefaultToolTip;
import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

/**
 * Demonstrate usage of custom toolstips for controls
 * 
 * @author Tom Schindl
 * 
 */
public class Snippet020CustomizedControlTooltips {
	protected class MyToolTip extends ToolTip {
		
		private Shell parentShell;
		
		private String headerText = "ToolTip-Header";
		
		public static final String HEADER_BG_COLOR = Policy.JFACE + ".TOOLTIP_HEAD_BG_COLOR";
		
		public static final String HEADER_FG_COLOR = Policy.JFACE + ".TOOLTIP_HEAD_FG_COLOR";
		
		public static final String HEADER_FONT = Policy.JFACE + ".TOOLTIP_HEAD_FONT";
		
		public static final String HEADER_CLOSE_ICON = Policy.JFACE + ".TOOLTIP_CLOSE_ICON";
		public static final String HEADER_HELP_ICON = Policy.JFACE + ".TOOLTIP_HELP_ICON";
		
		public MyToolTip(Control control) {
			super(control);
			this.parentShell = control.getShell();
		}

		protected Composite createToolTipContentArea(Event event,
				Composite parent) {
			Composite comp = new Composite(parent,SWT.NONE);
			
			GridLayout gl = new GridLayout(1,false);
			gl.marginBottom=0;
			gl.marginTop=0;
			gl.marginHeight=0;
			gl.marginWidth=0;
			gl.marginLeft=0;
			gl.marginRight=0;
			gl.verticalSpacing=1;
			comp.setLayout(gl);
			
			Composite topArea = new Composite(comp,SWT.NONE);
			GridData data = new GridData(SWT.FILL,SWT.FILL,true,false);
			data.widthHint=200;
			topArea.setLayoutData(data);
			topArea.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
			
			gl = new GridLayout(2,false);
			gl.marginBottom=2;
			gl.marginTop=2;
			gl.marginHeight=0;
			gl.marginWidth=0;
			gl.marginLeft=5;
			gl.marginRight=2;
			
			topArea.setLayout(gl);
			
			Label l = new Label(topArea,SWT.NONE);
			l.setText(headerText);
			l.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
			l.setFont(JFaceResources.getFontRegistry().get(HEADER_FONT));
			l.setForeground(JFaceResources.getColorRegistry().get(HEADER_FG_COLOR));
			l.setLayoutData(new GridData(GridData.FILL_BOTH));
			
			Composite iconComp = new Composite(topArea,SWT.NONE);
			iconComp.setLayoutData(new GridData());
			iconComp.setLayout(new GridLayout(2,false));
			iconComp.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
			
			gl = new GridLayout(2,false);
			gl.marginBottom=0;
			gl.marginTop=0;
			gl.marginHeight=0;
			gl.marginWidth=0;
			gl.marginLeft=0;
			gl.marginRight=0;
			iconComp.setLayout(gl);
			
			Label helpIcon = new Label(iconComp,SWT.NONE);
			helpIcon.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
			helpIcon.setImage(JFaceResources.getImage(HEADER_HELP_ICON));
			helpIcon.addMouseListener(new MouseAdapter() {

				public void mouseDown(MouseEvent e) {
					hide();
					openHelp();
				}
			});
			
			
			Label closeIcon = new Label(iconComp,SWT.NONE);
			closeIcon.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR));
			closeIcon.setImage(JFaceResources.getImage(HEADER_CLOSE_ICON));
			closeIcon.addMouseListener(new MouseAdapter() {

				public void mouseDown(MouseEvent e) {
					parentShell.setFocus();
					hide();
				}
			});
			
			createContentArea(comp).setLayoutData(new GridData(GridData.FILL_BOTH));
			
			return comp;
		}
		
		protected Composite createContentArea(Composite parent) {
			return new Composite(parent,SWT.NONE);
		}
		
		protected void openHelp() {
			parentShell.setFocus();
		}
	}

	public Snippet020CustomizedControlTooltips(final Shell parent) {
		JFaceResources.getColorRegistry().put(MyToolTip.HEADER_BG_COLOR, new RGB(255,255,255));
		JFaceResources.getFontRegistry().put(MyToolTip.HEADER_FONT, JFaceResources.getFontRegistry().getBold(JFaceResources.getDefaultFont().getFontData()[0].getName()).getFontData());

		
		JFaceResources.getImageRegistry().put(MyToolTip.HEADER_CLOSE_ICON,ImageDescriptor.createFromFile(Snippet020CustomizedControlTooltips.class, "showerr_tsk.gif"));
		JFaceResources.getImageRegistry().put(MyToolTip.HEADER_HELP_ICON,ImageDescriptor.createFromFile(Snippet020CustomizedControlTooltips.class, "linkto_help.gif"));
		
		Text text = new Text(parent,SWT.BORDER);
		text.setText("Hello World");

		MyToolTip myTooltipLabel = new MyToolTip(text) {

			protected Composite createContentArea(Composite parent) {
				Composite comp = super.createContentArea(parent);
				comp.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
				FillLayout layout = new FillLayout();
				layout.marginWidth=5;
				comp.setLayout(layout);
				Link l = new Link(comp,SWT.NONE);
				l.setText("This a custom tooltip you can: \n- pop up any control you want\n- define delays\n - ... \nGo and get Eclipse M4 from <a>http://www.eclipse.org</a>");
				l.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND));
				l.addSelectionListener(new SelectionAdapter() {
					public void widgetSelected(SelectionEvent e) {
						openURL();
					}
				});
				return comp;
			}
			
			protected void openURL() {
				MessageBox box = new MessageBox(parent,SWT.ICON_INFORMATION);
				box.setText("Eclipse.org");
				box.setMessage("Here is where we'd open the URL.");
				box.open();
			}

			protected void openHelp() {
				MessageBox box = new MessageBox(parent,SWT.ICON_INFORMATION);
				box.setText("Info");
				box.setMessage("Here is where we'd show some information.");
				box.open();
			}
			
		};
		myTooltipLabel.setShift(new Point(-5, -5));
		myTooltipLabel.setHideOnMouseDown(false);
		myTooltipLabel.activate();

		text = new Text(parent,SWT.BORDER);
		text.setText("Hello World");
		DefaultToolTip toolTip = new DefaultToolTip(text);
		toolTip.setText("Hello World\nHello World");
		toolTip.setBackgroundColor(parent.getDisplay().getSystemColor(SWT.COLOR_RED));
		
		Button b = new Button(parent,SWT.PUSH);
		b.setText("Popup on press");
		
		final DefaultToolTip toolTipDelayed = new DefaultToolTip(b,ToolTip.RECREATE,true);
		toolTipDelayed.setText("Hello World\nHello World");
		toolTipDelayed.setBackgroundColor(parent.getDisplay().getSystemColor(SWT.COLOR_RED));
		toolTipDelayed.setHideDelay(2000);
		
		b.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				toolTipDelayed.show(new Point(0,0));
			}
		});
		
		
	}

	public static void main(String[] args) {
		Display display = new Display();

		Shell shell = new Shell(display);
		shell.setLayout(new RowLayout());
		new Snippet020CustomizedControlTooltips(shell);

		shell.open();

		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}

		display.dispose();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -