Bug 174844 [JFace] JFace ToolTip class should support manual activation
I have been using the new JFace ToolTip class for showing custom-draw tool tips for my tree items and works very nicely for that. Now I have another context that I need to use tool tips in. In this context, the tool tips need to be activated in response to an event other than mouse movement. To be specific, I want to popup a tool tip when user attempts to uncheck a tree item that shouldn't be unchecked. After the tool tip is displayed, I want standard tooltip behavior (times out, hides on mouse movement, etc.). It doesn't look like I can do that using the ToolTip class. Perhaps a base class can be pulled out from the ToolTip class. The base class would expose a protected show method and let a subclass take care of activation. The existing ToolTip class can then add activation based on mouse movement + delay. Other subclasses can then be made that implement alternative activation methods.
bundles/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
import org.eclipse.swt.widgets.Shell;
/**
 * This class gives implementors to provide customized tooltips for any control.
 * 
 * @since 3.3 <strong>EXPERIMENTAL</strong> This class or interface has been
 *        added as part of a work in progress. This API may change at any given
 *        time. Please do not use this API without consulting with the
 *        Platform/UI team.
 */
public abstract class ToolTip {
	private Control control;
	private int xShift = 3;
	private int yShift = 0;
	private int popupDelay = 0;
	private int hideDelay = 0;
	private ToolTipOwnerControlListener listener;
	private HashMap data;
	
	private static Shell CURRENT_TOOLTIP;
	private TooltipHideListener hideListener = new TooltipHideListener();
	private boolean hideOnMouseDown = true;
	private boolean respectDisplayBounds = true;
	private boolean respectMonitorBounds = true;
	/**
	 * Create new instance which add TooltipSupport to the widget
	 * 
	 * @param control
	 *            the control on whose action the tooltip is shown
	 */
	public ToolTip(Control control) {