Roo/tree/TreePanel.js
[roojs1] / Roo / tree / TreePanel.js
index dbe4a8b..8ab1384 100644 (file)
@@ -13,7 +13,7 @@
 /**
  * @class Roo.tree.TreePanel
  * @extends Roo.data.Tree
-
+ * @cfg {Roo.tree.TreeNode} root The root node
  * @cfg {Boolean} rootVisible false to hide the root node (defaults to true)
  * @cfg {Boolean} lines false to disable tree lines (defaults to true)
  * @cfg {Boolean} enableDD true to enable drag and drop
  * @cfg {Boolean} singleExpand true if only 1 node per branch may be expanded
  * @cfg {Boolean} selModel A tree selection model to use with this TreePanel (defaults to a {@link Roo.tree.DefaultSelectionModel})
  * @cfg {Boolean} loader A TreeLoader for use with this TreePanel
+ * @cfg {Object|Roo.tree.TreeEditor} editor The TreeEditor or xtype data to display when clicked.
  * @cfg {String} pathSeparator The token used to separate sub-paths in path strings (defaults to '/')
- * @cfg {Function} renderer 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:<ul><li>The {Object} The data for the node.</li></ul>
- * @cfg {Function} rendererTip 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:<ul><li>The {Object} The data for the node.</li></ul>
+ * @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:<ul><li>The {Object} The data for the node.</li></ul>
+ * @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:<ul><li>The {Object} The data for the node.</li></ul>
  * 
  * @constructor
  * @param {String/HTMLElement/Element} el The container element
@@ -65,8 +66,8 @@ Roo.tree.TreePanel = function(el, config){
    /**
     * Read-only. The id of the container element becomes this TreePanel's id.
     */
