X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/2e847cf21b8ab9d15fa167b315ca5b2fa92638fc..6a7e4474cba9d8be4b2ec445e10f1691f7277c50:/examples/feed-viewer/MainPanel.js diff --git a/examples/feed-viewer/MainPanel.js b/examples/feed-viewer/MainPanel.js index 02fa8377..67993dfc 100644 --- a/examples/feed-viewer/MainPanel.js +++ b/examples/feed-viewer/MainPanel.js @@ -1,237 +1,237 @@ /*! - * Ext JS Library 3.1.1 - * Copyright(c) 2006-2010 Ext JS, LLC + * Ext JS Library 3.2.0 + * Copyright(c) 2006-2010 Ext JS, Inc. * licensing@extjs.com * http://www.extjs.com/license */ -MainPanel = function(){ - this.preview = new Ext.Panel({ - id: 'preview', - region: 'south', - cls:'preview', - autoScroll: true, - listeners: FeedViewer.LinkInterceptor, - - tbar: [{ - id:'tab', - text: 'View in New Tab', - iconCls: 'new-tab', - disabled:true, - handler : this.openTab, - scope: this - }, - '-', - { - id:'win', - text: 'Go to Post', - iconCls: 'new-win', - disabled:true, - scope: this, - handler : function(){ - window.open(this.gsm.getSelected().data.link); - } - }], - - clear: function(){ - this.body.update(''); - var items = this.topToolbar.items; - items.get('tab').disable(); - items.get('win').disable(); - } - }); - - this.grid = new FeedGrid(this, { - tbar:[{ - text:'Open All', - tooltip: {title:'Open All',text:'Opens all item in tabs'}, - iconCls: 'tabs', - handler: this.openAll, - scope:this - }, - '-', - { - split:true, - text:'Reading Pane', - tooltip: {title:'Reading Pane',text:'Show, move or hide the Reading Pane'}, - iconCls: 'preview-bottom', - handler: this.movePreview.createDelegate(this, []), - menu:{ - id:'reading-menu', - cls:'reading-menu', - width:100, - items: [{ - text:'Bottom', - checked:true, - group:'rp-group', - checkHandler:this.movePreview, - scope:this, - iconCls:'preview-bottom' - },{ - text:'Right', - checked:false, - group:'rp-group', - checkHandler:this.movePreview, - scope:this, - iconCls:'preview-right' - },{ - text:'Hide', - checked:false, - group:'rp-group', - checkHandler:this.movePreview, - scope:this, - iconCls:'preview-hide' - }] - } - }, - '-', - { - pressed: true, - enableToggle:true, - text:'Summary', - tooltip: {title:'Post Summary',text:'View a short summary of each item in the list'}, - iconCls: 'summary', - scope:this, - toggleHandler: function(btn, pressed){ - this.grid.togglePreview(pressed); - } - }] - }); - - MainPanel.superclass.constructor.call(this, { - id:'main-tabs', - activeTab:0, - region:'center', - margins:'0 5 5 0', - resizeTabs:true, - tabWidth:150, - minTabWidth: 120, - enableTabScroll: true, - plugins: new Ext.ux.TabCloseMenu(), - items: { - id:'main-view', - layout:'border', - title:'Loading...', - hideMode:'offsets', - items:[ - this.grid, { - id:'bottom-preview', - layout:'fit', - items:this.preview, - height: 250, - split: true, - border:false, - region:'south' - }, { - id:'right-preview', - layout:'fit', - border:false, - region:'east', - width:350, - split: true, - hidden:true - }] - } - }); - - this.gsm = this.grid.getSelectionModel(); - - this.gsm.on('rowselect', function(sm, index, record){ - FeedViewer.getTemplate().overwrite(this.preview.body, record.data); - var items = this.preview.topToolbar.items; - items.get('tab').enable(); - items.get('win').enable(); - }, this, {buffer:250}); - - this.grid.store.on('beforeload', this.preview.clear, this.preview); - this.grid.store.on('load', this.gsm.selectFirstRow, this.gsm); - - this.grid.on('rowdblclick', this.openTab, this); -}; - -Ext.extend(MainPanel, Ext.TabPanel, { - - loadFeed : function(feed){ - this.grid.loadFeed(feed.url); - Ext.getCmp('main-view').setTitle(feed.text); - }, - - movePreview : function(m, pressed){ - if(!m){ // cycle if not a menu item click - var items = Ext.menu.MenuMgr.get('reading-menu').items.items; - var b = items[0], r = items[1], h = items[2]; - if(b.checked){ - r.setChecked(true); - }else if(r.checked){ - h.setChecked(true); - }else if(h.checked){ - b.setChecked(true); - } - return; - } - if(pressed){ - var preview = this.preview; - var right = Ext.getCmp('right-preview'); - var bot = Ext.getCmp('bottom-preview'); - var btn = this.grid.getTopToolbar().items.get(2); - switch(m.text){ - case 'Bottom': - right.hide(); - bot.add(preview); - bot.show(); - bot.ownerCt.doLayout(); - btn.setIconClass('preview-bottom'); - break; - case 'Right': - bot.hide(); - right.add(preview); - right.show(); - right.ownerCt.doLayout(); - btn.setIconClass('preview-right'); - break; - case 'Hide': - preview.ownerCt.hide(); - preview.ownerCt.ownerCt.doLayout(); - btn.setIconClass('preview-hide'); - break; - } - } - }, - - openTab : function(record){ - record = (record && record.data) ? record : this.gsm.getSelected(); - var d = record.data; - var id = !d.link ? Ext.id() : d.link.replace(/[^A-Z0-9-_]/gi, ''); - var tab; - if(!(tab = this.getItem(id))){ - tab = new Ext.Panel({ - id: id, - cls:'preview single-preview', - title: d.title, - tabTip: d.title, - html: FeedViewer.getTemplate().apply(d), - closable:true, - listeners: FeedViewer.LinkInterceptor, - autoScroll:true, - border:true, - - tbar: [{ - text: 'Go to Post', - iconCls: 'new-win', - handler : function(){ - window.open(d.link); - } - }] - }); - this.add(tab); - } - this.setActiveTab(tab); - }, - - openAll : function(){ - this.beginUpdate(); - this.grid.store.data.each(this.openTab, this); - this.endUpdate(); - } -}); - +MainPanel = function(){ + this.preview = new Ext.Panel({ + id: 'preview', + region: 'south', + cls:'preview', + autoScroll: true, + listeners: FeedViewer.LinkInterceptor, + + tbar: [{ + id:'tab', + text: 'View in New Tab', + iconCls: 'new-tab', + disabled:true, + handler : this.openTab, + scope: this + }, + '-', + { + id:'win', + text: 'Go to Post', + iconCls: 'new-win', + disabled:true, + scope: this, + handler : function(){ + window.open(this.gsm.getSelected().data.link); + } + }], + + clear: function(){ + this.body.update(''); + var items = this.topToolbar.items; + items.get('tab').disable(); + items.get('win').disable(); + } + }); + + this.grid = new FeedGrid(this, { + tbar:[{ + text:'Open All', + tooltip: {title:'Open All',text:'Opens all item in tabs'}, + iconCls: 'tabs', + handler: this.openAll, + scope:this + }, + '-', + { + split:true, + text:'Reading Pane', + tooltip: {title:'Reading Pane',text:'Show, move or hide the Reading Pane'}, + iconCls: 'preview-bottom', + handler: this.movePreview.createDelegate(this, []), + menu:{ + id:'reading-menu', + cls:'reading-menu', + width:100, + items: [{ + text:'Bottom', + checked:true, + group:'rp-group', + checkHandler:this.movePreview, + scope:this, + iconCls:'preview-bottom' + },{ + text:'Right', + checked:false, + group:'rp-group', + checkHandler:this.movePreview, + scope:this, + iconCls:'preview-right' + },{ + text:'Hide', + checked:false, + group:'rp-group', + checkHandler:this.movePreview, + scope:this, + iconCls:'preview-hide' + }] + } + }, + '-', + { + pressed: true, + enableToggle:true, + text:'Summary', + tooltip: {title:'Post Summary',text:'View a short summary of each item in the list'}, + iconCls: 'summary', + scope:this, + toggleHandler: function(btn, pressed){ + this.grid.togglePreview(pressed); + } + }] + }); + + MainPanel.superclass.constructor.call(this, { + id:'main-tabs', + activeTab:0, + region:'center', + margins:'0 5 5 0', + resizeTabs:true, + tabWidth:150, + minTabWidth: 120, + enableTabScroll: true, + plugins: new Ext.ux.TabCloseMenu(), + items: { + id:'main-view', + layout:'border', + title:'Loading...', + hideMode:'offsets', + items:[ + this.grid, { + id:'bottom-preview', + layout:'fit', + items:this.preview, + height: 250, + split: true, + border:false, + region:'south' + }, { + id:'right-preview', + layout:'fit', + border:false, + region:'east', + width:350, + split: true, + hidden:true + }] + } + }); + + this.gsm = this.grid.getSelectionModel(); + + this.gsm.on('rowselect', function(sm, index, record){ + FeedViewer.getTemplate().overwrite(this.preview.body, record.data); + var items = this.preview.topToolbar.items; + items.get('tab').enable(); + items.get('win').enable(); + }, this, {buffer:250}); + + this.grid.store.on('beforeload', this.preview.clear, this.preview); + this.grid.store.on('load', this.gsm.selectFirstRow, this.gsm); + + this.grid.on('rowdblclick', this.openTab, this); +}; + +Ext.extend(MainPanel, Ext.TabPanel, { + + loadFeed : function(feed){ + this.grid.loadFeed(feed.url); + Ext.getCmp('main-view').setTitle(feed.text); + }, + + movePreview : function(m, pressed){ + if(!m){ // cycle if not a menu item click + var items = Ext.menu.MenuMgr.get('reading-menu').items.items; + var b = items[0], r = items[1], h = items[2]; + if(b.checked){ + r.setChecked(true); + }else if(r.checked){ + h.setChecked(true); + }else if(h.checked){ + b.setChecked(true); + } + return; + } + if(pressed){ + var preview = this.preview; + var right = Ext.getCmp('right-preview'); + var bot = Ext.getCmp('bottom-preview'); + var btn = this.grid.getTopToolbar().items.get(2); + switch(m.text){ + case 'Bottom': + right.hide(); + bot.add(preview); + bot.show(); + bot.ownerCt.doLayout(); + btn.setIconClass('preview-bottom'); + break; + case 'Right': + bot.hide(); + right.add(preview); + right.show(); + right.ownerCt.doLayout(); + btn.setIconClass('preview-right'); + break; + case 'Hide': + preview.ownerCt.hide(); + preview.ownerCt.ownerCt.doLayout(); + btn.setIconClass('preview-hide'); + break; + } + } + }, + + openTab : function(record){ + record = (record && record.data) ? record : this.gsm.getSelected(); + var d = record.data; + var id = !d.link ? Ext.id() : d.link.replace(/[^A-Z0-9-_]/gi, ''); + var tab; + if(!(tab = this.getItem(id))){ + tab = new Ext.Panel({ + id: id, + cls:'preview single-preview', + title: d.title, + tabTip: d.title, + html: FeedViewer.getTemplate().apply(d), + closable:true, + listeners: FeedViewer.LinkInterceptor, + autoScroll:true, + border:true, + + tbar: [{ + text: 'Go to Post', + iconCls: 'new-win', + handler : function(){ + window.open(d.link); + } + }] + }); + this.add(tab); + } + this.setActiveTab(tab); + }, + + openAll : function(){ + this.beginUpdate(); + this.grid.store.data.each(this.openTab, this); + this.endUpdate(); + } +}); + Ext.reg('appmainpanel', MainPanel); \ No newline at end of file