1 dump('entering main/menu.js\n');
3 if (typeof main == 'undefined') main = {};
4 main.menu = function () {
6 JSAN.use('util.error'); this.error = new util.error();
7 JSAN.use('main.window'); this.window = new main.window();
12 main.menu.prototype = {
18 obj.tabbox = obj.w.document.getElementById('main_tabbox');
19 obj.tabs = obj.tabbox.firstChild;
20 obj.panels = obj.tabbox.lastChild;
22 var cmd_close_window = this.w.document.getElementById('cmd_close_window');
24 cmd_close_window.addEventListener('command',
29 var cmd_new_window = this.w.document.getElementById('cmd_new_window');
31 cmd_new_window.addEventListener('command',
33 obj.window.open('/xul/server/main/menu_frame.xul','test' + obj.window.appshell_name_increment++ ,'chrome');
36 var cmd_new_tab = this.w.document.getElementById('cmd_new_tab');
38 cmd_new_tab.addEventListener('command',
43 var cmd_close_tab = this.w.document.getElementById('cmd_close_tab');
45 cmd_close_tab.addEventListener('command',
50 var cmd_broken = this.w.document.getElementById('cmd_broken');
52 cmd_broken.addEventListener('command',
54 alert('Not Yet Implemented');
59 'close_tab' : function () {
60 var idx = this.tabs.selectedIndex;
63 this.tabs.advanceSelectedTab(+1);
65 this.error.sdump('D_TAB','failed tabs.advanceSelectedTab(+1):'+js2JSON(E) + '\n');
67 this.tabs.advanceSelectedTab(-1);
69 this.error.sdump('D_TAB','failed again tabs.advanceSelectedTab(-1):'+js2JSON(E) + '\n');
74 this.tabs.advanceSelectedTab(-1);
76 this.error.sdump('D_TAB','failed tabs.advanceSelectedTab(-1):'+js2JSON(E) + '\n');
78 this.tabs.advanceSelectedTab(+1);
80 this.error.sdump('D_TAB','failed again tabs.advanceSelectedTab(+1):'+js2JSON(E) + '\n');
86 this.error.sdump('D_TAB','\tnew tabbox.selectedIndex = ' + this.tabbox.selectedIndex + '\n');
88 this.tabs.childNodes[ idx ].hidden = true;
89 this.error.sdump('D_TAB','tabs.childNodes[ ' + idx + ' ].hidden = true;\n');
91 // Make sure we keep at least one tab open.
93 for (var i = 0; i < this.tabs.childNodes.length; i++) {
94 var tab = this.tabs.childNodes[i];
98 if (tab_flag) this.new_tab();
101 'find_free_tab' : function() {
102 var last_not_hidden = -1;
103 for (var i = 0; i<this.tabs.childNodes.length; i++) {
104 var tab = this.tabs.childNodes[i];
108 if (last_not_hidden == this.tabs.childNodes.length - 1)
109 last_not_hidden = -1;
110 // If the one next to last_not_hidden is hidden, we want it.
111 // Basically, we fill in tabs after existing tabs for as
113 var idx = last_not_hidden + 1;
114 var candidate = this.tabs.childNodes[ idx ];
115 if (candidate.hidden)
117 // Alright, find the first hidden then
118 for (var i = 0; i<this.tabs.childNodes.length; i++) {
119 var tab = this.tabs.childNodes[i];
126 'new_tab' : function() {
127 var tc = this.find_free_tab();
128 if (tc == -1) { return null; } // 9 tabs max
129 var tab = this.tabs.childNodes[ tc ];
130 //tab.setAttribute('label','Tab ' + (tc + 1) );
133 this.tabs.selectedIndex = tc;
134 //this.replace_tab(tc,'about:blank');
136 this.error.sdump('D_ERROR',E);
142 dump('exiting main/menu.js\n');