// 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;
}
}
});