Fix #5718 - Change the order / layout of tabs. / new master lists
[roojs1] / docs / src / Roo_dd_Registry.js.html
1 <html><head><title>/home/edward/gitlive/roojs1/Roo/dd/Registry.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12
13 /**
14  * @class Roo.dd.Registry
15  * Provides easy access to all drag drop components that are registered on a page.  Items can be retrieved either
16  * directly by DOM node id, or by passing in the drag drop event that occurred and looking up the event target.
17  * @singleton
18  */
19 </span><span class="jsdoc-var">Roo.dd.Registry </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
20     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">elements </span><span class="jsdoc-syntax">= {};
21     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">handles </span><span class="jsdoc-syntax">= {};
22     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">autoIdSeed </span><span class="jsdoc-syntax">= 0;
23
24     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">getId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">autogen</span><span class="jsdoc-syntax">){
25         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
26             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">;
27         }
28         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.id</span><span class="jsdoc-syntax">;
29         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">autogen </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
30             </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;roodd-&quot; </span><span class="jsdoc-syntax">+ (++</span><span class="jsdoc-var">autoIdSeed</span><span class="jsdoc-syntax">);
31             </span><span class="jsdoc-var">el.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
32         }
33         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
34     };
35
36     </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{
37     </span><span class="jsdoc-comment">/**
38      * Register a drag drop element
39      * @param {String|HTMLElement} element The id or DOM node to register
40      * @param {Object} data (optional) A custom data object that will be passed between the elements that are involved
41      * in drag drop operations.  You can populate this object with any arbitrary properties that your own code
42      * knows how to interpret, plus there are some specific properties known to the Registry that should be
43      * populated in the data object (if applicable):
44      * &lt;pre&gt;
45 Value      Description&lt;br /&gt;
46 ---------  ------------------------------------------&lt;br /&gt;
47 handles    Array of DOM nodes that trigger dragging&lt;br /&gt;
48            for the element being registered&lt;br /&gt;
49 isHandle   True if the element passed in triggers&lt;br /&gt;
50            dragging itself, else false
51 &lt;/pre&gt;
52      */
53         </span><span class="jsdoc-var">register </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){
54             </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">|| {};
55             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
56                 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.getElementById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
57             }
58             </span><span class="jsdoc-var">data.ddel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">;
59             </span><span class="jsdoc-var">elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">getId</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">)] = </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">;
60             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data.isHandle </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
61                 </span><span class="jsdoc-var">handles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">data.ddel.id</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">;
62             }
63             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data.handles</span><span class="jsdoc-syntax">){
64                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.handles</span><span class="jsdoc-syntax">;
65                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hs.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
66                         </span><span class="jsdoc-var">handles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">getId</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">])] = </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">;
67                 }
68             }
69         },
70
71     </span><span class="jsdoc-comment">/**
72      * Unregister a drag drop element
73      * @param {String|HTMLElement}  element The id or DOM node to unregister
74      */
75         </span><span class="jsdoc-var">unregister </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
76             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">getId</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
77             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
78             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){
79                 </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
80                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data.handles</span><span class="jsdoc-syntax">){
81                     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.handles</span><span class="jsdoc-syntax">;
82                     </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hs.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
83                         </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">handles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">getId</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">hs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">)];
84                     }
85                 }
86             }
87         },
88
89     </span><span class="jsdoc-comment">/**
90      * Returns the handle registered for a DOM Node by id
91      * @param {String|HTMLElement} id The DOM node or id to look up
92      * @return {Object} handle The custom handle data
93      */
94         </span><span class="jsdoc-var">getHandle </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
95             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// must be element?
96                 </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id.id</span><span class="jsdoc-syntax">;
97             }
98             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">handles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
99         },
100
101     </span><span class="jsdoc-comment">/**
102      * Returns the handle that is registered for the DOM node that is the target of the event
103      * @param {Event} e The event
104      * @return {Object} handle The custom handle data
105      */
106         </span><span class="jsdoc-var">getHandleFromEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
107             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Event.getTarget</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
108             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">handles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">t.id</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
109         },
110
111     </span><span class="jsdoc-comment">/**
112      * Returns a custom data object that is registered for a DOM node by id
113      * @param {String|HTMLElement} id The DOM node or id to look up
114      * @return {Object} data The custom data
115      */
116         </span><span class="jsdoc-var">getTarget </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
117             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-comment">// must be element?
118                 </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">id.id</span><span class="jsdoc-syntax">;
119             }
120             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
121         },
122
123     </span><span class="jsdoc-comment">/**
124      * Returns a custom data object that is registered for the DOM node that is the target of the event
125      * @param {Event} e The event
126      * @return {Object} data The custom data
127      */
128         </span><span class="jsdoc-var">getTargetFromEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
129             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Event.getTarget</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
130             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">elements</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">t.id</span><span class="jsdoc-syntax">] || </span><span class="jsdoc-var">handles</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">t.id</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
131         }
132     };
133 }();</span></code></body></html>