-   this.id = this.el.id;
-   this.addEvents({
+    this.id = this.el.id;
+    this.addEvents({
         /**
         * @event beforeload
         * Fires before a node is loaded, return false to cancel
@@ -163,87 +164,104 @@ Roo.tree.TreePanel = function(el, config){
         * @param {Node} node The node
         */
         "beforechildrenrendered":true,
+        /**
+        * @event startdrag
+        * Fires when a node starts being dragged
+        * @param {Roo.tree.TreePanel} this
+        * @param {Roo.tree.TreeNode} node
+        * @param {event} e The raw browser event
+        */ 
+       "startdrag" : true,
+       /**
+        * @event enddrag
+        * Fires when a drag operation is complete
+        * @param {Roo.tree.TreePanel} this
+        * @param {Roo.tree.TreeNode} node
+        * @param {event} e The raw browser event
+        */
+       "enddrag" : true,
+       /**
+        * @event dragdrop
+        * Fires when a dragged node is dropped on a valid DD target
+        * @param {Roo.tree.TreePanel} this
+        * @param {Roo.tree.TreeNode} node
+        * @param {DD} dd The dd it was dropped on
+        * @param {event} e The raw browser event
+        */
+       "dragdrop" : true,
+       /**
+        * @event beforenodedrop
+        * Fires when a DD object is dropped on a node in this tree for preprocessing. Return false to cancel the drop. The dropEvent
+        * passed to handlers has the following properties:<br />
+        * <ul style="padding:5px;padding-left:16px;">
+        * <li>tree - The TreePanel</li>
+        * <li>target - The node being targeted for the drop</li>
+        * <li>data - The drag data from the drag source</li>
+        * <li>point - The point of the drop - append, above or below</li>
+        * <li>source - The drag source</li>
+        * <li>rawEvent - Raw mouse event</li>
+        * <li>dropNode - Drop node(s) provided by the source <b>OR</b> you can supply node(s)
+        * to be inserted by setting them on this object.</li>
+        * <li>cancel - Set this to true to cancel the drop.</li>
+        * </ul>
+        * @param {Object} dropEvent
+        */
+       "beforenodedrop" : true,
+       /**
+        * @event nodedrop
+        * Fires after a DD object is dropped on a node in this tree. The dropEvent
+        * passed to handlers has the following properties:<br />
+        * <ul style="padding:5px;padding-left:16px;">
+        * <li>tree - The TreePanel</li>
+        * <li>target - The node being targeted for the drop</li>
+        * <li>data - The drag data from the drag source</li>
+        * <li>point - The point of the drop - append, above or below</li>
+        * <li>source - The drag source</li>
+        * <li>rawEvent - Raw mouse event</li>
+        * <li>dropNode - Dropped node(s).</li>
+        * </ul>
+        * @param {Object} dropEvent
+        */
+       "nodedrop" : true,
+        /**
+        * @event nodedragover
+        * Fires when a tree node is being targeted for a drag drop, return false to signal drop not allowed. The dragOverEvent
+        * passed to handlers has the following properties:<br />
+        * <ul style="padding:5px;padding-left:16px;">
+        * <li>tree - The TreePanel</li>
+        * <li>target - The node being targeted for the drop</li>
+        * <li>data - The drag data from the drag source</li>
+        * <li>point - The point of the drop - append, above or below</li>
+        * <li>source - The drag source</li>
+        * <li>rawEvent - Raw mouse event</li>
+        * <li>dropNode - Drop node(s) provided by the source.</li>
+        * <li>cancel - Set this to true to signal drop not allowed.</li>
+        * </ul>
+        * @param {Object} dragOverEvent
+        */
+       "nodedragover" : true,
        /**
-            * @event startdrag
-            * Fires when a node starts being dragged
-            * @param {Roo.tree.TreePanel} this
-            * @param {Roo.tree.TreeNode} node
-            * @param {event} e The raw browser event
-            */ 
-           "startdrag" : true,
-           /**
-            * @event enddrag
-            * Fires when a drag operation is complete
-            * @param {Roo.tree.TreePanel} this
-            * @param {Roo.tree.TreeNode} node
-            * @param {event} e The raw browser event
-            */
-           "enddrag" : true,
-           /**
-            * @event dragdrop
-            * Fires when a dragged node is dropped on a valid DD target
-            * @param {Roo.tree.TreePanel} this
-            * @param {Roo.tree.TreeNode} node
-            * @param {DD} dd The dd it was dropped on
-            * @param {event} e The raw browser event
-            */
-           "dragdrop" : true,
-           /**
-            * @event beforenodedrop
-            * Fires when a DD object is dropped on a node in this tree for preprocessing. Return false to cancel the drop. The dropEvent
-            * passed to handlers has the following properties:<br />
-            * <ul style="padding:5px;padding-left:16px;">
-            * <li>tree - The TreePanel</li>
-            * <li>target - The node being targeted for the drop</li>
-            * <li>data - The drag data from the drag source</li>
-            * <li>point - The point of the drop - append, above or below</li>
-            * <li>source - The drag source</li>
-            * <li>rawEvent - Raw mouse event</li>
-            * <li>dropNode - Drop node(s) provided by the source <b>OR</b> you can supply node(s)
-            * to be inserted by setting them on this object.</li>
-            * <li>cancel - Set this to true to cancel the drop.</li>
-            * </ul>
-            * @param {Object} dropEvent
-            */
-           "beforenodedrop" : true,
-           /**
-            * @event nodedrop
-            * Fires after a DD object is dropped on a node in this tree. The dropEvent
-            * passed to handlers has the following properties:<br />
-            * <ul style="padding:5px;padding-left:16px;">
-            * <li>tree - The TreePanel</li>
-            * <li>target - The node being targeted for the drop</li>
-            * <li>data - The drag data from the drag source</li>
-            * <li>point - The point of the drop - append, above or below</li>
-            * <li>source - The drag source</li>
-            * <li>rawEvent - Raw mouse event</li>
-            * <li>dropNode - Dropped node(s).</li>
-            * </ul>
-            * @param {Object} dropEvent
-            */
-           "nodedrop" : true,
-            /**
-            * @event nodedragover
-            * Fires when a tree node is being targeted for a drag drop, return false to signal drop not allowed. The dragOverEvent
-            * passed to handlers has the following properties:<br />
-            * <ul style="padding:5px;padding-left:16px;">
-            * <li>tree - The TreePanel</li>
-            * <li>target - The node being targeted for the drop</li>
-            * <li>data - The drag data from the drag source</li>
-            * <li>point - The point of the drop - append, above or below</li>
-            * <li>source - The drag source</li>
-            * <li>rawEvent - Raw mouse event</li>
-            * <li>dropNode - Drop node(s) provided by the source.</li>
-            * <li>cancel - Set this to true to signal drop not allowed.</li>
-            * </ul>
-            * @param {Object} dragOverEvent
-            */
-           "nodedragover" : true
+        * @event appendnode
+        * Fires when append node to the tree
+        * @param {Roo.tree.TreePanel} this
+        * @param {Roo.tree.TreeNode} node
+        * @param {Number} index The index of the newly appended node
+        */
+       "appendnode" : true
         
-   });
-   if(this.singleExpand){
+    });
+    if(this.singleExpand){
        this.on("beforeexpand", this.restrictExpand, this);
-   }
+    }
+    if (this.editor) {
+        this.editor.tree = this;
+        this.editor = Roo.factory(this.editor, Roo.tree);
+    }
+    
+    if (this.selModel) {
+        this.selModel = Roo.factory(this.selModel, Roo.tree);
+    }
+   
 };
 Roo.extend(Roo.tree.TreePanel, Roo.data.Tree, {
     rootVisible : true,
@@ -447,8 +465,8 @@ Roo.extend(Roo.tree.TreePanel, Roo.data.Tree, {
         }
         this.getSelectionModel().init(this);
         if (!this.root) {
-            console.log("ROOT not set in tree");
-            return;
+            Roo.log("ROOT not set in tree");
+            return this;
         }
         this.root.render();
         if(!this.rootVisible){