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