xcat-core/xCAT-web/javascripts/window_ext.js

115 lines
3.1 KiB
JavaScript
Raw Normal View History

// Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com)
// YOU MUST INCLUDE window.js BEFORE
//
// Object to store hide/show windows status in a cookie
// Just add at the end of your HTML file this javascript line: WindowStore.init()
WindowStore = {
doSetCookie: false,
cookieName: "__window_store__",
expired: null,
// Init function with two optional parameters
// - cookieName (default = __window_store__)
// - expiration date (default 3 years from now)
init: function(cookieName, expired) {
WindowStore.cookieName = cookieName || WindowStore.cookieName
if (! expired) {
var today = new Date();
today.setYear(today.getYear()+1903);
WindowStore.expired = today;
}
else
WindowStore.expired = expired;
Windows.windows.each(function(win) {
win.setCookie(win.getId(), WindowStore.expired);
});
// Create observer on show/hide events
var myObserver = {
onShow: function(eventName, win) {
WindowStore._saveCookie();
},
onClose: function(eventName, win) {
WindowStore._saveCookie();
},
onHide: function(eventName, win) {
WindowStore._saveCookie();
}
}
Windows.addObserver(myObserver);
WindowStore._restoreWindows();
WindowStore._saveCookie();
},
show: function(win) {
eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName));
if (cookie != null) {
if (cookie[win.getId()])
win.show();
}
else
win.show();
},
// Function to store windows show/hide status in a cookie
_saveCookie: function() {
if (!doSetCookie)
return;
var cookieValue = "{";
Windows.windows.each(function(win) {
if (cookieValue != "{")
cookieValue += ","
cookieValue += win.getId() + ": " + win.isVisible();
});
cookieValue += "}"
WindowUtilities.setCookie(cookieValue, [WindowStore.cookieName, WindowStore.expired]);
},
// Function to restore windows show/hide status from a cookie if exists
_restoreWindows: function() {
eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName));
if (cookie != null) {
doSetCookie = false;
Windows.windows.each(function(win) {
if (cookie[win.getId()])
win.show();
});
}
doSetCookie = true;
}
}
// Object to set a close key an all windows
WindowCloseKey = {
keyCode: Event.KEY_ESC,
init: function(keyCode) {
if (keyCode)
WindowCloseKey.keyCode = keyCode;
Event.observe(document, 'keydown', this._closeCurrentWindow.bindAsEventListener(this));
},
_closeCurrentWindow: function(event) {
var e = event || window.event
var characterCode = e.which || e.keyCode;
// Check if there is a top window (it means it's an URL content)
var win = top.Windows.focusedWindow;
if (characterCode == WindowCloseKey.keyCode && win) {
if (win.cancelCallback)
top.Dialog.cancelCallback();
else if (win.okCallback)
top.Dialog.okCallback();
else
top.Windows.close(top.Windows.focusedWindow.getId());
}
}
}