+++ /dev/null
-<html>\r
-<head>\r
- <title>The source code</title>\r
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
-</head>\r
-<body onload="prettyPrint();">\r
- <pre class="prettyprint lang-js">MainPanel = function(){\r
- this.preview = new Ext.Panel({\r
- id: 'preview',\r
- region: 'south',\r
- cls:'preview',\r
- autoScroll: true,\r
- listeners: FeedViewer.LinkInterceptor,\r
-\r
- tbar: [{\r
- id:'tab',\r
- text: 'View in New Tab',\r
- iconCls: 'new-tab',\r
- disabled:true,\r
- handler : this.openTab,\r
- scope: this\r
- },\r
- '-',\r
- {\r
- id:'win',\r
- text: 'Go to Post',\r
- iconCls: 'new-win',\r
- disabled:true,\r
- scope: this,\r
- handler : function(){\r
- window.open(this.gsm.getSelected().data.link);\r
- }\r
- }],\r
-\r
- clear: function(){\r
- this.body.update('');\r
- var items = this.topToolbar.items;\r
- items.get('tab').disable();\r
- items.get('win').disable();\r
- }\r
- });\r
-\r
- this.grid = new FeedGrid(this, {\r
- tbar:[{\r
- text:'Open All',\r
- tooltip: {title:'Open All',text:'Opens all item in tabs'},\r
- iconCls: 'tabs',\r
- handler: this.openAll,\r
- scope:this\r
- },\r
- '-',\r
- {\r
- split:true,\r
- text:'Reading Pane',\r
- tooltip: {title:'Reading Pane',text:'Show, move or hide the Reading Pane'},\r
- iconCls: 'preview-bottom',\r
- handler: this.movePreview.createDelegate(this, []),\r
- menu:{\r
- id:'reading-menu',\r
- cls:'reading-menu',\r
- width:100,\r
- items: [{\r
- text:'Bottom',\r
- checked:true,\r
- group:'rp-group',\r
- checkHandler:this.movePreview,\r
- scope:this,\r
- iconCls:'preview-bottom'\r
- },{\r
- text:'Right',\r
- checked:false,\r
- group:'rp-group',\r
- checkHandler:this.movePreview,\r
- scope:this,\r
- iconCls:'preview-right'\r
- },{\r
- text:'Hide',\r
- checked:false,\r
- group:'rp-group',\r
- checkHandler:this.movePreview,\r
- scope:this,\r
- iconCls:'preview-hide'\r
- }]\r
- }\r
- },\r
- '-',\r
- {\r
- pressed: true,\r
- enableToggle:true,\r
- text:'Summary',\r
- tooltip: {title:'Post Summary',text:'View a short summary of each item in the list'},\r
- iconCls: 'summary',\r
- scope:this,\r
- toggleHandler: function(btn, pressed){\r
- this.grid.togglePreview(pressed);\r
- }\r
- }]\r
- });\r
-\r
- MainPanel.superclass.constructor.call(this, {\r
- id:'main-tabs',\r
- activeTab:0,\r
- region:'center',\r
- margins:'0 5 5 0',\r
- resizeTabs:true,\r
- tabWidth:150,\r
- minTabWidth: 120,\r
- enableTabScroll: true,\r
- plugins: new Ext.ux.TabCloseMenu(),\r
- items: {\r
- id:'main-view',\r
- layout:'border',\r
- title:'Loading...',\r
- hideMode:'offsets',\r
- items:[\r
- this.grid, {\r
- id:'bottom-preview',\r
- layout:'fit',\r
- items:this.preview,\r
- height: 250,\r
- split: true,\r
- border:false,\r
- region:'south'\r
- }, {\r
- id:'right-preview',\r
- layout:'fit',\r
- border:false,\r
- region:'east',\r
- width:350,\r
- split: true,\r
- hidden:true\r
- }]\r
- }\r
- });\r
-\r
- this.gsm = this.grid.getSelectionModel();\r
-\r
- this.gsm.on('rowselect', function(sm, index, record){\r
- FeedViewer.getTemplate().overwrite(this.preview.body, record.data);\r
- var items = this.preview.topToolbar.items;\r
- items.get('tab').enable();\r
- items.get('win').enable();\r
- }, this, {buffer:250});\r
-\r
- this.grid.store.on('beforeload', this.preview.clear, this.preview);\r
- this.grid.store.on('load', this.gsm.selectFirstRow, this.gsm);\r
-\r
- this.grid.on('rowdblclick', this.openTab, this);\r
-};\r
-\r
-Ext.extend(MainPanel, Ext.TabPanel, {\r
-\r
- loadFeed : function(feed){\r
- this.grid.loadFeed(feed.url);\r
- Ext.getCmp('main-view').setTitle(feed.text);\r
- },\r
-\r
- movePreview : function(m, pressed){\r
- if(!m){ // cycle if not a menu item click\r
- var items = Ext.menu.MenuMgr.get('reading-menu').items.items;\r
- var b = items[0], r = items[1], h = items[2];\r
- if(b.checked){\r
- r.setChecked(true);\r
- }else if(r.checked){\r
- h.setChecked(true);\r
- }else if(h.checked){\r
- b.setChecked(true);\r
- }\r
- return;\r
- }\r
- if(pressed){\r
- var preview = this.preview;\r
- var right = Ext.getCmp('right-preview');\r
- var bot = Ext.getCmp('bottom-preview');\r
- var btn = this.grid.getTopToolbar().items.get(2);\r
- switch(m.text){\r
- case 'Bottom':\r
- right.hide();\r
- bot.add(preview);\r
- bot.show();\r
- bot.ownerCt.doLayout();\r
- btn.setIconClass('preview-bottom');\r
- break;\r
- case 'Right':\r
- bot.hide();\r
- right.add(preview);\r
- right.show();\r
- right.ownerCt.doLayout();\r
- btn.setIconClass('preview-right');\r
- break;\r
- case 'Hide':\r
- preview.ownerCt.hide();\r
- preview.ownerCt.ownerCt.doLayout();\r
- btn.setIconClass('preview-hide');\r
- break;\r
- }\r
- }\r
- },\r
-\r
- openTab : function(record){\r
- record = (record && record.data) ? record : this.gsm.getSelected();\r
- var d = record.data;\r
- var id = !d.link ? Ext.id() : d.link.replace(/[^A-Z0-9-_]/gi, '');\r
- var tab;\r
- if(!(tab = this.getItem(id))){\r
- tab = new Ext.Panel({\r
- id: id,\r
- cls:'preview single-preview',\r
- title: d.title,\r
- tabTip: d.title,\r
- html: FeedViewer.getTemplate().apply(d),\r
- closable:true,\r
- listeners: FeedViewer.LinkInterceptor,\r
- autoScroll:true,\r
- border:true,\r
-\r
- tbar: [{\r
- text: 'Go to Post',\r
- iconCls: 'new-win',\r
- handler : function(){\r
- window.open(d.link);\r
- }\r
- }]\r
- });\r
- this.add(tab);\r
- }\r
- this.setActiveTab(tab);\r
- },\r
-\r
- openAll : function(){\r
- this.beginUpdate();\r
- this.grid.store.data.each(this.openTab, this);\r
- this.endUpdate();\r
- }\r
-});\r
-\r
-Ext.reg('appmainpanel', MainPanel);</pre> \r
-</body>\r
-</html>
\ No newline at end of file