1 <html><head><title>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">/*
4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
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.
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;
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">"string"</span><span class="jsdoc-syntax">){
26 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">;
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">&& </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">"roodd-" </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">;
33 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">;
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):
45 Value Description<br />
46 --------- ------------------------------------------<br />
47 handles Array of DOM nodes that trigger dragging<br />
48 for the element being registered<br />
49 isHandle True if the element passed in triggers<br />
50 dragging itself, else false
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">"string"</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">);
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">;
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">< </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">;
71 </span><span class="jsdoc-comment">/**
72 * Unregister a drag drop element
73 * @param {String|HTMLElement} element The id or DOM node to unregister
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">< </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">)];
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
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">"string"</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">;
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">];
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
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">;
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
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">"string"</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">;
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">];
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
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">;
133 }();</span></code></body></html>