Fix #6201 - Category select
[roojs1] / docs / src / Roo_tree_TreePanel.js.html
1 <html><head><title>Roo/tree/TreePanel.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12
13 /**
14  * @class Roo.tree.TreePanel
15  * @extends Roo.data.Tree
16
17  * @cfg {Boolean} rootVisible false to hide the root node (defaults to true)
18  * @cfg {Boolean} lines false to disable tree lines (defaults to true)
19  * @cfg {Boolean} enableDD true to enable drag and drop
20  * @cfg {Boolean} enableDrag true to enable just drag
21  * @cfg {Boolean} enableDrop true to enable just drop
22  * @cfg {Object} dragConfig Custom config to pass to the {@link Roo.tree.TreeDragZone} instance
23  * @cfg {Object} dropConfig Custom config to pass to the {@link Roo.tree.TreeDropZone} instance
24  * @cfg {String} ddGroup The DD group this TreePanel belongs to
25  * @cfg {String} ddAppendOnly True if the tree should only allow append drops (use for trees which are sorted)
26  * @cfg {Boolean} ddScroll true to enable YUI body scrolling
27  * @cfg {Boolean} containerScroll true to register this container with ScrollManager
28  * @cfg {Boolean} hlDrop false to disable node highlight on drop (defaults to the value of Roo.enableFx)
29  * @cfg {String} hlColor The color of the node highlight (defaults to C3DAF9)
30  * @cfg {Boolean} animate true to enable animated expand/collapse (defaults to the value of Roo.enableFx)
31  * @cfg {Boolean} singleExpand true if only 1 node per branch may be expanded
32  * @cfg {Boolean} selModel A tree selection model to use with this TreePanel (defaults to a {@link Roo.tree.DefaultSelectionModel})
33  * @cfg {Boolean} loader A TreeLoader for use with this TreePanel
34  * @cfg {Object|Roo.tree.TreeEditor} editor The TreeEditor or xtype data to display when clicked.
35  * @cfg {String} pathSeparator The token used to separate sub-paths in path strings (defaults to '/')
36  * @cfg {Function} renderer DEPRECATED - use TreeLoader:create event / Sets the rendering (formatting) function for the nodes. to return HTML markup for the tree view. The render function is called with  the following parameters:&lt;ul&gt;&lt;li&gt;The {Object} The data for the node.&lt;/li&gt;&lt;/ul&gt;
37  * @cfg {Function} rendererTip DEPRECATED - use TreeLoader:create event / Sets the rendering (formatting) function for the nodes hovertip to return HTML markup for the tree view. The render function is called with  the following parameters:&lt;ul&gt;&lt;li&gt;The {Object} The data for the node.&lt;/li&gt;&lt;/ul&gt;
38  * 
39  * @constructor
40  * @param {String/HTMLElement/Element} el The container element
41  * @param {Object} config
42  */
43 </span><span class="jsdoc-var">Roo.tree.TreePanel </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">){
44     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">root </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
45     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">loader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
46     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.root</span><span class="jsdoc-syntax">) {
47         </span><span class="jsdoc-var">root </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.root</span><span class="jsdoc-syntax">;
48         </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">config.root</span><span class="jsdoc-syntax">;
49     }
50     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config.loader</span><span class="jsdoc-syntax">) {
51         </span><span class="jsdoc-var">loader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.loader</span><span class="jsdoc-syntax">;
52         </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">config.loader</span><span class="jsdoc-syntax">;
53     }
54
55     </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">);
56     </span><span class="jsdoc-var">Roo.tree.TreePanel.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
57     </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">);
58     </span><span class="jsdoc-var">this.el.addClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'x-tree'</span><span class="jsdoc-syntax">);
59     </span><span class="jsdoc-comment">//console.log(root);
60     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">root</span><span class="jsdoc-syntax">) {
61         </span><span class="jsdoc-var">this.setRootNode</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">root</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.tree</span><span class="jsdoc-syntax">));
62     }
63     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">loader</span><span class="jsdoc-syntax">) {
64         </span><span class="jsdoc-var">this.loader </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">loader</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.tree</span><span class="jsdoc-syntax">);
65     }
66    </span><span class="jsdoc-comment">/**
67     * Read-only. The id of the container element becomes this TreePanel's id.
68     */
69     </span><span class="jsdoc-var">this.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.id</span><span class="jsdoc-syntax">;
70     </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
71         </span><span class="jsdoc-comment">/**
72         * @event beforeload
73         * Fires before a node is loaded, return false to cancel
74         * @param {Node} node The node being loaded
75         */
76         </span><span class="jsdoc-string">&quot;beforeload&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
77         </span><span class="jsdoc-comment">/**
78         * @event load
79         * Fires when a node is loaded
80         * @param {Node} node The node that was loaded
81         */
82         </span><span class="jsdoc-string">&quot;load&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
83         </span><span class="jsdoc-comment">/**
84         * @event textchange
85         * Fires when the text for a node is changed
86         * @param {Node} node The node
87         * @param {String} text The new text
88         * @param {String} oldText The old text
89         */
90         </span><span class="jsdoc-string">&quot;textchange&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
91         </span><span class="jsdoc-comment">/**
92         * @event beforeexpand
93         * Fires before a node is expanded, return false to cancel.
94         * @param {Node} node The node
95         * @param {Boolean} deep
96         * @param {Boolean} anim
97         */
98         </span><span class="jsdoc-string">&quot;beforeexpand&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
99         </span><span class="jsdoc-comment">/**
100         * @event beforecollapse
101         * Fires before a node is collapsed, return false to cancel.
102         * @param {Node} node The node
103         * @param {Boolean} deep
104         * @param {Boolean} anim
105         */
106         </span><span class="jsdoc-string">&quot;beforecollapse&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
107         </span><span class="jsdoc-comment">/**
108         * @event expand
109         * Fires when a node is expanded
110         * @param {Node} node The node
111         */
112         </span><span class="jsdoc-string">&quot;expand&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
113         </span><span class="jsdoc-comment">/**
114         * @event disabledchange
115         * Fires when the disabled status of a node changes
116         * @param {Node} node The node
117         * @param {Boolean} disabled
118         */
119         </span><span class="jsdoc-string">&quot;disabledchange&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
120         </span><span class="jsdoc-comment">/**
121         * @event collapse
122         * Fires when a node is collapsed
123         * @param {Node} node The node
124         */
125         </span><span class="jsdoc-string">&quot;collapse&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
126         </span><span class="jsdoc-comment">/**
127         * @event beforeclick
128         * Fires before click processing on a node. Return false to cancel the default action.
129         * @param {Node} node The node
130         * @param {Roo.EventObject} e The event object
131         */
132         </span><span class="jsdoc-string">&quot;beforeclick&quot;</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
133         </span><span class="jsdoc-comment">/**
134         * @event checkchange
135         * Fires when a node with a checkbox's checked property changes
136         * @param {Node} this This node
137         * @param {Boolean} checked
138         */
139         </span><span class="jsdoc-string">&quot;checkchange&quot;</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
140         </span><span class="jsdoc-comment">/**
141         * @event click
142         * Fires when a node is clicked
143         * @param {Node} node The node
144         * @param {Roo.EventObject} e The event object
145         */
146         </span><span class="jsdoc-string">&quot;click&quot;</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
147         </span><span class="jsdoc-comment">/**
148         * @event dblclick
149         * Fires when a node is double clicked
150         * @param {Node} node The node
151         * @param {Roo.EventObject} e The event object
152         */
153         </span><span class="jsdoc-string">&quot;dblclick&quot;</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
154         </span><span class="jsdoc-comment">/**
155         * @event contextmenu
156         * Fires when a node is right clicked
157         * @param {Node} node The node
158         * @param {Roo.EventObject} e The event object
159         */
160         </span><span class="jsdoc-string">&quot;contextmenu&quot;</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
161         </span><span class="jsdoc-comment">/**
162         * @event beforechildrenrendered
163         * Fires right before the child nodes for a node are rendered
164         * @param {Node} node The node
165         */
166         </span><span class="jsdoc-string">&quot;beforechildrenrendered&quot;</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
167         </span><span class="jsdoc-comment">/**
168         * @event startdrag
169         * Fires when a node starts being dragged
170         * @param {Roo.tree.TreePanel} this
171         * @param {Roo.tree.TreeNode} node
172         * @param {event} e The raw browser event
173         */
174        </span><span class="jsdoc-string">&quot;startdrag&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
175        </span><span class="jsdoc-comment">/**
176         * @event enddrag
177         * Fires when a drag operation is complete
178         * @param {Roo.tree.TreePanel} this
179         * @param {Roo.tree.TreeNode} node
180         * @param {event} e The raw browser event
181         */
182        </span><span class="jsdoc-string">&quot;enddrag&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
183        </span><span class="jsdoc-comment">/**
184         * @event dragdrop
185         * Fires when a dragged node is dropped on a valid DD target
186         * @param {Roo.tree.TreePanel} this
187         * @param {Roo.tree.TreeNode} node
188         * @param {DD} dd The dd it was dropped on
189         * @param {event} e The raw browser event
190         */
191        </span><span class="jsdoc-string">&quot;dragdrop&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
192        </span><span class="jsdoc-comment">/**
193         * @event beforenodedrop
194         * Fires when a DD object is dropped on a node in this tree for preprocessing. Return false to cancel the drop. The dropEvent
195         * passed to handlers has the following properties:&lt;br /&gt;
196         * &lt;ul style=&quot;padding:5px;padding-left:16px;&quot;&gt;
197         * &lt;li&gt;tree - The TreePanel&lt;/li&gt;
198         * &lt;li&gt;target - The node being targeted for the drop&lt;/li&gt;
199         * &lt;li&gt;data - The drag data from the drag source&lt;/li&gt;
200         * &lt;li&gt;point - The point of the drop - append, above or below&lt;/li&gt;
201         * &lt;li&gt;source - The drag source&lt;/li&gt;
202         * &lt;li&gt;rawEvent - Raw mouse event&lt;/li&gt;
203         * &lt;li&gt;dropNode - Drop node(s) provided by the source &lt;b&gt;OR&lt;/b&gt; you can supply node(s)
204         * to be inserted by setting them on this object.&lt;/li&gt;
205         * &lt;li&gt;cancel - Set this to true to cancel the drop.&lt;/li&gt;
206         * &lt;/ul&gt;
207         * @param {Object} dropEvent
208         */
209        </span><span class="jsdoc-string">&quot;beforenodedrop&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
210        </span><span class="jsdoc-comment">/**
211         * @event nodedrop
212         * Fires after a DD object is dropped on a node in this tree. The dropEvent
213         * passed to handlers has the following properties:&lt;br /&gt;
214         * &lt;ul style=&quot;padding:5px;padding-left:16px;&quot;&gt;
215         * &lt;li&gt;tree - The TreePanel&lt;/li&gt;
216         * &lt;li&gt;target - The node being targeted for the drop&lt;/li&gt;
217         * &lt;li&gt;data - The drag data from the drag source&lt;/li&gt;
218         * &lt;li&gt;point - The point of the drop - append, above or below&lt;/li&gt;
219         * &lt;li&gt;source - The drag source&lt;/li&gt;
220         * &lt;li&gt;rawEvent - Raw mouse event&lt;/li&gt;
221         * &lt;li&gt;dropNode - Dropped node(s).&lt;/li&gt;
222         * &lt;/ul&gt;
223         * @param {Object} dropEvent
224         */
225        </span><span class="jsdoc-string">&quot;nodedrop&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
226         </span><span class="jsdoc-comment">/**
227         * @event nodedragover
228         * Fires when a tree node is being targeted for a drag drop, return false to signal drop not allowed. The dragOverEvent
229         * passed to handlers has the following properties:&lt;br /&gt;
230         * &lt;ul style=&quot;padding:5px;padding-left:16px;&quot;&gt;
231         * &lt;li&gt;tree - The TreePanel&lt;/li&gt;
232         * &lt;li&gt;target - The node being targeted for the drop&lt;/li&gt;
233         * &lt;li&gt;data - The drag data from the drag source&lt;/li&gt;
234         * &lt;li&gt;point - The point of the drop - append, above or below&lt;/li&gt;
235         * &lt;li&gt;source - The drag source&lt;/li&gt;
236         * &lt;li&gt;rawEvent - Raw mouse event&lt;/li&gt;
237         * &lt;li&gt;dropNode - Drop node(s) provided by the source.&lt;/li&gt;
238         * &lt;li&gt;cancel - Set this to true to signal drop not allowed.&lt;/li&gt;
239         * &lt;/ul&gt;
240         * @param {Object} dragOverEvent
241         */
242        </span><span class="jsdoc-string">&quot;nodedragover&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
243        </span><span class="jsdoc-comment">/**
244         * @event appendnode
245         * Fires when append node to the tree
246         * @param {Roo.tree.TreePanel} this
247         * @param {Roo.tree.TreeNode} node
248         * @param {Number} index The index of the newly appended node
249         */
250        </span><span class="jsdoc-string">&quot;appendnode&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
251
252     </span><span class="jsdoc-syntax">});
253     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.singleExpand</span><span class="jsdoc-syntax">){
254        </span><span class="jsdoc-var">this.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;beforeexpand&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.restrictExpand</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
255     }
256     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editor</span><span class="jsdoc-syntax">) {
257         </span><span class="jsdoc-var">this.editor.tree </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
258         </span><span class="jsdoc-var">this.editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.tree</span><span class="jsdoc-syntax">);
259     }
260
261     </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.selModel</span><span class="jsdoc-syntax">) {
262         </span><span class="jsdoc-var">this.selModel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.selModel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.tree</span><span class="jsdoc-syntax">);
263     }
264
265 };
266 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.tree.TreePanel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.data.Tree</span><span class="jsdoc-syntax">, {
267     </span><span class="jsdoc-var">rootVisible </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
268     </span><span class="jsdoc-var">animate</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.enableFx</span><span class="jsdoc-syntax">,
269     </span><span class="jsdoc-var">lines </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
270     </span><span class="jsdoc-var">enableDD </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
271     </span><span class="jsdoc-var">hlDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.enableFx</span><span class="jsdoc-syntax">,
272
273     </span><span class="jsdoc-var">renderer</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
274
275     </span><span class="jsdoc-var">rendererTip</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
276     </span><span class="jsdoc-comment">// private
277     </span><span class="jsdoc-var">restrictExpand </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">){
278         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.parentNode</span><span class="jsdoc-syntax">;
279         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">){
280             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p.expandedChild </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">p.expandedChild.parentNode </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">){
281                 </span><span class="jsdoc-var">p.expandedChild.collapse</span><span class="jsdoc-syntax">();
282             }
283             </span><span class="jsdoc-var">p.expandedChild </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">;
284         }
285     },
286
287     </span><span class="jsdoc-comment">// private override
288     </span><span class="jsdoc-var">setRootNode </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">){
289         </span><span class="jsdoc-var">Roo.tree.TreePanel.superclass.setRootNode.call</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">);
290         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.rootVisible</span><span class="jsdoc-syntax">){
291             </span><span class="jsdoc-var">node.ui </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.tree.RootTreeNodeUI</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
292         }
293         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">;
294     },
295
296     </span><span class="jsdoc-comment">/**
297      * Returns the container element for this TreePanel
298      */
299     </span><span class="jsdoc-var">getEl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
300         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">;
301     },
302
303     </span><span class="jsdoc-comment">/**
304      * Returns the default TreeLoader for this TreePanel
305      */
306     </span><span class="jsdoc-var">getLoader </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
307         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.loader</span><span class="jsdoc-syntax">;
308     },
309
310     </span><span class="jsdoc-comment">/**
311      * Expand all nodes
312      */
313     </span><span class="jsdoc-var">expandAll </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
314         </span><span class="jsdoc-var">this.root.expand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
315     },
316
317     </span><span class="jsdoc-comment">/**
318      * Collapse all nodes
319      */
320     </span><span class="jsdoc-var">collapseAll </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
321         </span><span class="jsdoc-var">this.root.collapse</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
322     },
323
324     </span><span class="jsdoc-comment">/**
325      * Returns the selection model used by this TreePanel
326      */
327     </span><span class="jsdoc-var">getSelectionModel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
328         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.selModel</span><span class="jsdoc-syntax">){
329             </span><span class="jsdoc-var">this.selModel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.tree.DefaultSelectionModel</span><span class="jsdoc-syntax">();
330         }
331         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.selModel</span><span class="jsdoc-syntax">;
332     },
333
334     </span><span class="jsdoc-comment">/**
335      * Retrieve an array of checked nodes, or an array of a specific attribute of checked nodes (e.g. &quot;id&quot;)
336      * @param {String} attribute (optional) Defaults to null (return the actual nodes)
337      * @param {TreeNode} startNode (optional) The node to start from, defaults to the root
338      * @return {Array}
339      */
340     </span><span class="jsdoc-var">getChecked </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">startNode</span><span class="jsdoc-syntax">){
341         </span><span class="jsdoc-var">startNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">startNode </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.root</span><span class="jsdoc-syntax">;
342         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= [];
343         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
344             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.attributes.checked</span><span class="jsdoc-syntax">){
345                 </span><span class="jsdoc-var">r.push</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">: (</span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'id' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this.id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">]));
346             }
347         }
348         </span><span class="jsdoc-var">startNode.cascade</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">);
349         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
350     },
351
352     </span><span class="jsdoc-comment">/**
353      * Expands a specified path in this TreePanel. A path can be retrieved from a node with {@link Roo.data.Node#getPath}
354      * @param {String} path
355      * @param {String} attr (optional) The attribute used in the path (see {@link Roo.data.Node#getPath} for more info)
356      * @param {Function} callback (optional) The callback to call when the expand is complete. The callback will be called with
357      * (bSuccess, oLastNode) where bSuccess is if the expand was successful and oLastNode is the last node that was expanded.
358      */
359     </span><span class="jsdoc-var">expandPath </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">path</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
360         </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;id&quot;</span><span class="jsdoc-syntax">;
361         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">keys </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">path.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pathSeparator</span><span class="jsdoc-syntax">);
362         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">curNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.root</span><span class="jsdoc-syntax">;
363         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">curNode.attributes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">] != </span><span class="jsdoc-var">keys</span><span class="jsdoc-syntax">[1]){ </span><span class="jsdoc-comment">// invalid root
364             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
365                 </span><span class="jsdoc-var">callback</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">);
366             }
367             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
368         }
369         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">= 1;
370         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
371             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(++</span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">keys.length</span><span class="jsdoc-syntax">){
372                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
373                     </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">curNode</span><span class="jsdoc-syntax">);
374                 }
375                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
376             }
377             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">curNode.findChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">keys</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">]);
378             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">){
379                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
380                     </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">curNode</span><span class="jsdoc-syntax">);
381                 }
382                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
383             }
384             </span><span class="jsdoc-var">curNode </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
385             </span><span class="jsdoc-var">c.expand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">);
386         };
387         </span><span class="jsdoc-var">curNode.expand</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">);
388     },
389
390     </span><span class="jsdoc-comment">/**
391      * Selects the node in this tree at the specified path. A path can be retrieved from a node with {@link Roo.data.Node#getPath}
392      * @param {String} path
393      * @param {String} attr (optional) The attribute used in the path (see {@link Roo.data.Node#getPath} for more info)
394      * @param {Function} callback (optional) The callback to call when the selection is complete. The callback will be called with
395      * (bSuccess, oSelNode) where bSuccess is if the selection was successful and oSelNode is the selected node.
396      */
397     </span><span class="jsdoc-var">selectPath </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">path</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
398         </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;id&quot;</span><span class="jsdoc-syntax">;
399         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">keys </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">path.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pathSeparator</span><span class="jsdoc-syntax">);
400         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">keys.pop</span><span class="jsdoc-syntax">();
401         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">keys.length </span><span class="jsdoc-syntax">&gt; 0){
402             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">f </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">success</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">){
403                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">success </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">){
404                     </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.findChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
405                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">){
406                         </span><span class="jsdoc-var">n.select</span><span class="jsdoc-syntax">();
407                         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
408                             </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
409                         }
410                     }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
411                         </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
412                     }
413                 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
414                     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
415                         </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
416                     }
417                 }
418             };
419             </span><span class="jsdoc-var">this.expandPath</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">keys.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.pathSeparator</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">attr</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">f</span><span class="jsdoc-syntax">);
420         }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
421             </span><span class="jsdoc-var">this.root.select</span><span class="jsdoc-syntax">();
422             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">){
423                 </span><span class="jsdoc-var">callback</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.root</span><span class="jsdoc-syntax">);
424             }
425         }
426     },
427
428     </span><span class="jsdoc-var">getTreeEl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
429         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">;
430     },
431
432     </span><span class="jsdoc-comment">/**
433      * Trigger rendering of this TreePanel
434      */
435     </span><span class="jsdoc-var">render </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
436         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.innerCt</span><span class="jsdoc-syntax">) {
437             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// stop it rendering more than once!!
438         </span><span class="jsdoc-syntax">}
439
440         </span><span class="jsdoc-var">this.innerCt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.createChild</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">&quot;ul&quot;</span><span class="jsdoc-syntax">,
441                </span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">:</span><span class="jsdoc-string">&quot;x-tree-root-ct &quot; </span><span class="jsdoc-syntax">+
442                (</span><span class="jsdoc-var">this.lines </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;x-tree-lines&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-tree-no-lines&quot;</span><span class="jsdoc-syntax">)});
443
444         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.containerScroll</span><span class="jsdoc-syntax">){
445             </span><span class="jsdoc-var">Roo.dd.ScrollManager.register</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">);
446         }
447         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.enableDD </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.enableDrop</span><span class="jsdoc-syntax">) &amp;&amp; !</span><span class="jsdoc-var">this.dropZone</span><span class="jsdoc-syntax">){
448            </span><span class="jsdoc-comment">/**
449             * The dropZone used by this tree if drop is enabled
450             * @type Roo.tree.TreeDropZone
451             */
452              </span><span class="jsdoc-var">this.dropZone </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.tree.TreeDropZone</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dropConfig </span><span class="jsdoc-syntax">|| {
453                </span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.ddGroup </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;TreeDD&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">appendOnly</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.ddAppendOnly </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true
454            </span><span class="jsdoc-syntax">});
455         }
456         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">this.enableDD </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.enableDrag</span><span class="jsdoc-syntax">) &amp;&amp; !</span><span class="jsdoc-var">this.dragZone</span><span class="jsdoc-syntax">){
457            </span><span class="jsdoc-comment">/**
458             * The dragZone used by this tree if drag is enabled
459             * @type Roo.tree.TreeDragZone
460             */
461             </span><span class="jsdoc-var">this.dragZone </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.tree.TreeDragZone</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.dragConfig </span><span class="jsdoc-syntax">|| {
462                </span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.ddGroup </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">&quot;TreeDD&quot;</span><span class="jsdoc-syntax">,
463                </span><span class="jsdoc-var">scroll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.ddScroll
464            </span><span class="jsdoc-syntax">});
465         }
466         </span><span class="jsdoc-var">this.getSelectionModel</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.init</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
467         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.root</span><span class="jsdoc-syntax">) {
468             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;ROOT not set in tree&quot;</span><span class="jsdoc-syntax">);
469             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
470         }
471         </span><span class="jsdoc-var">this.root.render</span><span class="jsdoc-syntax">();
472         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.rootVisible</span><span class="jsdoc-syntax">){
473             </span><span class="jsdoc-var">this.root.renderChildren</span><span class="jsdoc-syntax">();
474         }
475         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
476     }
477 });</span></code></body></html>