TabCloseMenu.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:2k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ /**
  2.  * @class Ext.ux.TabCloseMenu
  3.  * @extends Object 
  4.  * Plugin (ptype = 'tabclosemenu') for adding a close context menu to tabs.
  5.  * 
  6.  * @ptype tabclosemenu
  7.  */
  8. Ext.ux.TabCloseMenu = function(){
  9.     var tabs, menu, ctxItem;
  10.     this.init = function(tp){
  11.         tabs = tp;
  12.         tabs.on('contextmenu', onContextMenu);
  13.     };
  14.     function onContextMenu(ts, item, e){
  15.         if(!menu){ // create context menu on first right click
  16.             menu = new Ext.menu.Menu({            
  17.             items: [{
  18.                 id: tabs.id + '-close',
  19.                 text: 'Close Tab',
  20.                 handler : function(){
  21.                     tabs.remove(ctxItem);
  22.                 }
  23.             },{
  24.                 id: tabs.id + '-close-others',
  25.                 text: 'Close Other Tabs',
  26.                 handler : function(){
  27.                     tabs.items.each(function(item){
  28.                         if(item.closable && item != ctxItem){
  29.                             tabs.remove(item);
  30.                         }
  31.                     });
  32.                 }
  33.             }]});
  34.         }
  35.         ctxItem = item;
  36.         var items = menu.items;
  37.         items.get(tabs.id + '-close').setDisabled(!item.closable);
  38.         var disableOthers = true;
  39.         tabs.items.each(function(){
  40.             if(this != item && this.closable){
  41.                 disableOthers = false;
  42.                 return false;
  43.             }
  44.         });
  45.         items.get(tabs.id + '-close-others').setDisabled(disableOthers);
  46. e.stopEvent();
  47.         menu.showAt(e.getPoint());
  48.     }
  49. };
  50. Ext.preg('tabclosemenu', Ext.ux.TabCloseMenu);