3 * Copyright(c) 2006-2010 Ext JS, Inc.
5 * http://www.extjs.com/license
7 MainPanel = function(){
8 this.preview = new Ext.Panel({
13 listeners: FeedViewer.LinkInterceptor,
17 text: 'View in New Tab',
20 handler : this.openTab,
31 window.open(this.gsm.getSelected().data.link);
37 var items = this.topToolbar.items;
38 items.get('tab').disable();
39 items.get('win').disable();
43 this.grid = new FeedGrid(this, {
46 tooltip: {title:'Open All',text:'Opens all item in tabs'},
48 handler: this.openAll,
55 tooltip: {title:'Reading Pane',text:'Show, move or hide the Reading Pane'},
56 iconCls: 'preview-bottom',
57 handler: this.movePreview.createDelegate(this, []),
66 checkHandler:this.movePreview,
68 iconCls:'preview-bottom'
73 checkHandler:this.movePreview,
75 iconCls:'preview-right'
80 checkHandler:this.movePreview,
82 iconCls:'preview-hide'
91 tooltip: {title:'Post Summary',text:'View a short summary of each item in the list'},
94 toggleHandler: function(btn, pressed){
95 this.grid.togglePreview(pressed);
100 this.grid.on('afterrender', function() {
101 //var fe = Ext.aria.FocusMgr.getByContainer(this.grid.body);
102 //fe.on('enter', this.openTab, this);
105 MainPanel.superclass.constructor.call(this, {
113 enableTabScroll: true,
114 plugins: new Ext.ux.TabCloseMenu(),
141 this.gsm = this.grid.getSelectionModel();
143 this.gsm.on('rowselect', function(sm, index, record){
144 FeedViewer.getTemplate().overwrite(this.preview.body, record.data);
145 var items = this.preview.topToolbar.items;
146 items.get('tab').enable();
147 items.get('win').enable();
148 }, this, {buffer:250});
150 this.grid.store.on('beforeload', this.preview.clear, this.preview);
151 this.grid.store.on('load', this.gsm.selectFirstRow, this.gsm);
153 this.grid.on('rowdblclick', this.openTab, this);
156 Ext.extend(MainPanel, Ext.TabPanel, {
158 loadFeed : function(feed){
159 this.grid.loadFeed(feed.url);
160 Ext.getCmp('main-view').setTitle(feed.text);
163 movePreview : function(m, pressed){
164 if(!m){ // cycle if not a menu item click
165 var readMenu = Ext.menu.MenuMgr.get('reading-menu');
167 var items = readMenu.items.items;
168 var b = items[0], r = items[1], h = items[2];
179 var preview = this.preview;
180 var right = Ext.getCmp('right-preview');
181 var bot = Ext.getCmp('bottom-preview');
182 var btn = this.grid.getTopToolbar().items.get(2);
188 bot.ownerCt.doLayout();
189 btn.setIconClass('preview-bottom');
195 right.ownerCt.doLayout();
196 btn.setIconClass('preview-right');
199 preview.ownerCt.hide();
200 preview.ownerCt.ownerCt.doLayout();
201 btn.setIconClass('preview-hide');
207 openTab : function(record){
208 record = (record && record.data) ? record : this.gsm.getSelected();
210 var id = !d.link ? Ext.id() : d.link.replace(/[^A-Z0-9-_]/gi, '');
212 if(!(tab = this.getItem(id))){
213 tab = new Ext.Panel({
215 cls:'preview single-preview',
218 html: FeedViewer.getTemplate().apply(d),
221 listeners: FeedViewer.LinkInterceptor,
227 handler : function(){
234 this.setActiveTab(tab);
238 openAll : function(){
240 this.grid.store.data.each(this.openTab, this);
245 Ext.reg('appmainpanel', MainPanel);