X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/ListTree.html?ds=inline diff --git a/docs/source/ListTree.html b/docs/source/ListTree.html new file mode 100644 index 00000000..a24bfd59 --- /dev/null +++ b/docs/source/ListTree.html @@ -0,0 +1,182 @@ + +
+ListTree = function(config){ + ListTree.superclass.constructor.call(this, Ext.apply({ + id:'list-tree', + animate:false, + //rootVisible:false, + region:'west', + width:200, + split:true, + title:'My Lists', + autoScroll:true, + margins: '3 0 3 3', + cmargins: '3 3 3 3', + useArrows:true, + collapsible:true, + minWidth:120 + }, config)); + + this.on('contextmenu', this.onContextMenu, this); +} +Ext.extend(ListTree, Ext.tree.TreePanel, { + + initComponent : function(){ + this.bbar = [ + tx.actions.newList, + tx.actions.deleteList, + '-', + tx.actions.newFolder, + tx.actions.deleteFolder + ]; + + this.loader = new ListLoader({ + store: tx.data.lists + }); + ListTree.superclass.initComponent.call(this); + + var root = new Ext.tree.AsyncTreeNode({ + text: 'All Lists', + id: 'root', + leaf: false, + iconCls: 'icon-folder', + expanded: true, + isFolder: true, + editable: false + }); + this.setRootNode(root); + + this.editor = new Ext.tree.TreeEditor(this, { + allowBlank:false, + blankText:'A name is required', + selectOnFocus:true + }); + this.editor.shadow = false; + + this.editor.on('beforecomplete', function(ed, value, startValue){ + var node = ed.editNode; + value = Ext.util.Format.htmlEncode(value); + var r = this.store.getById(node.id); + r.set('listName', value); + //ed.editing = false; + //ed.hide(); + //return false; + }, this); + + this.sorter = new Ext.tree.TreeSorter(this, { + folderSort: true + }); + }, + + getActiveFolderId : function(){ + var sm = this.selModel; + var n = sm.getSelectedNode(); + if(n){ + return n.attributes.isFolder ? n.id : n.attributes.parentId; + } + return 'root'; + }, + + onContextMenu : function(node, e){ + if(!this.menu){ // create context menu on first right click + this.menu = new Ext.menu.Menu({ + id:'lists-ctx', + listWidth: 200, + items: [{ + iconCls:'icon-edit', + text:'New Task', + scope: this, + handler:function(){ + this.ctxNode.select(); + tx.actions.newTask.execute(); + } + },{ + iconCls:'icon-list-new', + text:'New List', + scope: this, + handler:function(){ + this.ctxNode.select(); + tx.actions.newList.execute(); + } + },{ + iconCls:'icon-folder-new', + text:'New Folder', + scope: this, + handler:function(){ + this.ctxNode.select(); + tx.actions.newFolder.execute(); + } + },'-',{ + text:'Delete', + iconCls:'icon-list-delete', + scope: this, + handler:function(){ + this.removeList(this.ctxNode); + } + }] + }); + this.menu.on('hide', this.onContextHide, this); + } + if(this.ctxNode){ + this.ctxNode.ui.removeClass('x-node-ctx'); + this.ctxNode = null; + } + this.ctxNode = node; + this.ctxNode.ui.addClass('x-node-ctx'); + + this.menu.items.get(1).setVisible(!!node.attributes.isFolder); + this.menu.items.get(2).setVisible(!!node.attributes.isFolder); + this.menu.items.get(0).setVisible(!node.attributes.isFolder); + + this.menu.showAt(e.getXY()); + }, + + onContextHide : function(){ + if(this.ctxNode){ + this.ctxNode.ui.removeClass('x-node-ctx'); + this.ctxNode = null; + } + }, + + startEdit : function(node, select){ + if(typeof node == 'string'){ + node = this.getNodeById(node); + } + if(select === true){ + node.select(); + } + var ed = this.editor; + setTimeout(function(){ + ed.editNode = node; + ed.startEdit(node.ui.textNode); + }, 10); + }, + + removeList : function(s){ + if (s && s.attributes.editable) { + Ext.Msg.confirm('Confirm', 'Are you sure you want to delete "' + Ext.util.Format.htmlEncode(s.text) + '"?', function(btn){ + if (btn == 'yes') { + if (s.nextSibling) { + s.nextSibling.select(); + } + else + if (s.previousSibling) { + s.previousSibling.select(); + } + s.parentNode.removeChild(s); + tx.data.lists.remove(this.store.getById(s.id)); + tx.data.tasks.removeList(s.id); + } + }, this); + } + } +}); + ++ + \ No newline at end of file