MainPanel.js
资源名称:ext-3.1.0.zip [点击查看]
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:7k
源码类别:
JavaScript
开发平台:
JavaScript
- /*! * Ext JS Library 3.1.0 * Copyright(c) 2006-2009 Ext JS, LLC * licensing@extjs.com * http://www.extjs.com/license */ 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);