diff options
author | Derrell Lipman <derrell@samba.org> | 2006-12-30 05:09:59 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:30:29 -0500 |
commit | 1170417ceeb8c49a46cda522a38eaa71c9cae30c (patch) | |
tree | dbf4c3fdcdb1af928dbd55f642ea40f00d09283a /webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js | |
parent | 23ccdca41670085da4486841b0d4900b4c8b02f3 (diff) | |
download | samba-1170417ceeb8c49a46cda522a38eaa71c9cae30c.tar.gz samba-1170417ceeb8c49a46cda522a38eaa71c9cae30c.tar.bz2 samba-1170417ceeb8c49a46cda522a38eaa71c9cae30c.zip |
r20414: Start to make SWAT usable by others. This is just a start...
(This used to be commit 26a34037a7ca6fbd05c5a6f7c2d5973e34bc6918)
Diffstat (limited to 'webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js')
-rw-r--r-- | webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js new file mode 100644 index 0000000000..96e13acd4d --- /dev/null +++ b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/manager/object/WindowManager.js @@ -0,0 +1,158 @@ +/* ************************************************************************ + + qooxdoo - the new era of web development + + http://qooxdoo.org + + Copyright: + 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org + + License: + LGPL 2.1: http://www.gnu.org/licenses/lgpl.html + + Authors: + * Sebastian Werner (wpbasti) + * Andreas Ecker (ecker) + +************************************************************************ */ + +/* ************************************************************************ + +#module(ui_window) + +************************************************************************ */ + +/*! + This singleton manages qx.ui.window.Windows +*/ +qx.OO.defineClass("qx.manager.object.WindowManager", qx.manager.object.ObjectManager, +function() { + qx.manager.object.ObjectManager.call(this); +}); + +qx.OO.addProperty({ name : "activeWindow", type : "object" }); + + + + + + +/* +--------------------------------------------------------------------------- + MODIFIER +--------------------------------------------------------------------------- +*/ + +qx.Proto._modifyActiveWindow = function(propValue, propOldValue, propData) +{ + qx.manager.object.PopupManager.getInstance().update(); + + if (propOldValue) { + propOldValue.setActive(false); + } + + if (propValue) { + propValue.setActive(true); + } + + if (propOldValue && propOldValue.getModal()) { + propOldValue.getTopLevelWidget().release(propOldValue); + } + + if (propValue && propValue.getModal()) { + propValue.getTopLevelWidget().block(propValue); + } + + return true; +} + + + + + + +/* +--------------------------------------------------------------------------- + UTILITIES +--------------------------------------------------------------------------- +*/ + +qx.Proto.update = function(oTarget) +{ + var vWindow, vHashCode; + var vAll = this.getAll(); + + for (var vHashCode in vAll) + { + vWindow = vAll[vHashCode]; + + if(!vWindow.getAutoHide()) { + continue; + } + + vWindow.hide(); + } +} + + + + + +/* +--------------------------------------------------------------------------- + MANAGER INTERFACE +--------------------------------------------------------------------------- +*/ + +qx.Proto.compareWindows = function(w1, w2) +{ + switch(w1.getWindowManager().getActiveWindow()) + { + case w1: + return 1; + + case w2: + return -1; + } + + return w1.getZIndex() - w2.getZIndex(); +} + +qx.Proto.add = function(vWindow) +{ + qx.manager.object.ObjectManager.prototype.add.call(this, vWindow); + + // this.debug("Add: " + vWindow); + this.setActiveWindow(vWindow); +} + +qx.Proto.remove = function(vWindow) +{ + qx.manager.object.ObjectManager.prototype.remove.call(this, vWindow); + + // this.debug("Remove: " + vWindow); + + if (this.getActiveWindow() == vWindow) + { + var a = []; + for (var i in this._objects) { + a.push(this._objects[i]); + } + + var l = a.length; + + if (l==0) + { + this.setActiveWindow(null); + } + else if (l==1) + { + this.setActiveWindow(a[0]); + } + else if (l>1) + { + a.sort(this.compareWindows); + this.setActiveWindow(a[l-1]); + } + } +} |