3 <title>The source code</title>
\r
4 <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
\r
5 <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
\r
7 <body onload="prettyPrint();">
\r
8 <pre class="prettyprint lang-js">MainPanel = function(){
\r
9 this.preview = new Ext.Panel({
\r
14 listeners: FeedViewer.LinkInterceptor,
\r
15 enableTabbing: true,
\r
18 text: 'View in New Tab',
\r
21 handler : this.openTab,
\r
31 handler : function(){
\r
32 window.open(this.gsm.getSelected().data.link);
\r
37 this.body.update('');
\r
38 var items = this.topToolbar.items;
\r
39 items.get('tab').disable();
\r
40 items.get('win').disable();
\r
44 this.grid = new FeedGrid(this, {
\r
47 tooltip: {title:'Open All',text:'Opens all item in tabs'},
\r
49 handler: this.openAll,
\r
55 text:'Reading Pane',
\r
56 tooltip: {title:'Reading Pane',text:'Show, move or hide the Reading Pane'},
\r
57 iconCls: 'preview-bottom',
\r
58 handler: this.movePreview.createDelegate(this, []),
\r
67 checkHandler:this.movePreview,
\r
69 iconCls:'preview-bottom'
\r
74 checkHandler:this.movePreview,
\r
76 iconCls:'preview-right'
\r
81 checkHandler:this.movePreview,
\r
83 iconCls:'preview-hide'
\r
92 tooltip: {title:'Post Summary',text:'View a short summary of each item in the list'},
\r
95 toggleHandler: function(btn, pressed){
\r
96 this.grid.togglePreview(pressed);
\r
101 this.grid.on('afterrender', function() {
\r
102 //var fe = Ext.aria.FocusMgr.getByContainer(this.grid.body);
\r
103 //fe.on('enter', this.openTab, this);
\r
106 MainPanel.superclass.constructor.call(this, {
\r
114 enableTabScroll: true,
\r
115 plugins: new Ext.ux.TabCloseMenu(),
\r
119 title:'Loading...',
\r
120 hideMode:'offsets',
\r
123 id:'bottom-preview',
\r
125 items:this.preview,
\r
131 id:'right-preview',
\r
142 this.gsm = this.grid.getSelectionModel();
\r
144 this.gsm.on('rowselect', function(sm, index, record){
\r
145 FeedViewer.getTemplate().overwrite(this.preview.body, record.data);
\r
146 var items = this.preview.topToolbar.items;
\r
147 items.get('tab').enable();
\r
148 items.get('win').enable();
\r
149 }, this, {buffer:250});
\r
151 this.grid.store.on('beforeload', this.preview.clear, this.preview);
\r
152 this.grid.store.on('load', this.gsm.selectFirstRow, this.gsm);
\r
154 this.grid.on('rowdblclick', this.openTab, this);
\r
157 Ext.extend(MainPanel, Ext.TabPanel, {
\r
159 loadFeed : function(feed){
\r
160 this.grid.loadFeed(feed.url);
\r
161 Ext.getCmp('main-view').setTitle(feed.text);
\r
164 movePreview : function(m, pressed){
\r
165 if(!m){ // cycle if not a menu item click
\r
166 var readMenu = Ext.menu.MenuMgr.get('reading-menu');
\r
168 var items = readMenu.items.items;
\r
169 var b = items[0], r = items[1], h = items[2];
\r
171 r.setChecked(true);
\r
172 }else if(r.checked){
\r
173 h.setChecked(true);
\r
174 }else if(h.checked){
\r
175 b.setChecked(true);
\r
180 var preview = this.preview;
\r
181 var right = Ext.getCmp('right-preview');
\r
182 var bot = Ext.getCmp('bottom-preview');
\r
183 var btn = this.grid.getTopToolbar().items.get(2);
\r
189 bot.ownerCt.doLayout();
\r
190 btn.setIconClass('preview-bottom');
\r
194 right.add(preview);
\r
196 right.ownerCt.doLayout();
\r
197 btn.setIconClass('preview-right');
\r
200 preview.ownerCt.hide();
\r
201 preview.ownerCt.ownerCt.doLayout();
\r
202 btn.setIconClass('preview-hide');
\r
208 openTab : function(record){
\r
209 record = (record && record.data) ? record : this.gsm.getSelected();
\r
210 var d = record.data;
\r
211 var id = !d.link ? Ext.id() : d.link.replace(/[^A-Z0-9-_]/gi, '');
\r
213 if(!(tab = this.getItem(id))){
\r
214 tab = new Ext.Panel({
\r
216 cls:'preview single-preview',
\r
219 html: FeedViewer.getTemplate().apply(d),
\r
220 enableTabbing: true,
\r
222 listeners: FeedViewer.LinkInterceptor,
\r
226 text: 'Go to Post',
\r
227 iconCls: 'new-win',
\r
228 handler : function(){
\r
229 window.open(d.link);
\r
235 this.setActiveTab(tab);
\r
239 openAll : function(){
\r
240 this.beginUpdate();
\r
241 this.grid.store.data.each(this.openTab, this);
\r
246 Ext.reg('appmainpanel', MainPanel);</pre>
\r