provide installation instructions
[extjs.git] / air / samples / tasks / js / ListLoader.js
1 /*\r
2  * Ext JS Library 0.30\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 ListLoader = function(config){\r
10         Ext.apply(this, config);\r
11 };\r
12 \r
13 Ext.extend(ListLoader, Ext.util.Observable, {\r
14         keyAttribute: 'id',\r
15         keyField: 'parentId',\r
16         \r
17         load: function(node, callback){\r
18                 var key = this.keyField;\r
19                 var v = node.attributes[this.keyAttribute];\r
20                 var rs = this.store.queryBy(function(r){\r
21                         return r.data[key] === v;\r
22                 });\r
23                 node.beginUpdate();\r
24         for (var i = 0, d = rs.items, len = d.length; i < len; i++) {\r
25                         var n = this.createNode(d[i]);\r
26                         if (n) {\r
27                                 node.appendChild(n);\r
28                         }\r
29                 }\r
30                 node.endUpdate();\r
31                 if(typeof callback == "function"){\r
32             callback(this, node);\r
33         }\r
34         },\r
35         \r
36         createNode : function(record){\r
37                 var d = record.data, n;\r
38                 if(d.isFolder){\r
39                         n = new Ext.tree.AsyncTreeNode({\r
40                                 loader: this,\r
41                                 id: record.id,\r
42                                 text: d.listName,\r
43                                 leaf: false,\r
44                                 iconCls: 'icon-folder',\r
45                                 editable: true,\r
46                                 expanded: true,\r
47                                 isFolder: true\r
48                         });\r
49                 }else{\r
50                         n = new Ext.tree.TreeNode({\r
51                                 id: record.id,\r
52                                 text: d.listName,\r
53                                 leaf: true,\r
54                                 iconCls: 'icon-list',\r
55                                 editable: true\r
56                         });\r
57                 }\r
58                 return n;\r
59         }\r
60 });