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
if (respectDisplayBounds || respectMonitorBounds) {
			Rectangle bounds;
			Point rightBounds = new Point(tipSize.x + location.x, tipSize.y
					+ location.y);
			
			Monitor[] ms = control.getDisplay().getMonitors();
			
			if (respectMonitorBounds && ms.length > 1) {
				
				bounds = control.getMonitor().getBounds();
				Point p = new Point(location.x,location.y);
				
				
				Rectangle tmp;
				for( int i = 0; i < ms.length; i++ ) {
					tmp = ms[i].getBounds();
					if( tmp.contains(p) ) {
						bounds = tmp;
						break;
					}
				}
				
			} else {
				bounds = control.getDisplay().getBounds();
			}
			if (!(bounds.contains(location) && bounds.contains(rightBounds))) {
				if (rightBounds.x > bounds.width) {
					location.x -= rightBounds.x - bounds.width;
				}
				if (rightBounds.y > bounds.height) {