65 lines
No EOL
1.4 KiB
JavaScript
Vendored
65 lines
No EOL
1.4 KiB
JavaScript
Vendored
|
|
namespace("WM");
|
|
|
|
|
|
WM.WindowManager = (function()
|
|
{
|
|
function WindowManager()
|
|
{
|
|
// An empty list of windows under window manager control
|
|
this.Windows = [ ];
|
|
}
|
|
|
|
|
|
WindowManager.prototype.AddWindow = function(title, x, y, width, height, parent_node, user_data)
|
|
{
|
|
// Create the window and add it to the list of windows
|
|
var wnd = new WM.Window(this, title, x, y, width, height, parent_node, user_data);
|
|
this.Windows.push(wnd);
|
|
|
|
// Always bring to the top on creation
|
|
wnd.SetTop();
|
|
|
|
return wnd;
|
|
}
|
|
|
|
|
|
WindowManager.prototype.RemoveWindow = function(window)
|
|
{
|
|
// Remove from managed window list
|
|
var index = this.Windows.indexOf(window);
|
|
if (index != -1)
|
|
{
|
|
this.Windows.splice(index, 1);
|
|
}
|
|
}
|
|
|
|
|
|
WindowManager.prototype.SetTopWindow = function(top_wnd)
|
|
{
|
|
// Bring the window to the top of the window list
|
|
var top_wnd_index = this.Windows.indexOf(top_wnd);
|
|
if (top_wnd_index != -1)
|
|
this.Windows.splice(top_wnd_index, 1);
|
|
this.Windows.push(top_wnd);
|
|
|
|
// Set a CSS z-index for each visible window from the bottom up
|
|
for (var i in this.Windows)
|
|
{
|
|
var wnd = this.Windows[i];
|
|
if (!wnd.Visible)
|
|
continue;
|
|
|
|
// Ensure there's space between each window for the elements inside to be sorted
|
|
var z = (parseInt(i) + 1) * 10;
|
|
wnd.Node.style.zIndex = z;
|
|
|
|
// Notify window that its z-order has changed
|
|
wnd.NotifyChange();
|
|
}
|
|
}
|
|
|
|
|
|
return WindowManager;
|
|
|
|
})(); |