commit extjs-2.2.1
[extjs.git] / air / samples / tasks / js / ListSelector.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 // Implementation class for created the tree powered form field\r
10 ListSelector = Ext.extend(Ext.ux.TreeSelector, {\r
11         maxHeight:200,\r
12         listenForLoad: false,\r
13     initComponent : function(){\r
14                 \r
15                 this.tree = new Ext.tree.TreePanel({\r
16                         animate:false,\r
17                         border:false,\r
18                         width: this.treeWidth || 180,\r
19                         autoScroll:true,\r
20                         useArrows:true,\r
21                         selModel: new Ext.tree.ActivationModel(),\r
22                         loader : new ListLoader({store: this.store})            \r
23                 });\r
24                 \r
25                 var root = new Ext.tree.AsyncTreeNode({\r
26                 text: 'All Lists',\r
27                         id: 'root',\r
28                         leaf: false,\r
29                         iconCls: 'icon-folder',\r
30                         expanded: true,\r
31                         isFolder: true\r
32             });\r
33             this.tree.setRootNode(root);\r
34 \r
35         this.tree.on('render', function(){\r
36             this.store.bindTree(this.tree);\r
37         }, this);\r
38                 \r
39         ListSelector.superclass.initComponent.call(this);\r
40                 \r
41                 // selecting folders is not allowed, so filter them\r
42                 this.tree.getSelectionModel().on('beforeselect', this.beforeSelection, this);\r
43                 \r
44                 // if being rendered before the store is loaded, reload when it is loaded\r
45                 if(this.listenForLoad) {\r
46                         this.store.on('load', function(){\r
47                                 root.reload();\r
48                         }, this, {\r
49                                 single: true\r
50                         });\r
51                 }\r
52     },\r
53         \r
54         beforeSelection : function(tree, node){\r
55                 if(node && node.attributes.isFolder){\r
56                         node.toggle();\r
57                         return false;\r
58                 }\r
59         }\r
60 });