X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/d41dc04ad17d1d9125fb2cf72db2b4782dbe3a8c..refs/heads/old:/examples/feed-viewer/FeedPanel.js?ds=inline diff --git a/examples/feed-viewer/FeedPanel.js b/examples/feed-viewer/FeedPanel.js index 37863379..8832bbea 100644 --- a/examples/feed-viewer/FeedPanel.js +++ b/examples/feed-viewer/FeedPanel.js @@ -1,181 +1,180 @@ -/* - * Ext JS Library 2.2.1 - * Copyright(c) 2006-2009, Ext JS, LLC. - * licensing@extjs.com - * - * http://extjs.com/license - */ - -FeedPanel = function() { - FeedPanel.superclass.constructor.call(this, { - id:'feed-tree', - region:'west', - title:'Feeds', - split:true, - width: 225, - minSize: 175, - maxSize: 400, - collapsible: true, - margins:'0 0 5 5', - cmargins:'0 5 5 5', - rootVisible:false, - lines:false, - autoScroll:true, - root: new Ext.tree.TreeNode('Feed Viewer'), - collapseFirst:false, - - tbar: [{ - iconCls:'add-feed', - text:'Add Feed', - handler: this.showWindow, - scope: this - },{ - id:'delete', - iconCls:'delete-icon', - text:'Remove', - handler: function(){ - var s = this.getSelectionModel().getSelectedNode(); - if(s){ - this.removeFeed(s.attributes.url); - } - }, - scope: this - }] - }); - - this.feeds = this.root.appendChild( - new Ext.tree.TreeNode({ - text:'My Feeds', - cls:'feeds-node', - expanded:true - }) - ); - - this.getSelectionModel().on({ - 'beforeselect' : function(sm, node){ - return node.isLeaf(); - }, - 'selectionchange' : function(sm, node){ - if(node){ - this.fireEvent('feedselect', node.attributes); - } - this.getTopToolbar().items.get('delete').setDisabled(!node); - }, - scope:this - }); - - this.addEvents({feedselect:true}); - - this.on('contextmenu', this.onContextMenu, this); -}; - -Ext.extend(FeedPanel, Ext.tree.TreePanel, { - - onContextMenu : function(node, e){ - if(!this.menu){ // create context menu on first right click - this.menu = new Ext.menu.Menu({ - id:'feeds-ctx', - items: [{ - id:'load', - iconCls:'load-icon', - text:'Load Feed', - scope: this, - handler:function(){ - this.ctxNode.select(); - } - },{ - text:'Remove', - iconCls:'delete-icon', - scope: this, - handler:function(){ - this.ctxNode.ui.removeClass('x-node-ctx'); - this.removeFeed(this.ctxNode.attributes.url); - this.ctxNode = null; - } - },'-',{ - iconCls:'add-feed', - text:'Add Feed', - handler: this.showWindow, - scope: this - }] - }); - this.menu.on('hide', this.onContextHide, this); - } - if(this.ctxNode){ - this.ctxNode.ui.removeClass('x-node-ctx'); - this.ctxNode = null; - } - if(node.isLeaf()){ - this.ctxNode = node; - this.ctxNode.ui.addClass('x-node-ctx'); - this.menu.items.get('load').setDisabled(node.isSelected()); - this.menu.showAt(e.getXY()); - } - }, - - onContextHide : function(){ - if(this.ctxNode){ - this.ctxNode.ui.removeClass('x-node-ctx'); - this.ctxNode = null; - } - }, - - showWindow : function(btn){ - if(!this.win){ - this.win = new FeedWindow(); - this.win.on('validfeed', this.addFeed, this); - } - this.win.show(btn); - }, - - selectFeed: function(url){ - this.getNodeById(url).select(); - }, - - removeFeed: function(url){ - var node = this.getNodeById(url); - if(node){ - node.unselect(); - Ext.fly(node.ui.elNode).ghost('l', { - callback: node.remove, scope: node, duration: .4 - }); - } - }, - - addFeed : function(attrs, inactive, preventAnim){ - var exists = this.getNodeById(attrs.url); - if(exists){ - if(!inactive){ - exists.select(); - exists.ui.highlight(); - } - return; - } - Ext.apply(attrs, { - iconCls: 'feed-icon', - leaf:true, - cls:'feed', - id: attrs.url - }); - var node = new Ext.tree.TreeNode(attrs); - this.feeds.appendChild(node); - if(!inactive){ - if(!preventAnim){ - Ext.fly(node.ui.elNode).slideIn('l', { - callback: node.select, scope: node, duration: .4 - }); - }else{ - node.select(); - } - } - return node; - }, - - // prevent the default context menu when you miss the node - afterRender : function(){ - FeedPanel.superclass.afterRender.call(this); - this.el.on('contextmenu', function(e){ - e.preventDefault(); - }); - } -}); \ No newline at end of file +/*! + * Ext JS Library 3.3.1 + * Copyright(c) 2006-2010 Sencha Inc. + * licensing@sencha.com + * http://www.sencha.com/license + */ +FeedPanel = function() { + FeedPanel.superclass.constructor.call(this, { + id:'feed-tree', + region:'west', + title:'Feeds', + split:true, + width: 225, + minSize: 175, + maxSize: 400, + collapsible: true, + margins:'0 0 5 5', + cmargins:'0 5 5 5', + rootVisible:false, + lines:false, + autoScroll:true, + root: new Ext.tree.TreeNode('My Feeds'), + collapseFirst:false, + tbar: [{ + iconCls:'add-feed', + text:'Add Feed', + handler: this.showWindow, + scope: this + },{ + id:'delete', + iconCls:'delete-icon', + text:'Remove', + handler: function(){ + var s = this.getSelectionModel().getSelectedNode(); + if(s){ + this.removeFeed(s.attributes.url); + } + }, + scope: this + }] + }); + + this.feeds = this.root.appendChild( + new Ext.tree.TreeNode({ + text:'My Feeds', + cls:'feeds-node', + expanded:true + }) + ); + + this.getSelectionModel().on({ + 'beforeselect' : function(sm, node){ + return node.isLeaf(); + }, + 'selectionchange' : function(sm, node){ + if(node){ + this.fireEvent('feedselect', node.attributes); + } + this.getTopToolbar().items.get('delete').setDisabled(!node); + }, + scope:this + }); + + this.addEvents({feedselect:true}); + + this.on('contextmenu', this.onContextMenu, this); +}; + +Ext.extend(FeedPanel, Ext.tree.TreePanel, { + + onContextMenu : function(node, e){ + if(!this.menu){ // create context menu on first right click + this.menu = new Ext.menu.Menu({ + id:'feeds-ctx', + items: [{ + id:'load', + iconCls:'load-icon', + text:'Load Feed', + scope: this, + handler:function(){ + this.ctxNode.select(); + } + },{ + text:'Remove', + iconCls:'delete-icon', + scope: this, + handler:function(){ + this.ctxNode.ui.removeClass('x-node-ctx'); + this.removeFeed(this.ctxNode.attributes.url); + this.ctxNode = null; + } + },'-',{ + iconCls:'add-feed', + text:'Add Feed', + handler: this.showWindow, + scope: this + }] + }); + this.menu.on('hide', this.onContextHide, this); + } + if(this.ctxNode){ + this.ctxNode.ui.removeClass('x-node-ctx'); + this.ctxNode = null; + } + if(node.isLeaf()){ + this.ctxNode = node; + this.ctxNode.ui.addClass('x-node-ctx'); + this.menu.items.get('load').setDisabled(node.isSelected()); + this.menu.showAt(e.getXY()); + } + }, + + onContextHide : function(){ + if(this.ctxNode){ + this.ctxNode.ui.removeClass('x-node-ctx'); + this.ctxNode = null; + } + }, + + showWindow : function(btn){ + if(!this.win){ + this.win = new FeedWindow(); + this.win.on('validfeed', this.addFeed, this); + } + this.win.show(btn); + }, + + selectFeed: function(url){ + this.getNodeById(url).select(); + }, + + removeFeed: function(url){ + var node = this.getNodeById(url); + if(node){ + node.unselect(); + Ext.fly(node.ui.elNode).ghost('l', { + callback: node.remove, scope: node, duration: .4 + }); + } + }, + + addFeed : function(attrs, inactive, preventAnim){ + var exists = this.getNodeById(attrs.url); + if(exists){ + if(!inactive){ + exists.select(); + exists.ui.highlight(); + } + return; + } + Ext.apply(attrs, { + iconCls: 'feed-icon', + leaf:true, + cls:'feed', + id: attrs.url + }); + var node = new Ext.tree.TreeNode(attrs); + this.feeds.appendChild(node); + if(!inactive){ + if(!preventAnim){ + Ext.fly(node.ui.elNode).slideIn('l', { + callback: node.select, scope: node, duration: .4 + }); + }else{ + node.select(); + } + } + return node; + }, + + // prevent the default context menu when you miss the node + afterRender : function(){ + FeedPanel.superclass.afterRender.call(this); + this.el.on('contextmenu', function(e){ + e.preventDefault(); + }); + } +}); + +Ext.reg('appfeedpanel', FeedPanel); \ No newline at end of file