1 <html><head><title>/home/alan/gitlive/roojs1/Roo/tree/TreeDropZone.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">
12 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.dd.DropZone</span><span class="jsdoc-syntax">){
14 </span><span class="jsdoc-var">Roo.tree.TreeDropZone </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
15 </span><span class="jsdoc-var">this.allowParentInsert </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
16 </span><span class="jsdoc-var">this.allowContainerDrop </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
17 </span><span class="jsdoc-var">this.appendOnly </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
18 </span><span class="jsdoc-var">Roo.tree.TreeDropZone.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tree.innerCt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
19 </span><span class="jsdoc-var">this.tree </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">;
20 </span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"x-tree-no-status"</span><span class="jsdoc-syntax">;
21 </span><span class="jsdoc-var">this.dragOverData </span><span class="jsdoc-syntax">= {};
24 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.tree.TreeDropZone</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.dd.DropZone</span><span class="jsdoc-syntax">, {
25 </span><span class="jsdoc-var">ddGroup </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"TreeDD"</span><span class="jsdoc-syntax">,
26 </span><span class="jsdoc-var">scroll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
28 </span><span class="jsdoc-var">expandDelay </span><span class="jsdoc-syntax">: 1000,
30 </span><span class="jsdoc-var">expandNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">){
31 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasChildNodes</span><span class="jsdoc-syntax">() && !</span><span class="jsdoc-var">node.isExpanded</span><span class="jsdoc-syntax">()){
32 </span><span class="jsdoc-var">node.expand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.triggerCacheRefresh.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">));
36 </span><span class="jsdoc-var">queueExpand </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">){
37 </span><span class="jsdoc-var">this.expandProcId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.expandNode.defer</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.expandDelay</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, [</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">]);
40 </span><span class="jsdoc-var">cancelExpand </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
41 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.expandProcId</span><span class="jsdoc-syntax">){
42 </span><span class="jsdoc-var">clearTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.expandProcId</span><span class="jsdoc-syntax">);
43 </span><span class="jsdoc-var">this.expandProcId </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
47 </span><span class="jsdoc-var">isValidDropPoint </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</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">){
48 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){ </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">; }
49 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.node</span><span class="jsdoc-syntax">;
50 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dropNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.node</span><span class="jsdoc-syntax">;
51 </span><span class="jsdoc-comment">// default drop rules
52 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!(</span><span class="jsdoc-var">targetNode </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">targetNode.isTarget </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">)){
53 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
55 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"append" </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">targetNode.allowChildren </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
56 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
58 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"above" </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"below"</span><span class="jsdoc-syntax">) && (</span><span class="jsdoc-var">targetNode.parentNode </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">targetNode.parentNode.allowChildren </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">)){
59 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
61 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dropNode </span><span class="jsdoc-syntax">&& (</span><span class="jsdoc-var">targetNode </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">dropNode </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">dropNode.contains</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">targetNode</span><span class="jsdoc-syntax">))){
62 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
64 </span><span class="jsdoc-comment">// reuse the object
65 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">overEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragOverData</span><span class="jsdoc-syntax">;
66 </span><span class="jsdoc-var">overEvent.tree </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tree</span><span class="jsdoc-syntax">;
67 </span><span class="jsdoc-var">overEvent.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetNode</span><span class="jsdoc-syntax">;
68 </span><span class="jsdoc-var">overEvent.data </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">;
69 </span><span class="jsdoc-var">overEvent.point </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">;
70 </span><span class="jsdoc-var">overEvent.source </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">;
71 </span><span class="jsdoc-var">overEvent.rawEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
72 </span><span class="jsdoc-var">overEvent.dropNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dropNode</span><span class="jsdoc-syntax">;
73 </span><span class="jsdoc-var">overEvent.cancel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
74 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">result </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tree.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"nodedragover"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overEvent</span><span class="jsdoc-syntax">);
75 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">overEvent.cancel </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">result </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
78 </span><span class="jsdoc-var">getDropPoint </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">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">)
80 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.node</span><span class="jsdoc-syntax">;
81 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tn.isRoot</span><span class="jsdoc-syntax">){
82 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">tn.allowChildren </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">"append" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// always append for root
83 </span><span class="jsdoc-syntax">}
84 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dragEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.ddel</span><span class="jsdoc-syntax">;
85 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Dom.getY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dragEl</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">dragEl.offsetHeight</span><span class="jsdoc-syntax">;
86 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Event.getPageY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
87 </span><span class="jsdoc-comment">//var noAppend = tn.allowChildren === false || tn.isLeaf();
89 // we may drop nodes anywhere, as long as allowChildren has not been set to false..
90 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">noAppend </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tn.allowChildren </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
91 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.appendOnly </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">tn.parentNode.allowChildren </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
92 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">noAppend </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"append"</span><span class="jsdoc-syntax">;
94 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">noBelow </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
95 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.allowParentInsert</span><span class="jsdoc-syntax">){
96 </span><span class="jsdoc-var">noBelow </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tn.hasChildNodes</span><span class="jsdoc-syntax">() && </span><span class="jsdoc-var">tn.isExpanded</span><span class="jsdoc-syntax">();
98 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">) / (</span><span class="jsdoc-var">noAppend </span><span class="jsdoc-syntax">? 2 : 3);
99 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">>= </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">< (</span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">q</span><span class="jsdoc-syntax">)){
100 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">"above"</span><span class="jsdoc-syntax">;
101 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">noBelow </span><span class="jsdoc-syntax">&& (</span><span class="jsdoc-var">noAppend </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">>= </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">-</span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax"><= </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">)){
102 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">"below"</span><span class="jsdoc-syntax">;
103 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
104 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">"append"</span><span class="jsdoc-syntax">;
108 </span><span class="jsdoc-var">onNodeEnter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</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">)
110 </span><span class="jsdoc-var">this.cancelExpand</span><span class="jsdoc-syntax">();
113 </span><span class="jsdoc-var">onNodeOver </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</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">)
116 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getDropPoint</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">);
117 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.node</span><span class="jsdoc-syntax">;
119 </span><span class="jsdoc-comment">// auto node expand check
120 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.expandProcId </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"append" </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">node.hasChildNodes</span><span class="jsdoc-syntax">() && !</span><span class="jsdoc-var">n.node.isExpanded</span><span class="jsdoc-syntax">()){
121 </span><span class="jsdoc-var">this.queueExpand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
122 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">"append"</span><span class="jsdoc-syntax">){
123 </span><span class="jsdoc-var">this.cancelExpand</span><span class="jsdoc-syntax">();
126 </span><span class="jsdoc-comment">// set the insert point style on the target node
127 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">returnCls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dropNotAllowed</span><span class="jsdoc-syntax">;
128 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isValidDropPoint</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</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">)){
129 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">){
130 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.ddel</span><span class="jsdoc-syntax">;
131 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">;
132 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"above"</span><span class="jsdoc-syntax">){
133 </span><span class="jsdoc-var">returnCls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.node.isFirst</span><span class="jsdoc-syntax">() ? </span><span class="jsdoc-string">"x-tree-drop-ok-above" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"x-tree-drop-ok-between"</span><span class="jsdoc-syntax">;
134 </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"x-tree-drag-insert-above"</span><span class="jsdoc-syntax">;
135 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"below"</span><span class="jsdoc-syntax">){
136 </span><span class="jsdoc-var">returnCls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.node.isLast</span><span class="jsdoc-syntax">() ? </span><span class="jsdoc-string">"x-tree-drop-ok-below" </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"x-tree-drop-ok-between"</span><span class="jsdoc-syntax">;
137 </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"x-tree-drag-insert-below"</span><span class="jsdoc-syntax">;
138 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
139 </span><span class="jsdoc-var">returnCls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"x-tree-drop-ok-append"</span><span class="jsdoc-syntax">;
140 </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"x-tree-drag-append"</span><span class="jsdoc-syntax">;
142 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">){
143 </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replaceClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.lastInsertClass</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">);
144 </span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">;
148 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnCls</span><span class="jsdoc-syntax">;
151 </span><span class="jsdoc-var">onNodeOut </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</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">){
153 </span><span class="jsdoc-var">this.cancelExpand</span><span class="jsdoc-syntax">();
154 </span><span class="jsdoc-var">this.removeDropIndicators</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
157 </span><span class="jsdoc-var">onNodeDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</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">){
158 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">point </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getDropPoint</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">);
159 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.node</span><span class="jsdoc-syntax">;
160 </span><span class="jsdoc-var">targetNode.ui.startDrop</span><span class="jsdoc-syntax">();
161 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.isValidDropPoint</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">point</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</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">)){
162 </span><span class="jsdoc-var">targetNode.ui.endDrop</span><span class="jsdoc-syntax">();
163 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
165 </span><span class="jsdoc-comment">// first try to find the drop node
166 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dropNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.node </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">dd.getTreeNode </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">dd.getTreeNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">targetNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">point</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">);
167 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dropEvent </span><span class="jsdoc-syntax">= {
168 </span><span class="jsdoc-var">tree </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.tree</span><span class="jsdoc-syntax">,
169 </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">targetNode</span><span class="jsdoc-syntax">,
170 </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">,
171 </span><span class="jsdoc-var">point</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">point</span><span class="jsdoc-syntax">,
172 </span><span class="jsdoc-var">source</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">,
173 </span><span class="jsdoc-var">rawEvent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">,
174 </span><span class="jsdoc-var">dropNode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">dropNode</span><span class="jsdoc-syntax">,
175 </span><span class="jsdoc-var">cancel</span><span class="jsdoc-syntax">: !</span><span class="jsdoc-var">dropNode
176 </span><span class="jsdoc-syntax">};
177 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">retval </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tree.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"beforenodedrop"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dropEvent</span><span class="jsdoc-syntax">);
178 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">retval </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">dropEvent.cancel </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">dropEvent.dropNode</span><span class="jsdoc-syntax">){
179 </span><span class="jsdoc-var">targetNode.ui.endDrop</span><span class="jsdoc-syntax">();
180 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
182 </span><span class="jsdoc-comment">// allow target changing
183 </span><span class="jsdoc-var">targetNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dropEvent.target</span><span class="jsdoc-syntax">;
184 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">point </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"append" </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">targetNode.isExpanded</span><span class="jsdoc-syntax">()){
185 </span><span class="jsdoc-var">targetNode.expand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
186 </span><span class="jsdoc-var">this.completeDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dropEvent</span><span class="jsdoc-syntax">);
187 }</span><span class="jsdoc-var">.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">));
188 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
189 </span><span class="jsdoc-var">this.completeDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dropEvent</span><span class="jsdoc-syntax">);
191 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
194 </span><span class="jsdoc-var">completeDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">de</span><span class="jsdoc-syntax">){
195 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ns </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">de.dropNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">de.point</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">de.target</span><span class="jsdoc-syntax">;
196 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!(</span><span class="jsdoc-var">ns </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">)){
197 </span><span class="jsdoc-var">ns </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">];
199 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">;
200 </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">ns.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">++){
201 </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ns</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
202 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"above"</span><span class="jsdoc-syntax">){
203 </span><span class="jsdoc-var">t.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">);
204 }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"below"</span><span class="jsdoc-syntax">){
205 </span><span class="jsdoc-var">t.parentNode.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">t.nextSibling</span><span class="jsdoc-syntax">);
206 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
207 </span><span class="jsdoc-var">t.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
210 </span><span class="jsdoc-var">n.ui.focus</span><span class="jsdoc-syntax">();
211 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tree.hlDrop</span><span class="jsdoc-syntax">){
212 </span><span class="jsdoc-var">n.ui.highlight</span><span class="jsdoc-syntax">();
214 </span><span class="jsdoc-var">t.ui.endDrop</span><span class="jsdoc-syntax">();
215 </span><span class="jsdoc-var">this.tree.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"nodedrop"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">de</span><span class="jsdoc-syntax">);
218 </span><span class="jsdoc-var">afterNodeMoved </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dd</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-var">targetNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dropNode</span><span class="jsdoc-syntax">){
219 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.tree.hlDrop</span><span class="jsdoc-syntax">){
220 </span><span class="jsdoc-var">dropNode.ui.focus</span><span class="jsdoc-syntax">();
221 </span><span class="jsdoc-var">dropNode.ui.highlight</span><span class="jsdoc-syntax">();
223 </span><span class="jsdoc-var">this.tree.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"nodedrop"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.tree</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">targetNode</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
226 </span><span class="jsdoc-var">getTree </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
227 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.tree</span><span class="jsdoc-syntax">;
230 </span><span class="jsdoc-var">removeDropIndicators </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">){
231 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">n.ddel</span><span class="jsdoc-syntax">){
232 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.ddel</span><span class="jsdoc-syntax">;
233 </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.removeClass</span><span class="jsdoc-syntax">([
234 </span><span class="jsdoc-string">"x-tree-drag-insert-above"</span><span class="jsdoc-syntax">,
235 </span><span class="jsdoc-string">"x-tree-drag-insert-below"</span><span class="jsdoc-syntax">,
236 </span><span class="jsdoc-string">"x-tree-drag-append"</span><span class="jsdoc-syntax">]);
237 </span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"_noclass"</span><span class="jsdoc-syntax">;
241 </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">){
242 </span><span class="jsdoc-var">this.cancelExpand</span><span class="jsdoc-syntax">();
243 </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
246 </span><span class="jsdoc-var">afterRepair </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">){
247 </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">Roo.enableFx</span><span class="jsdoc-syntax">){
248 </span><span class="jsdoc-var">data.node.ui.highlight</span><span class="jsdoc-syntax">();
250 </span><span class="jsdoc-var">this.hideProxy</span><span class="jsdoc-syntax">();
256 </span></code></body></html>