Mercurial > projects > dwt-samples
diff jface/snippets/window/Snippet020CustomizedControlTooltips.d @ 146:7c4b76583cb8
Added new JFace snippets
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 11 Aug 2008 11:17:37 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jface/snippets/window/Snippet020CustomizedControlTooltips.d Mon Aug 11 11:17:37 2008 +0200 @@ -0,0 +1,261 @@ +/******************************************************************************* + * 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 + *******************************************************************************/ + +module dwtx.jface.snippets.window.Snippet020CustomizedControlTooltips; + + +import dwtx.jface.resource.ImageDescriptor; +import dwtx.jface.resource.JFaceResources; +import dwtx.jface.util.Policy; +import dwtx.jface.window.DefaultToolTip; +import dwtx.jface.window.ToolTip; +import dwt.DWT; +import dwt.events.MouseAdapter; +import dwt.events.MouseEvent; +import dwt.events.SelectionAdapter; +import dwt.events.SelectionEvent; +import dwt.events.SelectionListener; +import dwt.graphics.Point; +import dwt.graphics.RGB; +import dwt.layout.FillLayout; +import dwt.layout.GridData; +import dwt.layout.GridLayout; +import dwt.layout.RowLayout; +import dwt.widgets.Button; +import dwt.widgets.Composite; +import dwt.widgets.Control; +import dwt.widgets.Display; +import dwt.widgets.Event; +import dwt.widgets.Label; +import dwt.widgets.Link; +import dwt.widgets.MessageBox; +import dwt.widgets.Shell; +import dwt.widgets.Text; + +import dwt.dwthelper.utils; +version(JIVE) import jive.stacktrace; + +/** + * Demonstrate usage of custom toolstips for controls + * + * @author Tom Schindl + * + */ +public class Snippet020CustomizedControlTooltips { + protected class MyToolTip : ToolTip { + + private Shell parentShell; + + private String headerText = "ToolTip-Header"; + + public static const String HEADER_BG_COLOR = Policy.JFACE ~ ".TOOLTIP_HEAD_BG_COLOR"; + + public static const String HEADER_FG_COLOR = Policy.JFACE ~ ".TOOLTIP_HEAD_FG_COLOR"; + + public static const String HEADER_FONT = Policy.JFACE ~ ".TOOLTIP_HEAD_FONT"; + + public static const String HEADER_CLOSE_ICON = Policy.JFACE ~ ".TOOLTIP_CLOSE_ICON"; + public static const String HEADER_HELP_ICON = Policy.JFACE ~ ".TOOLTIP_HELP_ICON"; + + public this(Control control) { + super(control); + this.parentShell = control.getShell(); + } + + protected Composite createToolTipContentArea(Event event, + Composite parent) { + Composite comp = new Composite(parent,DWT.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,DWT.NONE); + GridData data = new GridData(DWT.FILL,DWT.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,DWT.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,DWT.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,DWT.NONE); + helpIcon.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR)); + helpIcon.setImage(JFaceResources.getImage(HEADER_HELP_ICON)); + helpIcon.addMouseListener(new class MouseAdapter { + + public void mouseDown(MouseEvent e) { + hide(); + openHelp(); + } + }); + + + Label closeIcon = new Label(iconComp,DWT.NONE); + closeIcon.setBackground(JFaceResources.getColorRegistry().get(HEADER_BG_COLOR)); + closeIcon.setImage(JFaceResources.getImage(HEADER_CLOSE_ICON)); + closeIcon.addMouseListener(new class 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,DWT.NONE); + } + + protected void openHelp() { + parentShell.setFocus(); + } + } + + class MyToolTip2 : MyToolTip { + public this(Control control) { + super(control); + } + protected Composite createContentArea(Composite parent) { + Composite comp = super.createContentArea(parent); + comp.setBackground(parent.getDisplay().getSystemColor(DWT.COLOR_INFO_BACKGROUND)); + FillLayout layout = new FillLayout(); + layout.marginWidth=5; + comp.setLayout(layout); + Link l = new Link(comp,DWT.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(DWT.COLOR_INFO_BACKGROUND)); + l.addSelectionListener(new class SelectionAdapter { + public void widgetSelected(SelectionEvent e) { + openURL(); + } + }); + return comp; + } + + protected void openURL() { + MessageBox box = new MessageBox(parent,DWT.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,DWT.ICON_INFORMATION); + box.setText("Info"); + box.setMessage("Here is where we'd show some information."); + box.open(); + } + + }; + Shell parent; + DefaultToolTip toolTipDelayed; + + public this(Shell parent_) { + this.parent = 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(getImportData!("jface.snippets.showerr_tsk.gif"))); + JFaceResources.getImageRegistry().put(MyToolTip.HEADER_HELP_ICON,ImageDescriptor.createFromFile(getImportData!("jface.snippets.linkto_help.gif"))); + + Text text = new Text(parent,DWT.BORDER); + text.setText("Hello World"); + + MyToolTip myTooltipLabel = new MyToolTip2(text); + myTooltipLabel.setShift(new Point(-5, -5)); + myTooltipLabel.setHideOnMouseDown(false); + myTooltipLabel.activate(); + + text = new Text(parent,DWT.BORDER); + text.setText("Hello World"); + DefaultToolTip toolTip = new DefaultToolTip(text); + toolTip.setText("Hello World\nHello World"); + toolTip.setBackgroundColor(parent.getDisplay().getSystemColor(DWT.COLOR_RED)); + + Button b = new Button(parent,DWT.PUSH); + b.setText("Popup on press"); + + toolTipDelayed = new DefaultToolTip(b,ToolTip.RECREATE,true); + toolTipDelayed.setText("Hello World\nHello World"); + toolTipDelayed.setBackgroundColor(parent.getDisplay().getSystemColor(DWT.COLOR_RED)); + toolTipDelayed.setHideDelay(2000); + + b.addSelectionListener(new class 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(); + } +} + +void main(){ + Snippet020CustomizedControlTooltips.main(null); +} +