content_params.new_tab = xulG.new_tab;
content_params.set_tab = xulG.set_tab;
content_params.close_tab = xulG.close_tab;
+ content_params.lock_tab = xulG.lock_tab;
+ content_params.unlock_tab = xulG.unlock_tab;
+ content_params.inspect_tab = xulG.inspect_tab;
content_params.new_patron_tab = xulG.new_patron_tab;
content_params.set_patron_tab = xulG.set_patron_tab;
content_params.volume_item_creator = xulG.volume_item_creator;
content_params.new_tab = xulG.new_tab;
content_params.set_tab = xulG.set_tab;
content_params.close_tab = xulG.close_tab;
+ content_params.lock_tab = xulG.lock_tab;
+ content_params.unlock_tab = xulG.unlock_tab;
+ content_params.inspect_tab = xulG.inspect_tab;
content_params.new_patron_tab = xulG.new_patron_tab;
content_params.set_patron_tab = xulG.set_patron_tab;
content_params.volume_item_creator = xulG.volume_item_creator;
'close_tab' : function (specific_idx) {
var idx = specific_idx || this.controller.view.tabs.selectedIndex;
var panel = this.controller.view.panels.childNodes[ idx ];
+
+ var tab = this.controller.view.tabs.getItemAtIndex( idx );
+ var id = tab.getAttribute('id');
+ if (typeof this.tab_semaphores[id] != 'undefined') {
+ if (this.tab_semaphores[id] > 0) {
+ var confirmation = window.confirm(offlineStrings.getString('menu.close_tab.unsaved_data_warning'));
+ if (!confirmation) { return; }
+ delete this.tab_semaphores[id];
+ }
+ }
+
this.controller.view.tabs.removeItemAt(idx);
this.controller.view.panels.removeChild(panel);
if(this.controller.view.tabs.childNodes.length > idx) {
if (params.src) { help_btn.setAttribute('src', params.src); }
}
},
+
+ 'tab_semaphores' : {},
+
'set_tab' : function(url,params,content_params) {
var obj = this;
if (!url) url = '/xul/server/';
var idx = this.controller.view.tabs.selectedIndex;
if (params && typeof params.index != 'undefined') idx = params.index;
var tab = this.controller.view.tabs.childNodes[ idx ];
+
+ var id = tab.getAttribute('id');
+ if (id) {
+ if (typeof obj.tab_semaphores[id] != 'undefined') {
+ if (obj.tab_semaphores[id] > 0) {
+ var confirmation = window.confirm(offlineStrings.getString('menu.replace_tab.unsaved_data_warning'));
+ if (!confirmation) { return; }
+ delete obj.tab_semaphores[id];
+ }
+ }
+ }
+ var unique_id = idx + ':' + new Date();
+ tab.setAttribute('id',unique_id);
if (params.focus) tab.focus();
var panel = this.controller.view.panels.childNodes[ idx ];
while ( panel.lastChild ) panel.removeChild( panel.lastChild );
+ content_params.lock_tab = function() {
+ var id = tab.getAttribute('id');
+ if (typeof obj.tab_semaphores[id] == 'undefined') {
+ obj.tab_semaphores[id] = 0;
+ }
+ obj.tab_semaphores[id]++;
+ return obj.tab_semaphores[id];
+ };
+ content_params.unlock_tab = function() {
+ var id = tab.getAttribute('id');
+ if (typeof obj.tab_semaphores[id] == 'undefined') {
+ obj.tab_semaphores[id] = 0;
+ }
+ obj.tab_semaphores[id]--;
+ if (obj.tab_semaphores[id] < 0) { obj.tab_semaphores[id] = 0; }
+ return obj.tab_semaphores[id];
+ };
+ content_params.inspect_tab = function() {
+ var id = tab.getAttribute('id');
+ return 'id = ' + id + ' semaphore = ' + obj.tab_semaphores[id];
+ }
content_params.new_tab = function(a,b,c) { return obj.new_tab(a,b,c); };
content_params.set_tab = function(a,b,c) { return obj.set_tab(a,b,c); };
content_params.close_tab = function() { return obj.close_tab(); };
cw.xulG = obj.passthru_content_params || {};
if (!cw.xulG.set_tab) { cw.xulG.set_tab = function(a,b,c) { return window.xulG.set_tab(a,b,c); }; }
if (!cw.xulG.new_tab) { cw.xulG.new_tab = function(a,b,c) { return window.xulG.new_tab(a,b,c); }; }
+ if (!cw.xulG.close_tab) { cw.xulG.close_tab = function(a) { return window.xulG.close_tab(a); }; }
+ if (!cw.xulG.lock_tab) { cw.xulG.lock_tab = function() { return window.xulG.lock_tab(); }; }
+ if (!cw.xulG.unlock_tab) { cw.xulG.unlock_tab = function() { return window.xulG.unlock_tab(); }; }
+ if (!cw.xulG.inspect_tab) { cw.xulG.inspect_tab = function() { return window.xulG.inspect_tab(); }; }
if (!cw.xulG.new_patron_tab) { cw.xulG.new_patron_tab = function(a,b) { return window.xulG.new_patron_tab(a,b); }; }
if (!cw.xulG.set_patron_tab) { cw.xulG.set_patron_tab = function(a,b) { return window.xulG.set_patron_tab(a,b); }; }
if (!cw.xulG.volume_item_creator) { cw.xulG.volume_item_creator = function(a) { return window.xulG.volume_item_creator(a); }; }