1 <html><head><title>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">/*
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">
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.
17 * @param {String/HTMLElement/Element} el The container element
18 * @param {Object} config
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">= {};
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">);
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">();
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">});
33 </span><span class="jsdoc-var">this.dragging </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
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 "x-dd-drop-ok").
41 </span><span class="jsdoc-var">dropAllowed </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"x-dd-drop-ok"</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 "x-dd-drop-nodrop").
46 </span><span class="jsdoc-var">dropNotAllowed </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"x-dd-drop-nodrop"</span><span class="jsdoc-syntax">,
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
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">;
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">);
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
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">);
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
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">;
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">();
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">);
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
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">);
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
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">;
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">);
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
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">);
155 </span><span class="jsdoc-var">this.cachedTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
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
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">;
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">);
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">);
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
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">);
196 </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.cachedTarget</span><span class="jsdoc-syntax">;
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
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">;
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
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">);
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">();
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">);
239 </span><span class="jsdoc-var">this.cacheTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
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">);
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
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">);
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">"c3daf9"</span><span class="jsdoc-syntax">);
260 </span><span class="jsdoc-var">this.dragging </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
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
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
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">;
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">;
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">&& </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">);
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
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">;
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
305 </span><span class="jsdoc-var">onStartDrag </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
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">""</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">();
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">;
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
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">;
333 </span><span class="jsdoc-comment">/**
334 * Hides the drag source's {@link Roo.dd.StatusProxy}
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">;
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">);
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">) {
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">);
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">){
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);
364 });</span></code></body></html>