The source code

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