blob: 6cb2caa9c35bdc8aaf4224c2aec743740923766e [file] [log] [blame]
/*******************************************************************************
* 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();
}
}