ef9e74fbf98c3b986d96f96c9a23afd12296b936
[roojs1] / docs / src / Roo_dd_DragSource.js.html
1 <html><head><title>/home/edward/gitlive/roojs1/Roo/dd/DragSource.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  * @class Roo.dd.DragSource
14  * @extends Roo.dd.DDProxy
15  * A simple class that provides the basic implementation needed to make any element draggable.
16  * @constructor
17  * @param {String/HTMLElement/Element} el The container element
18  * @param {Object} config
19  */
20 </span><span class="jsdoc-var">Roo.dd.DragSource </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">config</span><span class="jsdoc-syntax">){
21     </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
22     </span><span class="jsdoc-var">this.dragData </span><span class="jsdoc-syntax">= {};
23
24     </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
25
26     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.proxy</span><span class="jsdoc-syntax">){
27         </span><span class="jsdoc-var">this.proxy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.dd.StatusProxy</span><span class="jsdoc-syntax">();
28     }
29
30     </span><span class="jsdoc-var">Roo.dd.DragSource.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.ddGroup </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.group</span><span class="jsdoc-syntax">,
31           {</span><span class="jsdoc-var">dragElId </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.proxy.id</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">resizeFrame</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">isTarget</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scroll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.scroll </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">});
32
33     </span><span class="jsdoc-var">this.dragging </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
34 };
35
36 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.dd.DragSource</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.dd.DDProxy</span><span class="jsdoc-syntax">, {
37     </span><span class="jsdoc-comment">/**
38      * @cfg {String} dropAllowed
39      * The CSS class returned to the drag source when drop is allowed (defaults to &quot;x-dd-drop-ok&quot;).
40      */
41     </span><span class="jsdoc-var">dropAllowed </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-dd-drop-ok&quot;</span><span class="jsdoc-syntax">,
42     </span><span class="jsdoc-comment">/**
43      * @cfg {String} dropNotAllowed
44      * The CSS class returned to the drag source when drop is not allowed (defaults to &quot;x-dd-drop-nodrop&quot;).
45      */
46     </span><span class="jsdoc-var">dropNotAllowed </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-dd-drop-nodrop&quot;</span><span class="jsdoc-syntax">,
47
48     </span><span class="jsdoc-comment">/**
49      * Returns the data object associated with this drag source
50      * @return {Object} data An object containing arbitrary data
51      */
52     </span><span class="jsdoc-var">getDragData </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">){
53         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">;
54     },
55
56     </span><span class="jsdoc-comment">// private
57     </span><span class="jsdoc-var">onDragEnter </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">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
58         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.dd.DragDropMgr.getDDById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
59         </span><span class="jsdoc-var">this.cachedTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">;
60         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.beforeDragEnter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
61             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target.isNotifyTarget</span><span class="jsdoc-syntax">){
62                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">status </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">target.notifyEnter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">);
63                 </span><span class="jsdoc-var">this.proxy.setStatus</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">status</span><span class="jsdoc-syntax">);
64             }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
65                 </span><span class="jsdoc-var">this.proxy.setStatus</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropAllowed</span><span class="jsdoc-syntax">);
66             }
67
68             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.afterDragEnter</span><span class="jsdoc-syntax">){
69                 </span><span class="jsdoc-comment">/**
70                  * An empty function by default, but provided so that you can perform a custom action
71                  * when the dragged item enters the drop target by providing an implementation.
72                  * @param {Roo.dd.DragDrop} target The drop target
73                  * @param {Event} e The event object
74                  * @param {String} id The id of the dragged element
75                  * @method afterDragEnter
76                  */
77                 </span><span class="jsdoc-var">this.afterDragEnter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
78             }
79         }
80     },
81
82     </span><span class="jsdoc-comment">/**
83      * An empty function by default, but provided so that you can perform a custom action
84      * before the dragged item enters the drop target and optionally cancel the onDragEnter.
85      * @param {Roo.dd.DragDrop} target The drop target
86      * @param {Event} e The event object
87      * @param {String} id The id of the dragged element
88      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
89      */
90     </span><span class="jsdoc-var">beforeDragEnter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
91         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
92     },
93
94     </span><span class="jsdoc-comment">// private
95     </span><span class="jsdoc-var">alignElWithMouse</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
96         </span><span class="jsdoc-var">Roo.dd.DragSource.superclass.alignElWithMouse.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
97         </span><span class="jsdoc-var">this.proxy.sync</span><span class="jsdoc-syntax">();
98     },
99
100     </span><span class="jsdoc-comment">// private
101     </span><span class="jsdoc-var">onDragOver </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">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
102         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cachedTarget </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.dd.DragDropMgr.getDDById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
103         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.beforeDragOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
104             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target.isNotifyTarget</span><span class="jsdoc-syntax">){
105                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">status </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">target.notifyOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">);
106                 </span><span class="jsdoc-var">this.proxy.setStatus</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">status</span><span class="jsdoc-syntax">);
107             }
108
109             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.afterDragOver</span><span class="jsdoc-syntax">){
110                 </span><span class="jsdoc-comment">/**
111                  * An empty function by default, but provided so that you can perform a custom action
112                  * while the dragged item is over the drop target by providing an implementation.
113                  * @param {Roo.dd.DragDrop} target The drop target
114                  * @param {Event} e The event object
115                  * @param {String} id The id of the dragged element
116                  * @method afterDragOver
117                  */
118                 </span><span class="jsdoc-var">this.afterDragOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
119             }
120         }
121     },
122
123     </span><span class="jsdoc-comment">/**
124      * An empty function by default, but provided so that you can perform a custom action
125      * while the dragged item is over the drop target and optionally cancel the onDragOver.
126      * @param {Roo.dd.DragDrop} target The drop target
127      * @param {Event} e The event object
128      * @param {String} id The id of the dragged element
129      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
130      */
131     </span><span class="jsdoc-var">beforeDragOver </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
132         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
133     },
134
135     </span><span class="jsdoc-comment">// private
136     </span><span class="jsdoc-var">onDragOut </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">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
137         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cachedTarget </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.dd.DragDropMgr.getDDById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
138         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.beforeDragOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
139             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target.isNotifyTarget</span><span class="jsdoc-syntax">){
140                 </span><span class="jsdoc-var">target.notifyOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">);
141             }
142             </span><span class="jsdoc-var">this.proxy.reset</span><span class="jsdoc-syntax">();
143             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.afterDragOut</span><span class="jsdoc-syntax">){
144                 </span><span class="jsdoc-comment">/**
145                  * An empty function by default, but provided so that you can perform a custom action
146                  * after the dragged item is dragged out of the target without dropping.
147                  * @param {Roo.dd.DragDrop} target The drop target
148                  * @param {Event} e The event object
149                  * @param {String} id The id of the dragged element
150                  * @method afterDragOut
151                  */
152                 </span><span class="jsdoc-var">this.afterDragOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
153             }
154         }
155         </span><span class="jsdoc-var">this.cachedTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
156     },
157
158     </span><span class="jsdoc-comment">/**
159      * An empty function by default, but provided so that you can perform a custom action before the dragged
160      * item is dragged out of the target without dropping, and optionally cancel the onDragOut.
161      * @param {Roo.dd.DragDrop} target The drop target
162      * @param {Event} e The event object
163      * @param {String} id The id of the dragged element
164      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
165      */
166     </span><span class="jsdoc-var">beforeDragOut </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
167         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
168     },
169
170     </span><span class="jsdoc-comment">// private
171     </span><span class="jsdoc-var">onDragDrop </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">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
172         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.cachedTarget </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">Roo.dd.DragDropMgr.getDDById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
173         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.beforeDragDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
174             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target.isNotifyTarget</span><span class="jsdoc-syntax">){
175                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target.notifyDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">)){ </span><span class="jsdoc-comment">// valid drop?
176                     </span><span class="jsdoc-var">this.onValidDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
177                 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
178                     </span><span class="jsdoc-var">this.onInvalidDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
179                 }
180             }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
181                 </span><span class="jsdoc-var">this.onValidDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
182             }
183
184             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.afterDragDrop</span><span class="jsdoc-syntax">){
185                 </span><span class="jsdoc-comment">/**
186                  * An empty function by default, but provided so that you can perform a custom action
187                  * after a valid drag drop has occurred by providing an implementation.
188                  * @param {Roo.dd.DragDrop} target The drop target
189                  * @param {Event} e The event object
190                  * @param {String} id The id of the dropped element
191                  * @method afterDragDrop
192                  */
193                 </span><span class="jsdoc-var">this.afterDragDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
194             }
195         }
196         </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.cachedTarget</span><span class="jsdoc-syntax">;
197     },
198
199     </span><span class="jsdoc-comment">/**
200      * An empty function by default, but provided so that you can perform a custom action before the dragged
201      * item is dropped onto the target and optionally cancel the onDragDrop.
202      * @param {Roo.dd.DragDrop} target The drop target
203      * @param {Event} e The event object
204      * @param {String} id The id of the dragged element
205      * @return {Boolean} isValid True if the drag drop event is valid, else false to cancel
206      */
207     </span><span class="jsdoc-var">beforeDragDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
208         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
209     },
210
211     </span><span class="jsdoc-comment">// private
212     </span><span class="jsdoc-var">onValidDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
213         </span><span class="jsdoc-var">this.hideProxy</span><span class="jsdoc-syntax">();
214         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.afterValidDrop</span><span class="jsdoc-syntax">){
215             </span><span class="jsdoc-comment">/**
216              * An empty function by default, but provided so that you can perform a custom action
217              * after a valid drop has occurred by providing an implementation.
218              * @param {Object} target The target DD 
219              * @param {Event} e The event object
220              * @param {String} id The id of the dropped element
221              * @method afterInvalidDrop
222              */
223             </span><span class="jsdoc-var">this.afterValidDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
224         }
225     },
226
227     </span><span class="jsdoc-comment">// private
228     </span><span class="jsdoc-var">getRepairXY </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">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){
229         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.el.getXY</span><span class="jsdoc-syntax">();
230     },
231
232     </span><span class="jsdoc-comment">// private
233     </span><span class="jsdoc-var">onInvalidDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
234         </span><span class="jsdoc-var">this.beforeInvalidDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
235         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.cachedTarget</span><span class="jsdoc-syntax">){
236             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.cachedTarget.isNotifyTarget</span><span class="jsdoc-syntax">){
237                 </span><span class="jsdoc-var">this.cachedTarget.notifyOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">);
238             }
239             </span><span class="jsdoc-var">this.cacheTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
240         }
241         </span><span class="jsdoc-var">this.proxy.repair</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getRepairXY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">this.afterRepair</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
242
243         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.afterInvalidDrop</span><span class="jsdoc-syntax">){
244             </span><span class="jsdoc-comment">/**
245              * An empty function by default, but provided so that you can perform a custom action
246              * after an invalid drop has occurred by providing an implementation.
247              * @param {Event} e The event object
248              * @param {String} id The id of the dropped element
249              * @method afterInvalidDrop
250              */
251             </span><span class="jsdoc-var">this.afterInvalidDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
252         }
253     },
254
255     </span><span class="jsdoc-comment">// private
256     </span><span class="jsdoc-var">afterRepair </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
257         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.enableFx</span><span class="jsdoc-syntax">){
258             </span><span class="jsdoc-var">this.el.highlight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.hlColor </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;c3daf9&quot;</span><span class="jsdoc-syntax">);
259         }
260         </span><span class="jsdoc-var">this.dragging </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
261     },
262
263     </span><span class="jsdoc-comment">/**
264      * An empty function by default, but provided so that you can perform a custom action after an invalid
265      * drop has occurred.
266      * @param {Roo.dd.DragDrop} target The drop target
267      * @param {Event} e The event object
268      * @param {String} id The id of the dragged element
269      * @return {Boolean} isValid True if the invalid drop should proceed, else false to cancel
270      */
271     </span><span class="jsdoc-var">beforeInvalidDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
272         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
273     },
274
275     </span><span class="jsdoc-comment">// private
276     </span><span class="jsdoc-var">handleMouseDown </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">){
277         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragging</span><span class="jsdoc-syntax">) {
278             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
279         }
280         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getDragData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
281         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.onBeforeDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
282             </span><span class="jsdoc-var">this.dragData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">;
283             </span><span class="jsdoc-var">this.proxy.stop</span><span class="jsdoc-syntax">();
284             </span><span class="jsdoc-var">Roo.dd.DragSource.superclass.handleMouseDown.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
285         }
286     },
287
288     </span><span class="jsdoc-comment">/**
289      * An empty function by default, but provided so that you can perform a custom action before the initial
290      * drag event begins and optionally cancel it.
291      * @param {Object} data An object containing arbitrary data to be shared with drop targets
292      * @param {Event} e The event object
293      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
294      */
295     </span><span class="jsdoc-var">onBeforeDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
296         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
297     },
298
299     </span><span class="jsdoc-comment">/**
300      * An empty function by default, but provided so that you can perform a custom action once the initial
301      * drag event has begun.  The drag cannot be canceled from this function.
302      * @param {Number} x The x position of the click on the dragged object
303      * @param {Number} y The y position of the click on the dragged object
304      */
305     </span><span class="jsdoc-var">onStartDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
306
307     </span><span class="jsdoc-comment">// private - YUI override
308     </span><span class="jsdoc-var">startDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">){
309         </span><span class="jsdoc-var">this.proxy.reset</span><span class="jsdoc-syntax">();
310         </span><span class="jsdoc-var">this.dragging </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
311         </span><span class="jsdoc-var">this.proxy.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">);
312         </span><span class="jsdoc-var">this.onInitDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
313         </span><span class="jsdoc-var">this.proxy.show</span><span class="jsdoc-syntax">();
314     },
315
316     </span><span class="jsdoc-comment">// private
317     </span><span class="jsdoc-var">onInitDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">){
318         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">clone </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.dom.cloneNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
319         </span><span class="jsdoc-var">clone.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">// prevent duplicate ids
320         </span><span class="jsdoc-var">this.proxy.update</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">clone</span><span class="jsdoc-syntax">);
321         </span><span class="jsdoc-var">this.onStartDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
322         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
323     },
324
325     </span><span class="jsdoc-comment">/**
326      * Returns the drag source's underlying {@link Roo.dd.StatusProxy}
327      * @return {Roo.dd.StatusProxy} proxy The StatusProxy
328      */
329     </span><span class="jsdoc-var">getProxy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
330         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.proxy</span><span class="jsdoc-syntax">;
331     },
332
333     </span><span class="jsdoc-comment">/**
334      * Hides the drag source's {@link Roo.dd.StatusProxy}
335      */
336     </span><span class="jsdoc-var">hideProxy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
337         </span><span class="jsdoc-var">this.proxy.hide</span><span class="jsdoc-syntax">();
338         </span><span class="jsdoc-var">this.proxy.reset</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
339         </span><span class="jsdoc-var">this.dragging </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
340     },
341
342     </span><span class="jsdoc-comment">// private
343     </span><span class="jsdoc-var">triggerCacheRefresh </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
344         </span><span class="jsdoc-var">Roo.dd.DDM.refreshCache</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.groups</span><span class="jsdoc-syntax">);
345     },
346
347     </span><span class="jsdoc-comment">// private - override to prevent hiding
348     </span><span class="jsdoc-var">b4EndDrag</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">) {
349     },
350
351     </span><span class="jsdoc-comment">// private - override to prevent moving
352     </span><span class="jsdoc-var">endDrag </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">){
353         </span><span class="jsdoc-var">this.onEndDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragData</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
354     },
355
356     </span><span class="jsdoc-comment">// private
357     </span><span class="jsdoc-var">onEndDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
358     },
359
360     </span><span class="jsdoc-comment">// private - pin to cursor
361     </span><span class="jsdoc-var">autoOffset </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">) {
362         </span><span class="jsdoc-var">this.setDelta</span><span class="jsdoc-syntax">(-12, -20);
363     }
364 });</span></code></body></html>