// Implementation class for created the tree powered form field
ListSelector = Ext.extend(Ext.ux.TreeSelector, {
        maxHeight
:200,
        listenForLoad
: false,
    initComponent
: function(){
               
               
this.tree = new Ext.tree.TreePanel({
                        animate
:false,
                        border
:false,
                        width
: this.treeWidth || 180,
                        autoScroll
:true,
                        useArrows
:true,
                        selModel
: new Ext.tree.ActivationModel(),
                        loader
: new ListLoader({store: this.store})            
               
});
               
               
var root = new Ext.tree.AsyncTreeNode({
                text
: 'All Lists',
                        id
: 'root',
                        leaf
: false,
                        iconCls
: 'icon-folder',
                        expanded
: true,
                        isFolder
: true
           
});
           
this.tree.setRootNode(root);

       
this.tree.on('render', function(){
           
this.store.bindTree(this.tree);
       
}, this);
               
       
ListSelector.superclass.initComponent.call(this);
               
               
// selecting folders is not allowed, so filter them
               
this.tree.getSelectionModel().on('beforeselect', this.beforeSelection, this);
               
               
// if being rendered before the store is loaded, reload when it is loaded
               
if(this.listenForLoad) {
                       
this.store.on('load', function(){
                                root
.reload();
                       
}, this, {
                                single
: true
                       
});
               
}
   
},
       
        beforeSelection
: function(tree, node){
               
if(node && node.attributes.isFolder){
                        node
.toggle();
                       
return false;
               
}
       
}
});