1 /* ************************************************************************
3 qooxdoo - the new era of web development
8 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
11 LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
14 * Sebastian Werner (wpbasti)
15 * Andreas Ecker (ecker)
17 ************************************************************************ */
19 /* ************************************************************************
23 ************************************************************************ */
26 This manages ToolTip instances
28 qx.OO.defineClass("qx.manager.object.ToolTipManager", qx.manager.object.ObjectManager,
30 qx.manager.object.ObjectManager.call(this);
33 qx.OO.addProperty({ name : "currentToolTip", type : "object", instance : "qx.ui.popup.ToolTip" });
41 ---------------------------------------------------------------------------
43 ---------------------------------------------------------------------------
46 qx.Proto._modifyCurrentToolTip = function(propValue, propOldValue, propData)
48 // Return if the new tooltip is a child of the old one
49 if(propOldValue && propOldValue.contains(propValue)) {
53 // If old tooltip existing, hide it and clear widget binding
58 propOldValue._stopShowTimer();
59 propOldValue._stopHideTimer();
62 // If new tooltip is not null, set it up and start the timer
64 propValue._startShowTimer();
75 ---------------------------------------------------------------------------
76 EVENT INTERFACE: MOUSE
77 ---------------------------------------------------------------------------
80 qx.Proto.handleMouseOver = function(e)
82 var vTarget = e.getTarget();
85 // Allows us to use DOM Nodes as tooltip target :)
86 if (!(vTarget instanceof qx.ui.core.Widget) && vTarget.nodeType == 1) {
87 vTarget = qx.event.handler.EventHandler.getTargetObject(vTarget);
90 //Search first parent which has a tooltip
91 while(vTarget != null && !(vToolTip = vTarget.getToolTip())) {
92 vTarget = vTarget.getParent();
95 // Bind tooltip to widget
96 if (vToolTip != null) {
97 vToolTip.setBoundToWidget(vTarget);
101 this.setCurrentToolTip(vToolTip);
104 qx.Proto.handleMouseOut = function(e)
106 var vTarget = e.getTarget();
107 var vRelatedTarget = e.getRelatedTarget();
109 var vToolTip = this.getCurrentToolTip();
111 // If there was a tooltip and
112 // - the destination target is the current tooltip
114 // - the current tooltip contains the destination target
115 if(vToolTip && (vRelatedTarget == vToolTip || vToolTip.contains(vRelatedTarget))) {
119 // If the destination target exists and the target contains it
120 if(vRelatedTarget && vTarget && vTarget.contains(vRelatedTarget)) {
124 // If there was a tooltip and there is no new one
125 if(vToolTip && !vRelatedTarget) {
126 this.setCurrentToolTip(null);
137 ---------------------------------------------------------------------------
138 EVENT INTERFACE: FOCUS
139 ---------------------------------------------------------------------------
142 qx.Proto.handleFocus = function(e)
144 var vTarget = e.getTarget();
145 var vToolTip = vTarget.getToolTip();
147 // Only set new tooltip if focus widget
151 // Bind tooltip to widget
152 vToolTip.setBoundToWidget(vTarget);
155 this.setCurrentToolTip(vToolTip);
159 qx.Proto.handleBlur = function(e)
161 var vTarget = e.getTarget();
167 var vToolTip = this.getCurrentToolTip();
169 // Only set to null if blured widget is the
170 // one which has created the current tooltip
171 if(vToolTip && vToolTip == vTarget.getToolTip()) {
172 this.setCurrentToolTip(null);
183 ---------------------------------------------------------------------------
184 DEFER SINGLETON INSTANCE
185 ---------------------------------------------------------------------------
189 * Singleton Instance Getter
191 qx.Class.getInstance = qx.util.Return.returnInstance;