Upgrade to ExtJS 4.0.7 - Released 10/19/2011
[extjs.git] / docs / source / QuickTipManager.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5   <title>The source code</title>
6   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
7   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
8   <style type="text/css">
9     .highlight { display: block; background-color: #ddd; }
10   </style>
11   <script type="text/javascript">
12     function highlight() {
13       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
14     }
15   </script>
16 </head>
17 <body onload="prettyPrint(); highlight();">
18   <pre class="prettyprint lang-js"><span id='Ext-tip-QuickTipManager'>/**
19 </span> * @class Ext.tip.QuickTipManager
20  *
21  * Provides attractive and customizable tooltips for any element. The QuickTips
22  * singleton is used to configure and manage tooltips globally for multiple elements
23  * in a generic manner.  To create individual tooltips with maximum customizability,
24  * you should consider either {@link Ext.tip.Tip} or {@link Ext.tip.ToolTip}.
25  *
26  * Quicktips can be configured via tag attributes directly in markup, or by
27  * registering quick tips programmatically via the {@link #register} method.
28  *
29  * The singleton's instance of {@link Ext.tip.QuickTip} is available via
30  * {@link #getQuickTip}, and supports all the methods, and all the all the
31  * configuration properties of Ext.tip.QuickTip. These settings will apply to all
32  * tooltips shown by the singleton.
33  *
34  * Below is the summary of the configuration properties which can be used.
35  * For detailed descriptions see the config options for the {@link Ext.tip.QuickTip QuickTip} class
36  *
37  * ## QuickTips singleton configs (all are optional)
38  *
39  *  - `dismissDelay`
40  *  - `hideDelay`
41  *  - `maxWidth`
42  *  - `minWidth`
43  *  - `showDelay`
44  *  - `trackMouse`
45  *
46  * ## Target element configs (optional unless otherwise noted)
47  *
48  *  - `autoHide`
49  *  - `cls`
50  *  - `dismissDelay` (overrides singleton value)
51  *  - `target` (required)
52  *  - `text` (required)
53  *  - `title`
54  *  - `width`
55  *
56  * Here is an example showing how some of these config options could be used:
57  *
58  *     @example
59  *     // Init the singleton.  Any tag-based quick tips will start working.
60  *     Ext.tip.QuickTipManager.init();
61  *
62  *     // Apply a set of config properties to the singleton
63  *     Ext.apply(Ext.tip.QuickTipManager.getQuickTip(), {
64  *         maxWidth: 200,
65  *         minWidth: 100,
66  *         showDelay: 50      // Show 50ms after entering target
67  *     });
68  *
69  *     // Create a small panel to add a quick tip to
70  *     Ext.create('Ext.container.Container', {
71  *         id: 'quickTipContainer',
72  *         width: 200,
73  *         height: 150,
74  *         style: {
75  *             backgroundColor:'#000000'
76  *         },
77  *         renderTo: Ext.getBody()
78  *     });
79  *
80  *
81  *     // Manually register a quick tip for a specific element
82  *     Ext.tip.QuickTipManager.register({
83  *         target: 'quickTipContainer',
84  *         title: 'My Tooltip',
85  *         text: 'This tooltip was added in code',
86  *         width: 100,
87  *         dismissDelay: 10000 // Hide after 10 seconds hover
88  *     });
89  *
90  * To register a quick tip in markup, you simply add one or more of the valid QuickTip attributes prefixed with
91  * the **data-** namespace.  The HTML element itself is automatically set as the quick tip target. Here is the summary
92  * of supported attributes (optional unless otherwise noted):
93  *
94  *  - `hide`: Specifying &quot;user&quot; is equivalent to setting autoHide = false.  Any other value will be the same as autoHide = true.
95  *  - `qclass`: A CSS class to be applied to the quick tip (equivalent to the 'cls' target element config).
96  *  - `qtip (required)`: The quick tip text (equivalent to the 'text' target element config).
97  *  - `qtitle`: The quick tip title (equivalent to the 'title' target element config).
98  *  - `qwidth`: The quick tip width (equivalent to the 'width' target element config).
99  *
100  * Here is an example of configuring an HTML element to display a tooltip from markup:
101  *
102  *     // Add a quick tip to an HTML button
103  *     &lt;input type=&quot;button&quot; value=&quot;OK&quot; data-qtitle=&quot;OK Button&quot; data-qwidth=&quot;100&quot;
104  *          data-qtip=&quot;This is a quick tip from markup!&quot;&gt;&lt;/input&gt;
105  *
106  * @singleton
107  */
108 Ext.define('Ext.tip.QuickTipManager', function() {
109     var tip,
110         disabled = false;
111
112     return {
113         requires: ['Ext.tip.QuickTip'],
114         singleton: true,
115         alternateClassName: 'Ext.QuickTips',
116
117 <span id='Ext-tip-QuickTipManager-method-init'>        /**
118 </span>         * Initialize the global QuickTips instance and prepare any quick tips.
119          * @param {Boolean} autoRender (optional) True to render the QuickTips container immediately to
120          * preload images. (Defaults to true)
121          * @param {Object} config (optional) config object for the created QuickTip. By
122          * default, the {@link Ext.tip.QuickTip QuickTip} class is instantiated, but this can
123          * be changed by supplying an xtype property or a className property in this object.
124          * All other properties on this object are configuration for the created component.
125          */
126         init : function (autoRender, config) {
127             if (!tip) {
128                 if (!Ext.isReady) {
129                     Ext.onReady(function(){
130                         Ext.tip.QuickTipManager.init(autoRender);
131                     });
132                     return;
133                 }
134
135                 var tipConfig = Ext.apply({ disabled: disabled }, config),
136                     className = tipConfig.className,
137                     xtype = tipConfig.xtype;
138
139                 if (className) {
140                     delete tipConfig.className;
141                 } else if (xtype) {
142                     className = 'widget.' + xtype;
143                     delete tipConfig.xtype;
144                 }
145
146                 if (autoRender !== false) {
147                     tipConfig.renderTo = document.body;
148
149                     //&lt;debug&gt;
150                     if (tipConfig.renderTo.tagName != 'BODY') { // e.g., == 'FRAMESET'
151                         Ext.Error.raise({
152                             sourceClass: 'Ext.tip.QuickTipManager',
153                             sourceMethod: 'init',
154                             msg: 'Cannot init QuickTipManager: no document body'
155                         });
156                     }
157                     //&lt;/debug&gt;
158                 }
159
160                 tip = Ext.create(className || 'Ext.tip.QuickTip', tipConfig);
161             }
162         },
163
164 <span id='Ext-tip-QuickTipManager-method-destroy'>        /**
165 </span>         * Destroy the QuickTips instance.
166          */
167         destroy: function() {
168             if (tip) {
169                 var undef;
170                 tip.destroy();
171                 tip = undef;
172             }
173         },
174
175         // Protected method called by the dd classes
176         ddDisable : function(){
177             // don't disable it if we don't need to
178             if(tip &amp;&amp; !disabled){
179                 tip.disable();
180             }
181         },
182
183         // Protected method called by the dd classes
184         ddEnable : function(){
185             // only enable it if it hasn't been disabled
186             if(tip &amp;&amp; !disabled){
187                 tip.enable();
188             }
189         },
190
191 <span id='Ext-tip-QuickTipManager-method-enable'>        /**
192 </span>         * Enable quick tips globally.
193          */
194         enable : function(){
195             if(tip){
196                 tip.enable();
197             }
198             disabled = false;
199         },
200
201 <span id='Ext-tip-QuickTipManager-method-disable'>        /**
202 </span>         * Disable quick tips globally.
203          */
204         disable : function(){
205             if(tip){
206                 tip.disable();
207             }
208             disabled = true;
209         },
210
211 <span id='Ext-tip-QuickTipManager-method-isEnabled'>        /**
212 </span>         * Returns true if quick tips are enabled, else false.
213          * @return {Boolean}
214          */
215         isEnabled : function(){
216             return tip !== undefined &amp;&amp; !tip.disabled;
217         },
218
219 <span id='Ext-tip-QuickTipManager-method-getQuickTip'>        /**
220 </span>         * Gets the single {@link Ext.tip.QuickTip QuickTip} instance used to show tips from all registered elements.
221          * @return {Ext.tip.QuickTip}
222          */
223         getQuickTip : function(){
224             return tip;
225         },
226
227 <span id='Ext-tip-QuickTipManager-method-register'>        /**
228 </span>         * Configures a new quick tip instance and assigns it to a target element.  See
229          * {@link Ext.tip.QuickTip#register} for details.
230          * @param {Object} config The config object
231          */
232         register : function(){
233             tip.register.apply(tip, arguments);
234         },
235
236 <span id='Ext-tip-QuickTipManager-method-unregister'>        /**
237 </span>         * Removes any registered quick tip from the target element and destroys it.
238          * @param {String/HTMLElement/Ext.Element} el The element from which the quick tip is to be removed or ID of the element.
239          */
240         unregister : function(){
241             tip.unregister.apply(tip, arguments);
242         },
243
244 <span id='Ext-tip-QuickTipManager-method-tips'>        /**
245 </span>         * Alias of {@link #register}.
246          * @param {Object} config The config object
247          */
248         tips : function(){
249             tip.register.apply(tip, arguments);
250         }
251     };
252 }());</pre>
253 </body>
254 </html>