/** * @class Ext.ux.TabCloseMenu * @extends Object * Plugin (ptype = 'tabclosemenu') for adding a close context menu to tabs. * * @ptype tabclosemenu */ Ext.ux.TabCloseMenu = function(){ var tabs, menu, ctxItem; this.init = function(tp){ tabs = tp; tabs.on('contextmenu', onContextMenu); }; function onContextMenu(ts, item, e){ if(!menu){ // create context menu on first right click menu = new Ext.menu.Menu({ items: [{ id: tabs.id + '-close', text: 'Close Tab', handler : function(){ tabs.remove(ctxItem); } },{ id: tabs.id + '-close-others', text: 'Close Other Tabs', handler : function(){ tabs.items.each(function(item){ if(item.closable && item != ctxItem){ tabs.remove(item); } }); } }]}); } ctxItem = item; var items = menu.items; items.get(tabs.id + '-close').setDisabled(!item.closable); var disableOthers = true; tabs.items.each(function(){ if(this != item && this.closable){ disableOthers = false; return false; } }); items.get(tabs.id + '-close-others').setDisabled(disableOthers); e.stopEvent(); menu.showAt(e.getPoint()); } }; Ext.preg('tabclosemenu', Ext.ux.TabCloseMenu);