5f4d9486b4db985d6cc0124bcecdbff950554d36
[roojs1] / docs / src / Roo_tree_TreeDropZone.js.html
1 <html><head><title>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">/*
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 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.dd.DropZone</span><span class="jsdoc-syntax">){
13
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">&quot;x-tree-no-status&quot;</span><span class="jsdoc-syntax">;
21     </span><span class="jsdoc-var">this.dragOverData </span><span class="jsdoc-syntax">= {};
22 };
23
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">&quot;TreeDD&quot;</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">,
27
28     </span><span class="jsdoc-var">expandDelay </span><span class="jsdoc-syntax">: 1000,
29
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">() &amp;&amp; !</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">));
33         }
34     },
35
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">]);
38     },
39
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">;
44         }
45     },
46
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">&amp;&amp; </span><span class="jsdoc-var">targetNode.isTarget </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">)){
53             </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
54         }
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">&quot;append&quot; </span><span class="jsdoc-syntax">&amp;&amp; </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">;
57         }
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">&quot;above&quot; </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;below&quot;</span><span class="jsdoc-syntax">) &amp;&amp; (</span><span class="jsdoc-var">targetNode.parentNode </span><span class="jsdoc-syntax">&amp;&amp; </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">;
60         }
61         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dropNode </span><span class="jsdoc-syntax">&amp;&amp; (</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">;
63         }
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">&quot;nodedragover&quot;</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">&amp;&amp; </span><span class="jsdoc-var">result </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
76     },
77
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">)
79     {
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">&quot;append&quot; </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();
88
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">&quot;append&quot;</span><span class="jsdoc-syntax">;
93         }
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">() &amp;&amp; </span><span class="jsdoc-var">tn.isExpanded</span><span class="jsdoc-syntax">();
97         }
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">&gt;= </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&lt; (</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">&quot;above&quot;</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">&amp;&amp; (</span><span class="jsdoc-var">noAppend </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&gt;= </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">-</span><span class="jsdoc-var">q </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&lt;= </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">)){
102             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;below&quot;</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">&quot;append&quot;</span><span class="jsdoc-syntax">;
105         }
106     },
107
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">)
109     {
110         </span><span class="jsdoc-var">this.cancelExpand</span><span class="jsdoc-syntax">();
111     },
112
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">)
114     {
115
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">;
118
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">&amp;&amp; </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;append&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">node.hasChildNodes</span><span class="jsdoc-syntax">() &amp;&amp; !</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">&quot;append&quot;</span><span class="jsdoc-syntax">){
123             </span><span class="jsdoc-var">this.cancelExpand</span><span class="jsdoc-syntax">();
124         }
125
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">&quot;above&quot;</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">&quot;x-tree-drop-ok-above&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-tree-drop-ok-between&quot;</span><span class="jsdoc-syntax">;
134                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;x-tree-drag-insert-above&quot;</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">&quot;below&quot;</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">&quot;x-tree-drop-ok-below&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-tree-drop-ok-between&quot;</span><span class="jsdoc-syntax">;
137                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;x-tree-drag-insert-below&quot;</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">&quot;x-tree-drop-ok-append&quot;</span><span class="jsdoc-syntax">;
140                    </span><span class="jsdoc-var">cls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;x-tree-drag-append&quot;</span><span class="jsdoc-syntax">;
141                }
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">;
145                }
146            }
147        }
148        </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">returnCls</span><span class="jsdoc-syntax">;
149     },
150
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">){
152
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">);
155     },
156
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">;
164         }
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">&quot;beforenodedrop&quot;</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">;
181         }
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">&quot;append&quot; </span><span class="jsdoc-syntax">&amp;&amp; !</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">);
190         }
191         </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
192     },
193
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">];
198         }
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">&lt; </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">&quot;above&quot;</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">&quot;below&quot;</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">);
208             }
209         }
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">();
213         }
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">&quot;nodedrop&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">de</span><span class="jsdoc-syntax">);
216     },
217
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">();
222         }
223         </span><span class="jsdoc-var">this.tree.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;nodedrop&quot;</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">);
224     },
225
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">;
228     },
229
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">&amp;&amp; </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">&quot;x-tree-drag-insert-above&quot;</span><span class="jsdoc-syntax">,
235                     </span><span class="jsdoc-string">&quot;x-tree-drag-insert-below&quot;</span><span class="jsdoc-syntax">,
236                     </span><span class="jsdoc-string">&quot;x-tree-drag-append&quot;</span><span class="jsdoc-syntax">]);
237             </span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;_noclass&quot;</span><span class="jsdoc-syntax">;
238         }
239     },
240
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">;
244     },
245
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">&amp;&amp; </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">();
249         }
250         </span><span class="jsdoc-var">this.hideProxy</span><span class="jsdoc-syntax">();
251     }
252
253 });
254
255 }
256 </span></code></body></html>