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