webgui/www/extras/yui/docs/container/overview-summary-OverlayManager.js.html
JT Smith 4f68a0933c added YUI and YUI-ext
fixed the resizable text area with IE problem
fixed the ad space with IE problem
merged the 7.2.0 and 7.1.4 change logs
2006-11-07 23:15:57 +00:00

527 lines
16 KiB
HTML

<html>
<head>
<title>JavaScript Documentation - OverlayManager.js</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="header">
<h1>JavaScript Documentation</h1>
<h3><a href="./index.html">Yahoo! UI Library: Container</a></h3>
<div class="breadcrumbs">
<a href="./index.html">Yahoo! UI Library: Container</a>
&gt;
<strong>OverlayManager.js</strong>
</div>
</div>
<div id="body">
<div class="nav">
<div class="module resources">
<ul class="content">
<li><a href="overview-tree.html">Tree View</a></li>
<li><a href="index-all.html">Element Index</a></li>
</ul>
</div>
<div class="module">
<h4><a href="./allclasses-noframe.html">Classes</a></h4>
<ul class="content">
<li>
<a href="YAHOO.util.Config.html">
YAHOO.util.Config</a>
</li>
<li>
<a href="YAHOO.util.KeyListener.html">
YAHOO.util.KeyListener</a>
</li>
<li>
<a href="YAHOO.widget.ContainerEffect.html">
YAHOO.widget.ContainerEffect</a>
</li>
<li>
<a href="YAHOO.widget.Dialog.html">
YAHOO.widget.Dialog</a>
</li>
<li>
<a href="YAHOO.widget.Module.html">
YAHOO.widget.Module</a>
</li>
<li>
<a href="YAHOO.widget.Overlay.html">
YAHOO.widget.Overlay</a>
</li>
<li>
<a href="YAHOO.widget.OverlayManager.html">
YAHOO.widget.OverlayManager</a>
</li>
<li>
<a href="YAHOO.widget.Panel.html">
YAHOO.widget.Panel</a>
</li>
<li>
<a href="YAHOO.widget.SimpleDialog.html">
YAHOO.widget.SimpleDialog</a>
</li>
<li>
<a href="YAHOO.widget.Tooltip.html">
YAHOO.widget.Tooltip</a>
</li>
</ul>
</div>
<div class="module">
<h4><a href="./overview-summary.html">Files</a></h4>
<ul class="content">
<li>
<a href="overview-summary-Config.js.html">
Config.js</a>
</li>
<li>
<a href="overview-summary-ContainerEffect.js.html">
ContainerEffect.js</a>
</li>
<li>
<a href="overview-summary-Dialog.js.html">
Dialog.js</a>
</li>
<li>
<a href="overview-summary-KeyListener.js.html">
KeyListener.js</a>
</li>
<li>
<a href="overview-summary-Module.js.html">
Module.js</a>
</li>
<li>
<a href="overview-summary-Overlay.js.html">
Overlay.js</a>
</li>
<li>
<a href="overview-summary-OverlayManager.js.html">
OverlayManager.js</a>
</li>
<li>
<a href="overview-summary-Panel.js.html">
Panel.js</a>
</li>
<li>
<a href="overview-summary-SimpleDialog.js.html">
SimpleDialog.js</a>
</li>
<li>
<a href="overview-summary-Tooltip.js.html">
Tooltip.js</a>
</li>
</ul>
</div>
</div>
<div class="main">
<h2>OverlayManager.js</h2>
<div class="meta">
</div>
<div class="quick-links">
<strong>Quick Links:</strong>&nbsp;
<a href="#classSummary">Class Summary</a> |
<a href="#source">Source Code</a>
</div>
<div class="section class summaries">
<h3><a name="classSummary">Class Summary</a> <span class="top">[<a href="#top">top</a>]</span></h3>
<div class="content">
<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td class="name">
<a href="YAHOO.widget.OverlayManager.html">YAHOO.widget.OverlayManager</a>
</td>
<td class="overview">&nbsp;</td>
</tr>
</table>
</div>
</div>
<div class="section source">
<h3><a name="source">Souce Code</a> <span class="top">[<a href="#top">top</a>]</span></h3>
<pre class="sourceview"><span class="comment">/*
Copyright (c) 2006, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
Version 0.11.3
*/</span>
<span class="comment">/**
* OverlayManager is used for maintaining the focus status of multiple Overlays.
* <span class="attrib">@param</span> {Array} overlays Optional. A collection of Overlays to register with the manager.
* <span class="attrib">@param</span> {object} userConfig The object literal representing the user configuration of the OverlayManager
* <span class="attrib">@constructor</span>
*/</span>
YAHOO.widget.OverlayManager = <span class="reserved">function</span>(userConfig) {
<span class="reserved">this</span>.init(userConfig);
};
<span class="comment">/**
* The CSS class representing a focused Overlay
* <span class="attrib">@type</span> string
*/</span>
YAHOO.widget.OverlayManager.CSS_FOCUSED = <span class="literal">"focused"</span>;
YAHOO.widget.OverlayManager.<span class="reserved">prototype</span> = {
constructor : YAHOO.widget.OverlayManager,
<span class="comment">/**
* The array of Overlays that are currently registered
* <span class="attrib">@type</span> Array
*/</span>
overlays : null,
<span class="comment">/**
* Initializes the default configuration of the OverlayManager
*/</span>
initDefaultConfig : <span class="reserved">function</span>() {
<span class="reserved">this</span>.cfg.addProperty(<span class="literal">"overlays"</span>, { suppressEvent:true } );
<span class="reserved">this</span>.cfg.addProperty(<span class="literal">"focusevent"</span>, { value:<span class="literal">"mousedown"</span> } );
},
<span class="comment">/**
* Returns the currently focused Overlay
* <span class="attrib">@return</span> {Overlay} The currently focused Overlay
*/</span>
getActive : <span class="reserved">function</span>() {},
<span class="comment">/**
* Focuses the specified Overlay
* <span class="attrib">@param</span> {Overlay} The Overlay to focus
* <span class="attrib">@param</span> {string} The id of the Overlay to focus
*/</span>
focus : <span class="reserved">function</span>(overlay) {},
<span class="comment">/**
* Removes the specified Overlay from the manager
* <span class="attrib">@param</span> {Overlay} The Overlay to remove
* <span class="attrib">@param</span> {string} The id of the Overlay to remove
*/</span>
remove: <span class="reserved">function</span>(overlay) {},
<span class="comment">/**
* Removes focus from all registered Overlays in the manager
*/</span>
blurAll : <span class="reserved">function</span>() {},
<span class="comment">/**
* Initializes the OverlayManager
* <span class="attrib">@param</span> {Array} overlays Optional. A collection of Overlays to register with the manager.
* <span class="attrib">@param</span> {object} userConfig The object literal representing the user configuration of the OverlayManager
*/</span>
init : <span class="reserved">function</span>(userConfig) {
<span class="reserved">this</span>.cfg = new YAHOO.util.Config(<span class="reserved">this</span>);
<span class="reserved">this</span>.initDefaultConfig();
<span class="reserved">if</span> (userConfig) {
<span class="reserved">this</span>.cfg.applyConfig(userConfig, true);
}
<span class="reserved">this</span>.cfg.fireQueue();
var activeOverlay = null;
<span class="reserved">this</span>.getActive = <span class="reserved">function</span>() {
<span class="reserved">return</span> activeOverlay;
};
<span class="reserved">this</span>.focus = <span class="reserved">function</span>(overlay) {
var o = <span class="reserved">this</span>.find(overlay);
<span class="reserved">if</span> (o) {
<span class="reserved">this</span>.blurAll();
activeOverlay = o;
YAHOO.util.Dom.addClass(activeOverlay.element, YAHOO.widget.OverlayManager.CSS_FOCUSED);
<span class="reserved">this</span>.overlays.sort(<span class="reserved">this</span>.compareZIndexDesc);
var topZIndex = YAHOO.util.Dom.getStyle(<span class="reserved">this</span>.overlays[0].element, <span class="literal">"zIndex"</span>);
<span class="reserved">if</span> (! isNaN(topZIndex) &amp;&amp; <span class="reserved">this</span>.overlays[0] != overlay) {
activeOverlay.cfg.setProperty(<span class="literal">"zIndex"</span>, (parseInt(topZIndex, 10) + 2));
}
<span class="reserved">this</span>.overlays.sort(<span class="reserved">this</span>.compareZIndexDesc);
}
};
<span class="reserved">this</span>.remove = <span class="reserved">function</span>(overlay) {
var o = <span class="reserved">this</span>.find(overlay);
<span class="reserved">if</span> (o) {
var originalZ = YAHOO.util.Dom.getStyle(o.element, <span class="literal">"zIndex"</span>);
o.cfg.setProperty(<span class="literal">"zIndex"</span>, -1000, true);
<span class="reserved">this</span>.overlays.sort(<span class="reserved">this</span>.compareZIndexDesc);
<span class="reserved">this</span>.overlays = <span class="reserved">this</span>.overlays.slice(0, <span class="reserved">this</span>.overlays.length-1);
o.cfg.setProperty(<span class="literal">"zIndex"</span>, originalZ, true);
o.cfg.setProperty(<span class="literal">"manager"</span>, null);
o.focusEvent = null;
o.blurEvent = null;
o.focus = null;
o.blur = null;
}
};
<span class="reserved">this</span>.blurAll = <span class="reserved">function</span>() {
activeOverlay = null;
<span class="reserved">for</span> (var o=0;o&lt;<span class="reserved">this</span>.overlays.length;o++) {
YAHOO.util.Dom.removeClass(<span class="reserved">this</span>.overlays[o].element, YAHOO.widget.OverlayManager.CSS_FOCUSED);
}
};
var overlays = <span class="reserved">this</span>.cfg.getProperty(<span class="literal">"overlays"</span>);
<span class="reserved">if</span> (! <span class="reserved">this</span>.overlays) {
<span class="reserved">this</span>.overlays = [];
}
<span class="reserved">if</span> (overlays) {
<span class="reserved">this</span>.register(overlays);
<span class="reserved">this</span>.overlays.sort(<span class="reserved">this</span>.compareZIndexDesc);
}
},
<span class="comment">/**
* Registers an Overlay or an array of Overlays with the manager. Upon registration, the Overlay receives functions for focus and blur, along with CustomEvents for each.
* <span class="attrib">@param</span> {Overlay} overlay An Overlay to register with the manager.
* <span class="attrib">@param</span> {Overlay[]} overlay An array of Overlays to register with the manager.
* <span class="attrib">@return</span> {boolean} True if any Overlays are registered.
*/</span>
register : <span class="reserved">function</span>(overlay) {
<span class="reserved">if</span> (overlay instanceof YAHOO.widget.Overlay) {
overlay.cfg.addProperty(<span class="literal">"manager"</span>, { value:<span class="reserved">this</span> } );
overlay.focusEvent = new YAHOO.util.CustomEvent(<span class="literal">"focus"</span>);
overlay.blurEvent = new YAHOO.util.CustomEvent(<span class="literal">"blur"</span>);
var mgr=<span class="reserved">this</span>;
overlay.focus = <span class="reserved">function</span>() {
mgr.focus(<span class="reserved">this</span>);
<span class="reserved">this</span>.focusEvent.fire();
};
overlay.blur = <span class="reserved">function</span>() {
mgr.blurAll();
<span class="reserved">this</span>.blurEvent.fire();
};
var focusOnDomEvent = <span class="reserved">function</span>(e,obj) {
overlay.focus();
};
var focusevent = <span class="reserved">this</span>.cfg.getProperty(<span class="literal">"focusevent"</span>);
YAHOO.util.Event.addListener(overlay.element,focusevent,focusOnDomEvent,<span class="reserved">this</span>,true);
var zIndex = YAHOO.util.Dom.getStyle(overlay.element, <span class="literal">"zIndex"</span>);
<span class="reserved">if</span> (! isNaN(zIndex)) {
overlay.cfg.setProperty(<span class="literal">"zIndex"</span>, parseInt(zIndex, 10));
} <span class="reserved">else</span> {
overlay.cfg.setProperty(<span class="literal">"zIndex"</span>, 0);
}
<span class="reserved">this</span>.overlays.push(overlay);
<span class="reserved">return</span> true;
} <span class="reserved">else</span> <span class="reserved">if</span> (overlay instanceof Array) {
var regcount = 0;
<span class="reserved">for</span> (var i=0;i&lt;overlay.length;i++) {
<span class="reserved">if</span> (<span class="reserved">this</span>.register(overlay[i])) {
regcount++;
}
}
<span class="reserved">if</span> (regcount &gt; 0) {
<span class="reserved">return</span> true;
}
} <span class="reserved">else</span> {
<span class="reserved">return</span> false;
}
},
<span class="comment">/**
* Attempts to locate an Overlay by instance or ID.
* <span class="attrib">@param</span> {Overlay} overlay An Overlay to locate within the manager
* <span class="attrib">@param</span> {string} overlay An Overlay id to locate within the manager
* <span class="attrib">@return</span> {Overlay} The requested Overlay, if found, or null if it cannot be located.
*/</span>
find : <span class="reserved">function</span>(overlay) {
<span class="reserved">if</span> (overlay instanceof YAHOO.widget.Overlay) {
<span class="reserved">for</span> (var o=0;o&lt;<span class="reserved">this</span>.overlays.length;o++) {
<span class="reserved">if</span> (<span class="reserved">this</span>.overlays[o] == overlay) {
<span class="reserved">return</span> <span class="reserved">this</span>.overlays[o];
}
}
} <span class="reserved">else</span> <span class="reserved">if</span> (typeof overlay == <span class="literal">"string"</span>) {
<span class="reserved">for</span> (var p=0;p&lt;<span class="reserved">this</span>.overlays.length;p++) {
<span class="reserved">if</span> (<span class="reserved">this</span>.overlays[p].id == overlay) {
<span class="reserved">return</span> <span class="reserved">this</span>.overlays[p];
}
}
}
<span class="reserved">return</span> null;
},
<span class="comment">/**
* Used for sorting the manager's Overlays by z-index.
* <span class="attrib">@private</span>
*/</span>
compareZIndexDesc : <span class="reserved">function</span>(o1, o2) {
var zIndex1 = o1.cfg.getProperty(<span class="literal">"zIndex"</span>);
var zIndex2 = o2.cfg.getProperty(<span class="literal">"zIndex"</span>);
<span class="reserved">if</span> (zIndex1 &gt; zIndex2) {
<span class="reserved">return</span> -1;
} <span class="reserved">else</span> <span class="reserved">if</span> (zIndex1 &lt; zIndex2) {
<span class="reserved">return</span> 1;
} <span class="reserved">else</span> {
<span class="reserved">return</span> 0;
}
},
<span class="comment">/**
* Shows all Overlays in the manager.
*/</span>
showAll : <span class="reserved">function</span>() {
<span class="reserved">for</span> (var o=0;o&lt;<span class="reserved">this</span>.overlays.length;o++) {
<span class="reserved">this</span>.overlays[o].show();
}
},
<span class="comment">/**
* Hides all Overlays in the manager.
*/</span>
hideAll : <span class="reserved">function</span>() {
<span class="reserved">for</span> (var o=0;o&lt;<span class="reserved">this</span>.overlays.length;o++) {
<span class="reserved">this</span>.overlays[o].hide();
}
},
<span class="comment">/**
* Returns a string representation of the object.
* <span class="attrib">@type</span> string
*/</span>
toString : <span class="reserved">function</span>() {
<span class="reserved">return</span> <span class="literal">"OverlayManager"</span>;
}
};</pre>
</div>
</div>
</div>
<div id="footer">
<hr />
Copyright &copy; 2006 Yahoo! Inc. All rights reserved.
<br /><br />
Documentation generated by <a href="http://jsdoc.sourceforge.net/">
JSDoc</a>
</div>
</body>
</html>