From 1a7171fa44057dea1cc67d000cb941d53ba28cbd Mon Sep 17 00:00:00 2001 From: phasefx Date: Tue, 29 Nov 2005 21:19:29 +0000 Subject: [PATCH] some tab handling git-svn-id: svn://svn.open-ils.org/ILS/trunk@2125 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/xul/staff_client/server/main/menu.js | 113 +++++++++++++++++- 1 file changed, 108 insertions(+), 5 deletions(-) diff --git a/Open-ILS/xul/staff_client/server/main/menu.js b/Open-ILS/xul/staff_client/server/main/menu.js index 373bbfbf8f..56b0e23e34 100644 --- a/Open-ILS/xul/staff_client/server/main/menu.js +++ b/Open-ILS/xul/staff_client/server/main/menu.js @@ -15,23 +15,126 @@ main.menu.prototype = { var obj = this; + obj.tabbox = obj.w.document.getElementById('main_tabbox'); + obj.tabs = obj.tabbox.firstChild; + obj.panels = obj.tabbox.lastChild; + var cmd_close_window = this.w.document.getElementById('cmd_close_window'); if (cmd_close_window) - cmd_close_window.addEventListener('command', function() { obj.w.close(); }, false); + cmd_close_window.addEventListener('command', + function() { + obj.w.close(); + }, false); var cmd_new_window = this.w.document.getElementById('cmd_new_window'); if (cmd_new_window) cmd_new_window.addEventListener('command', - function() { obj.window.open('/xul/server/main/menu_frame.xul','test' + obj.window.appshell_name_increment++ ,'chrome'); }, - false ); + function() { + obj.window.open('/xul/server/main/menu_frame.xul','test' + obj.window.appshell_name_increment++ ,'chrome'); + }, false ); + + var cmd_new_tab = this.w.document.getElementById('cmd_new_tab'); + if (cmd_new_tab) + cmd_new_tab.addEventListener('command', + function(ev) { + obj.new_tab(); + }, false ); + + var cmd_close_tab = this.w.document.getElementById('cmd_close_tab'); + if (cmd_new_tab) + cmd_close_tab.addEventListener('command', + function(ev) { + obj.close_tab(); + }, false ); var cmd_broken = this.w.document.getElementById('cmd_broken'); if (cmd_broken) - cmd_broken.addEventListener('command', function() { alert('Not Yet Implemented'); }, false); + cmd_broken.addEventListener('command', + function() { + alert('Not Yet Implemented'); + }, false); }, - 'close_tab' : function (t_idx) { + 'close_tab' : function () { + var idx = this.tabs.selectedIndex; + if (idx == 0) { + try { + this.tabs.advanceSelectedTab(+1); + } catch(E) { + this.error.sdump('D_TAB','failed tabs.advanceSelectedTab(+1):'+js2JSON(E) + '\n'); + try { + this.tabs.advanceSelectedTab(-1); + } catch(E) { + this.error.sdump('D_TAB','failed again tabs.advanceSelectedTab(-1):'+js2JSON(E) + '\n'); + } + } + } else { + try { + this.tabs.advanceSelectedTab(-1); + } catch(E) { + this.error.sdump('D_TAB','failed tabs.advanceSelectedTab(-1):'+js2JSON(E) + '\n'); + try { + this.tabs.advanceSelectedTab(+1); + } catch(E) { + this.error.sdump('D_TAB','failed again tabs.advanceSelectedTab(+1):'+js2JSON(E) + '\n'); + } + } + + } + + this.error.sdump('D_TAB','\tnew tabbox.selectedIndex = ' + this.tabbox.selectedIndex + '\n'); + + this.tabs.childNodes[ idx ].hidden = true; + this.error.sdump('D_TAB','tabs.childNodes[ ' + idx + ' ].hidden = true;\n'); + + // Make sure we keep at least one tab open. + var tab_flag = true; + for (var i = 0; i < this.tabs.childNodes.length; i++) { + var tab = this.tabs.childNodes[i]; + if (!tab.hidden) + tab_flag = false; + } + if (tab_flag) this.new_tab(); + }, + + 'find_free_tab' : function() { + var last_not_hidden = -1; + for (var i = 0; i