r20517: re-add cleaned-up webapps
[sfrench/samba-autobuild/.git] / webapps / qooxdoo-0.6.3-sdk / frontend / framework / source / class / qx / manager / object / ToolTipManager.js
1 /* ************************************************************************
2
3    qooxdoo - the new era of web development
4
5    http://qooxdoo.org
6
7    Copyright:
8      2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
9
10    License:
11      LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
12
13    Authors:
14      * Sebastian Werner (wpbasti)
15      * Andreas Ecker (ecker)
16
17 ************************************************************************ */
18
19 /* ************************************************************************
20
21 #module(ui_popup)
22
23 ************************************************************************ */
24
25 /*!
26   This manages ToolTip instances
27 */
28 qx.OO.defineClass("qx.manager.object.ToolTipManager", qx.manager.object.ObjectManager,
29 function() {
30   qx.manager.object.ObjectManager.call(this);
31 });
32
33 qx.OO.addProperty({ name : "currentToolTip", type : "object", instance : "qx.ui.popup.ToolTip" });
34
35
36
37
38
39
40 /*
41 ---------------------------------------------------------------------------
42   MODIFIER
43 ---------------------------------------------------------------------------
44 */
45
46 qx.Proto._modifyCurrentToolTip = function(propValue, propOldValue, propData)
47 {
48   // Return if the new tooltip is a child of the old one
49   if(propOldValue && propOldValue.contains(propValue)) {
50     return;
51   }
52
53   // If old tooltip existing, hide it and clear widget binding
54   if(propOldValue)
55   {
56     propOldValue.hide();
57
58     propOldValue._stopShowTimer();
59     propOldValue._stopHideTimer();
60   }
61
62   // If new tooltip is not null, set it up and start the timer
63   if(propValue) {
64     propValue._startShowTimer();
65   }
66
67   return true;
68 }
69
70
71
72
73
74 /*
75 ---------------------------------------------------------------------------
76   EVENT INTERFACE: MOUSE
77 ---------------------------------------------------------------------------
78 */
79
80 qx.Proto.handleMouseOver = function(e)
81 {
82   var vTarget = e.getTarget();
83   var vToolTip;
84
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);
88   }
89
90   //Search first parent which has a tooltip
91   while(vTarget != null && !(vToolTip = vTarget.getToolTip())) {
92     vTarget = vTarget.getParent();
93   }
94
95   // Bind tooltip to widget
96   if (vToolTip != null) {
97     vToolTip.setBoundToWidget(vTarget);
98   }
99
100   // Set Property
101   this.setCurrentToolTip(vToolTip);
102 }
103
104 qx.Proto.handleMouseOut = function(e)
105 {
106   var vTarget = e.getTarget();
107   var vRelatedTarget = e.getRelatedTarget();
108
109   var vToolTip = this.getCurrentToolTip();
110
111   // If there was a tooltip and
112   // - the destination target is the current tooltip
113   //   or
114   // - the current tooltip contains the destination target
115   if(vToolTip && (vRelatedTarget == vToolTip || vToolTip.contains(vRelatedTarget))) {
116     return;
117   }
118
119   // If the destination target exists and the target contains it
120   if(vRelatedTarget && vTarget && vTarget.contains(vRelatedTarget)) {
121     return;
122   }
123
124   // If there was a tooltip and there is no new one
125   if(vToolTip && !vRelatedTarget) {
126     this.setCurrentToolTip(null);
127   }
128 }
129
130
131
132
133
134
135
136 /*
137 ---------------------------------------------------------------------------
138   EVENT INTERFACE: FOCUS
139 ---------------------------------------------------------------------------
140 */
141
142 qx.Proto.handleFocus = function(e)
143 {
144   var vTarget = e.getTarget();
145   var vToolTip = vTarget.getToolTip();
146
147   // Only set new tooltip if focus widget
148   // has one
149   if(vToolTip != null)
150   {
151     // Bind tooltip to widget
152     vToolTip.setBoundToWidget(vTarget);
153
154     // Set Property
155     this.setCurrentToolTip(vToolTip);
156   }
157 }
158
159 qx.Proto.handleBlur = function(e)
160 {
161   var vTarget = e.getTarget();
162
163   if(!vTarget) {
164     return;
165   }
166
167   var vToolTip = this.getCurrentToolTip();
168
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);
173   }
174 }
175
176
177
178
179
180
181
182 /*
183 ---------------------------------------------------------------------------
184   DEFER SINGLETON INSTANCE
185 ---------------------------------------------------------------------------
186 */
187
188 /**
189  * Singleton Instance Getter
190  */
191 qx.Class.getInstance = qx.util.Return.returnInstance;