X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/MainPanel.html diff --git a/docs/source/MainPanel.html b/docs/source/MainPanel.html new file mode 100644 index 00000000..2da4f7f6 --- /dev/null +++ b/docs/source/MainPanel.html @@ -0,0 +1,240 @@ + + + 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);
+ + \ No newline at end of file