--- /dev/null
+<html>\r
+<head>\r
+ <title>The source code</title>\r
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body onload="prettyPrint();">\r
+ <pre class="prettyprint lang-js"><div id="cls-Ext.ux.TabCloseMenu"></div>/**\r
+ * @class Ext.ux.TabCloseMenu\r
+ * @extends Object \r
+ * Plugin (ptype = 'tabclosemenu') for adding a close context menu to tabs.\r
+ * \r
+ * @ptype tabclosemenu\r
+ */\r
+Ext.ux.TabCloseMenu = function(){\r
+ var tabs, menu, ctxItem;\r
+ this.init = function(tp){\r
+ tabs = tp;\r
+ tabs.on('contextmenu', onContextMenu);\r
+ };\r
+\r
+ function onContextMenu(ts, item, e){\r
+ if(!menu){ // create context menu on first right click\r
+ menu = new Ext.menu.Menu({ \r
+ items: [{\r
+ id: tabs.id + '-close',\r
+ text: 'Close Tab',\r
+ handler : function(){\r
+ tabs.remove(ctxItem);\r
+ }\r
+ },{\r
+ id: tabs.id + '-close-others',\r
+ text: 'Close Other Tabs',\r
+ handler : function(){\r
+ tabs.items.each(function(item){\r
+ if(item.closable && item != ctxItem){\r
+ tabs.remove(item);\r
+ }\r
+ });\r
+ }\r
+ }]});\r
+ }\r
+ ctxItem = item;\r
+ var items = menu.items;\r
+ items.get(tabs.id + '-close').setDisabled(!item.closable);\r
+ var disableOthers = true;\r
+ tabs.items.each(function(){\r
+ if(this != item && this.closable){\r
+ disableOthers = false;\r
+ return false;\r
+ }\r
+ });\r
+ items.get(tabs.id + '-close-others').setDisabled(disableOthers);\r
+ e.stopEvent();\r
+ menu.showAt(e.getPoint());\r
+ }\r
+};\r
+\r
+Ext.preg('tabclosemenu', Ext.ux.TabCloseMenu);\r
+</pre> \r
+</body>\r
+</html>
\ No newline at end of file