| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-data-Tree'>/**
 
- </span> * @class Ext.data.Tree
 
-  *
 
-  * This class is used as a container for a series of nodes. The nodes themselves maintain
 
-  * the relationship between parent/child. The tree itself acts as a manager. It gives functionality
 
-  * to retrieve a node by its identifier: {@link #getNodeById}.
 
-  *
 
-  * The tree also relays events from any of it's child nodes, allowing them to be handled in a
 
-  * centralized fashion. In general this class is not used directly, rather used internally
 
-  * by other parts of the framework.
 
-  *
 
-  */
 
- Ext.define('Ext.data.Tree', {
 
-     alias: 'data.tree',
 
-     mixins: {
 
-         observable: "Ext.util.Observable"
 
-     },
 
- <span id='Ext-data-Tree-property-root'>    /**
 
- </span>     * @property {Ext.data.NodeInterface}
 
-      * The root node for this tree
 
-      */
 
-     root: null,
 
- <span id='Ext-data-Tree-method-constructor'>    /**
 
- </span>     * Creates new Tree object.
 
-      * @param {Ext.data.NodeInterface} root (optional) The root node
 
-      */
 
-     constructor: function(root) {
 
-         var me = this;
 
-         me.mixins.observable.constructor.call(me);
 
-         if (root) {
 
-             me.setRootNode(root);
 
-         }
 
-     },
 
- <span id='Ext-data-Tree-method-getRootNode'>    /**
 
- </span>     * Returns the root node for this tree.
 
-      * @return {Ext.data.NodeInterface}
 
-      */
 
-     getRootNode : function() {
 
-         return this.root;
 
-     },
 
- <span id='Ext-data-Tree-method-setRootNode'>    /**
 
- </span>     * Sets the root node for this tree.
 
-      * @param {Ext.data.NodeInterface} node
 
-      * @return {Ext.data.NodeInterface} The root node
 
-      */
 
-     setRootNode : function(node) {
 
-         var me = this;
 
-         me.root = node;
 
-         if (me.fireEvent('beforeappend', null, node) !== false) {
 
-             node.set('root', true);
 
-             node.updateInfo();
 
-             // root node should never be phantom or dirty, so commit it
 
-             node.commit();
 
-             node.on({
 
-                 scope: me,
 
-                 insert: me.onNodeInsert,
 
-                 append: me.onNodeAppend,
 
-                 remove: me.onNodeRemove
 
-             });
 
-             me.relayEvents(node, [
 
- <span id='Ext-data-Tree-event-append'>                /**
 
- </span>                 * @event append
 
-                  * @inheritdoc Ext.data.NodeInterface#append
 
-                  */
 
-                 "append",
 
- <span id='Ext-data-Tree-event-remove'>                /**
 
- </span>                 * @event remove
 
-                  * @inheritdoc Ext.data.NodeInterface#remove
 
-                  */
 
-                 "remove",
 
- <span id='Ext-data-Tree-event-move'>                /**
 
- </span>                 * @event move
 
-                  * @inheritdoc Ext.data.NodeInterface#move
 
-                  */
 
-                 "move",
 
- <span id='Ext-data-Tree-event-insert'>                /**
 
- </span>                 * @event insert
 
-                  * @inheritdoc Ext.data.NodeInterface#insert
 
-                  */
 
-                 "insert",
 
- <span id='Ext-data-Tree-event-beforeappend'>                /**
 
- </span>                 * @event beforeappend
 
-                  * @inheritdoc Ext.data.NodeInterface#beforeappend
 
-                  */
 
-                 "beforeappend",
 
- <span id='Ext-data-Tree-event-beforeremove'>                /**
 
- </span>                 * @event beforeremove
 
-                  * @inheritdoc Ext.data.NodeInterface#beforeremove
 
-                  */
 
-                 "beforeremove",
 
- <span id='Ext-data-Tree-event-beforemove'>                /**
 
- </span>                 * @event beforemove
 
-                  * @inheritdoc Ext.data.NodeInterface#beforemove
 
-                  */
 
-                 "beforemove",
 
- <span id='Ext-data-Tree-event-beforeinsert'>                /**
 
- </span>                 * @event beforeinsert
 
-                  * @inheritdoc Ext.data.NodeInterface#beforeinsert
 
-                  */
 
-                 "beforeinsert",
 
- <span id='Ext-data-Tree-event-expand'>                /**
 
- </span>                 * @event expand
 
-                  * @inheritdoc Ext.data.NodeInterface#expand
 
-                  */
 
-                 "expand",
 
- <span id='Ext-data-Tree-event-collapse'>                /**
 
- </span>                 * @event collapse
 
-                  * @inheritdoc Ext.data.NodeInterface#collapse
 
-                  */
 
-                 "collapse",
 
- <span id='Ext-data-Tree-event-beforeexpand'>                /**
 
- </span>                 * @event beforeexpand
 
-                  * @inheritdoc Ext.data.NodeInterface#beforeexpand
 
-                  */
 
-                 "beforeexpand",
 
- <span id='Ext-data-Tree-event-beforecollapse'>                /**
 
- </span>                 * @event beforecollapse
 
-                  * @inheritdoc Ext.data.NodeInterface#beforecollapse
 
-                  */
 
-                 "beforecollapse" ,
 
- <span id='Ext-data-Tree-event-sort'>                /**
 
- </span>                 * @event sort
 
-                  * @inheritdoc Ext.data.NodeInterface#event-sort
 
-                  */
 
-                 "sort",
 
- <span id='Ext-data-Tree-event-rootchange'>                /**
 
- </span>                 * @event rootchange
 
-                  * Fires whenever the root node is changed in the tree.
 
-                  * @param {Ext.data.Model} root The new root
 
-                  */
 
-                 "rootchange"
 
-             ]);
 
-             me.nodeHash = {};
 
-             me.registerNode(node);
 
-             me.fireEvent('append', null, node);
 
-             me.fireEvent('rootchange', node);
 
-         }
 
-         return node;
 
-     },
 
- <span id='Ext-data-Tree-method-flatten'>    /**
 
- </span>     * Flattens all the nodes in the tree into an array.
 
-      * @private
 
-      * @return {Ext.data.NodeInterface[]} The flattened nodes.
 
-      */
 
-     flatten: function(){
 
-         return Ext.Object.getValues(this.nodeHash);
 
-     },
 
- <span id='Ext-data-Tree-method-onNodeInsert'>    /**
 
- </span>     * Fired when a node is inserted into the root or one of it's children
 
-      * @private
 
-      * @param {Ext.data.NodeInterface} parent The parent node
 
-      * @param {Ext.data.NodeInterface} node The inserted node
 
-      */
 
-     onNodeInsert: function(parent, node) {
 
-         this.registerNode(node, true);
 
-     },
 
- <span id='Ext-data-Tree-method-onNodeAppend'>    /**
 
- </span>     * Fired when a node is appended into the root or one of it's children
 
-      * @private
 
-      * @param {Ext.data.NodeInterface} parent The parent node
 
-      * @param {Ext.data.NodeInterface} node The appended node
 
-      */
 
-     onNodeAppend: function(parent, node) {
 
-         this.registerNode(node, true);
 
-     },
 
- <span id='Ext-data-Tree-method-onNodeRemove'>    /**
 
- </span>     * Fired when a node is removed from the root or one of it's children
 
-      * @private
 
-      * @param {Ext.data.NodeInterface} parent The parent node
 
-      * @param {Ext.data.NodeInterface} node The removed node
 
-      */
 
-     onNodeRemove: function(parent, node) {
 
-         this.unregisterNode(node, true);
 
-     },
 
- <span id='Ext-data-Tree-method-onNodeIdChanged'>    /**
 
- </span>     * Fired when a node's id changes.  Updates the node's id in the node hash.
 
-      * @private
 
-      * @param {Ext.data.NodeInterface} node 
 
-      * @param {Number} oldId The old id
 
-      * @param {Number} newId The new id
 
-      */
 
-     onNodeIdChanged: function(node, oldId, newId) {
 
-         var nodeHash = this.nodeHash;
 
-     
 
-         nodeHash[newId] = node;
 
-         delete nodeHash[oldId || node.internalId];
 
-     },
 
- <span id='Ext-data-Tree-method-getNodeById'>    /**
 
- </span>     * Gets a node in this tree by its id.
 
-      * @param {String} id
 
-      * @return {Ext.data.NodeInterface} The match node.
 
-      */
 
-     getNodeById : function(id) {
 
-         return this.nodeHash[id];
 
-     },
 
- <span id='Ext-data-Tree-method-registerNode'>    /**
 
- </span>     * Registers a node with the tree
 
-      * @private
 
-      * @param {Ext.data.NodeInterface} The node to register
 
-      * @param {Boolean} [includeChildren] True to unregister any child nodes
 
-      */
 
-     registerNode : function(node, includeChildren) {
 
-         var me = this;
 
-         me.nodeHash[node.getId() || node.internalId] = node;
 
-         node.on('idchanged', me.onNodeIdChanged, me);
 
-         if (includeChildren === true) {
 
-             node.eachChild(function(child){
 
-                 me.registerNode(child, true);
 
-             });
 
-         }
 
-     },
 
- <span id='Ext-data-Tree-method-unregisterNode'>    /**
 
- </span>     * Unregisters a node with the tree
 
-      * @private
 
-      * @param {Ext.data.NodeInterface} The node to unregister
 
-      * @param {Boolean} [includeChildren] True to unregister any child nodes
 
-      */
 
-     unregisterNode : function(node, includeChildren) {
 
-         delete this.nodeHash[node.getId() || node.internalId];
 
-         if (includeChildren === true) {
 
-             node.eachChild(function(child){
 
-                 this.unregisterNode(child, true);
 
-             }, this);
 
-         }
 
-     },
 
- <span id='Ext-data-Tree-method-sort'>    /**
 
- </span>     * Sorts this tree
 
-      * @private
 
-      * @param {Function} sorterFn The function to use for sorting
 
-      * @param {Boolean} recursive True to perform recursive sorting
 
-      */
 
-     sort: function(sorterFn, recursive) {
 
-         this.getRootNode().sort(sorterFn, recursive);
 
-     },
 
- <span id='Ext-data-Tree-method-filter'>     /**
 
- </span>     * Filters this tree
 
-      * @private
 
-      * @param {Function} sorterFn The function to use for filtering
 
-      * @param {Boolean} recursive True to perform recursive filtering
 
-      */
 
-     filter: function(filters, recursive) {
 
-         this.getRootNode().filter(filters, recursive);
 
-     }
 
- });</pre>
 
- </body>
 
- </html>
 
 
  |