Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / source / widgets / tree / TreeLoader.js
diff --git a/source/widgets/tree/TreeLoader.js b/source/widgets/tree/TreeLoader.js
deleted file mode 100644 (file)
index 39cff48..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/*\r
- * Ext JS Library 2.2.1\r
- * Copyright(c) 2006-2009, Ext JS, LLC.\r
- * licensing@extjs.com\r
- * \r
- * http://extjs.com/license\r
- */\r
-\r
-/**\r
- * @class Ext.tree.TreeLoader\r
- * @extends Ext.util.Observable\r
- * A TreeLoader provides for lazy loading of an {@link Ext.tree.TreeNode}'s child\r
- * nodes from a specified URL. The response must be a JavaScript Array definition\r
- * whose elements are node definition objects. eg:\r
- * <pre><code>\r
-    [{\r
-        id: 1,\r
-        text: 'A leaf Node',\r
-        leaf: true\r
-    },{\r
-        id: 2,\r
-        text: 'A folder Node',\r
-        children: [{\r
-            id: 3,\r
-            text: 'A child Node',\r
-            leaf: true\r
-        }]\r
-   }]\r
-</code></pre>\r
- * <br><br>\r
- * A server request is sent, and child nodes are loaded only when a node is expanded.\r
- * The loading node's id is passed to the server under the parameter name "node" to\r
- * enable the server to produce the correct child nodes.\r
- * <br><br>\r
- * To pass extra parameters, an event handler may be attached to the "beforeload"\r
- * event, and the parameters specified in the TreeLoader's baseParams property:\r
- * <pre><code>\r
-    myTreeLoader.on("beforeload", function(treeLoader, node) {\r
-        this.baseParams.category = node.attributes.category;\r
-    }, this);\r
-</code></pre>\r
- * This would pass an HTTP parameter called "category" to the server containing\r
- * the value of the Node's "category" attribute.\r
- * @constructor\r
- * Creates a new Treeloader.\r
- * @param {Object} config A config object containing config properties.\r
- */\r
-Ext.tree.TreeLoader = function(config){\r
-    this.baseParams = {};\r
-    Ext.apply(this, config);\r
-\r
-    this.addEvents(\r
-        /**\r
-         * @event beforeload\r
-         * Fires before a network request is made to retrieve the Json text which specifies a node's children.\r
-         * @param {Object} This TreeLoader object.\r
-         * @param {Object} node The {@link Ext.tree.TreeNode} object being loaded.\r
-         * @param {Object} callback The callback function specified in the {@link #load} call.\r
-         */\r
-        "beforeload",\r
-        /**\r
-         * @event load\r
-         * Fires when the node has been successfuly loaded.\r
-         * @param {Object} This TreeLoader object.\r
-         * @param {Object} node The {@link Ext.tree.TreeNode} object being loaded.\r
-         * @param {Object} response The response object containing the data from the server.\r
-         */\r
-        "load",\r
-        /**\r
-         * @event loadexception\r
-         * Fires if the network request failed.\r
-         * @param {Object} This TreeLoader object.\r
-         * @param {Object} node The {@link Ext.tree.TreeNode} object being loaded.\r
-         * @param {Object} response The response object containing the data from the server.\r
-         */\r
-        "loadexception"\r
-    );\r
-\r
-    Ext.tree.TreeLoader.superclass.constructor.call(this);\r
-};\r
-\r
-Ext.extend(Ext.tree.TreeLoader, Ext.util.Observable, {\r
-    /**\r
-    * @cfg {String} dataUrl The URL from which to request a Json string which\r
-    * specifies an array of node definition objects representing the child nodes\r
-    * to be loaded.\r
-    */\r
-    /**\r
-     * @cfg {String} requestMethod The HTTP request method for loading data (defaults to the value of {@link Ext.Ajax#method}).\r
-     */\r
-    /**\r
-     * @cfg {String} url Equivalent to {@link #dataUrl}.\r
-     */\r
-    /**\r
-     * @cfg {Boolean} preloadChildren If set to true, the loader recursively loads "children" attributes when doing the first load on nodes.\r
-     */\r
-    /**\r
-    * @cfg {Object} baseParams (optional) An object containing properties which\r
-    * specify HTTP parameters to be passed to each request for child nodes.\r
-    */\r
-    /**\r
-    * @cfg {Object} baseAttrs (optional) An object containing attributes to be added to all nodes\r
-    * created by this loader. If the attributes sent by the server have an attribute in this object,\r
-    * they take priority.\r
-    */\r
-    /**\r
-    * @cfg {Object} uiProviders (optional) An object containing properties which\r
-    * specify custom {@link Ext.tree.TreeNodeUI} implementations. If the optional\r
-    * <i>uiProvider</i> attribute of a returned child node is a string rather\r
-    * than a reference to a TreeNodeUI implementation, then that string value\r
-    * is used as a property name in the uiProviders object.\r
-    */\r
-    uiProviders : {},\r
-\r
-    /**\r
-    * @cfg {Boolean} clearOnLoad (optional) Default to true. Remove previously existing\r
-    * child nodes before loading.\r
-    */\r
-    clearOnLoad : true,\r
-\r
-    /**\r
-     * Load an {@link Ext.tree.TreeNode} from the URL specified in the constructor.\r
-     * This is called automatically when a node is expanded, but may be used to reload\r
-     * a node (or append new children if the {@link #clearOnLoad} option is false.)\r
-     * @param {Ext.tree.TreeNode} node\r
-     * @param {Function} callback\r
-     */\r
-    load : function(node, callback){\r
-        if(this.clearOnLoad){\r
-            while(node.firstChild){\r
-                node.removeChild(node.firstChild);\r
-            }\r
-        }\r
-        if(this.doPreload(node)){ // preloaded json children\r
-            if(typeof callback == "function"){\r
-                callback();\r
-            }\r
-        }else if(this.dataUrl||this.url){\r
-            this.requestData(node, callback);\r
-        }\r
-    },\r
-\r
-    doPreload : function(node){\r
-        if(node.attributes.children){\r
-            if(node.childNodes.length < 1){ // preloaded?\r
-                var cs = node.attributes.children;\r
-                node.beginUpdate();\r
-                for(var i = 0, len = cs.length; i < len; i++){\r
-                    var cn = node.appendChild(this.createNode(cs[i]));\r
-                    if(this.preloadChildren){\r
-                        this.doPreload(cn);\r
-                    }\r
-                }\r
-                node.endUpdate();\r
-            }\r
-            return true;\r
-        }else {\r
-            return false;\r
-        }\r
-    },\r
-\r
-    getParams: function(node){\r
-        var buf = [], bp = this.baseParams;\r
-        for(var key in bp){\r
-            if(typeof bp[key] != "function"){\r
-                buf.push(encodeURIComponent(key), "=", encodeURIComponent(bp[key]), "&");\r
-            }\r
-        }\r
-        buf.push("node=", encodeURIComponent(node.id));\r
-        return buf.join("");\r
-    },\r
-\r
-    requestData : function(node, callback){\r
-        if(this.fireEvent("beforeload", this, node, callback) !== false){\r
-            this.transId = Ext.Ajax.request({\r
-                method:this.requestMethod,\r
-                url: this.dataUrl||this.url,\r
-                success: this.handleResponse,\r
-                failure: this.handleFailure,\r
-                scope: this,\r
-                argument: {callback: callback, node: node},\r
-                params: this.getParams(node)\r
-            });\r
-        }else{\r
-            // if the load is cancelled, make sure we notify\r
-            // the node that we are done\r
-            if(typeof callback == "function"){\r
-                callback();\r
-            }\r
-        }\r
-    },\r
-\r
-    isLoading : function(){\r
-        return !!this.transId;\r
-    },\r
-\r
-    abort : function(){\r
-        if(this.isLoading()){\r
-            Ext.Ajax.abort(this.transId);\r
-        }\r
-    },\r
-\r
-    /**\r
-    * <p>Override this function for custom TreeNode node implementation, or to\r
-    * modify the attributes at creation time.</p>\r
-    * Example:<code><pre>\r
-new Ext.tree.TreePanel({\r
-    ...\r
-    new Ext.tree.TreeLoader({\r
-        url: 'dataUrl',\r
-        createNode: function(attr) {\r
-//          Allow consolidation consignments to have\r
-//          consignments dropped into them.\r
-            if (attr.isConsolidation) {\r
-                attr.iconCls = 'x-consol',\r
-                attr.allowDrop = true;\r
-            }\r
-            return Ext.tree.TreeLoader.prototype.call(this, attr);\r
-        }\r
-    }),\r
-    ...\r
-}); \r
-</pre></code>\r
-    * @param attr {Object} The attributes from which to create the new node.\r
-    */\r
-    createNode : function(attr){\r
-        // apply baseAttrs, nice idea Corey!\r
-        if(this.baseAttrs){\r
-            Ext.applyIf(attr, this.baseAttrs);\r
-        }\r
-        if(this.applyLoader !== false){\r
-            attr.loader = this;\r
-        }\r
-        if(typeof attr.uiProvider == 'string'){\r
-           attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);\r
-        }\r
-        if(attr.nodeType){\r
-            return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr);\r
-        }else{\r
-            return attr.leaf ?\r
-                        new Ext.tree.TreeNode(attr) :\r
-                        new Ext.tree.AsyncTreeNode(attr);\r
-        }\r
-    },\r
-\r
-    processResponse : function(response, node, callback){\r
-        var json = response.responseText;\r
-        try {\r
-            var o = eval("("+json+")");\r
-            node.beginUpdate();\r
-            for(var i = 0, len = o.length; i < len; i++){\r
-                var n = this.createNode(o[i]);\r
-                if(n){\r
-                    node.appendChild(n);\r
-                }\r
-            }\r
-            node.endUpdate();\r
-            if(typeof callback == "function"){\r
-                callback(this, node);\r
-            }\r
-        }catch(e){\r
-            this.handleFailure(response);\r
-        }\r
-    },\r
-\r
-    handleResponse : function(response){\r
-        this.transId = false;\r
-        var a = response.argument;\r
-        this.processResponse(response, a.node, a.callback);\r
-        this.fireEvent("load", this, a.node, response);\r
-    },\r
-\r
-    handleFailure : function(response){\r
-        this.transId = false;\r
-        var a = response.argument;\r
-        this.fireEvent("loadexception", this, a.node, response);\r
-        if(typeof a.callback == "function"){\r
-            a.callback(this, a.node);\r
-        }\r
-    }\r
-});
\ No newline at end of file