webgui/www/extras/yui/docs/menubar.js.html
2008-03-25 16:13:25 +00:00

631 lines
43 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>API: menu menubar.js (YUI Library)</title>
<link rel="stylesheet" type="text/css" href="assets/api.css">
<script type="text/javascript" src="assets/api-js"></script>
<script type="text/javascript" src="assets/ac-js"></script>
</head>
<body id="yahoo-com">
<div id="doc3" class="yui-t2">
<div id="hd">
<a href="http://developer.yahoo.com/yui/"><h1>Yahoo! UI Library</h1></a>
<h3>Menu&nbsp; <span class="subtitle">2.5.1</span></h3>
<p>
<a href="./index.html">Yahoo! UI Library</a>
&gt; <a href="./module_menu.html">menu</a>
&gt; menubar.js (source view)
</p>
</div>
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<form name="yui-classopts-form">
<span id="classopts"><input type="checkbox" name="showprivate" id="showprivate" /> Show Private</span>
<span id="classopts"><input type="checkbox" name="showprotected" id="showprotected" /> Show Protected</span>
</form>
<div id="srcout">
<style>
#doc3 #classopts { display:none; }
</style>
<div class="highlight" ><pre><span class="o">(</span><span class="k">function</span> <span class="o">()</span> <span class="o">{</span>
<span class="c">/**</span>
<span class="c">* Horizontal collection of items, each of which can contain a submenu.</span>
<span class="c">* </span>
<span class="c">* @param {String} p_oElement String specifying the id attribute of the </span>
<span class="c">* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.</span>
<span class="c">* @param {String} p_oElement String specifying the id attribute of the </span>
<span class="c">* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for the </span>
<span class="c">* menu bar.</span>
<span class="c">* @param {&lt;a href=&quot;http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span>
<span class="c">* one-html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object specifying </span>
<span class="c">* the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.</span>
<span class="c">* @param {&lt;a href=&quot;http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span>
<span class="c">* one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement Object </span>
<span class="c">* specifying the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data </span>
<span class="c">* source for the menu bar.</span>
<span class="c">* @param {Object} p_oConfig Optional. Object literal specifying the </span>
<span class="c">* configuration for the menu bar. See configuration class documentation for</span>
<span class="c">* more details.</span>
<span class="c">* @class MenuBar</span>
<span class="c">* @constructor</span>
<span class="c">* @extends YAHOO.widget.Menu</span>
<span class="c">* @namespace YAHOO.widget</span>
<span class="c">*/</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">widget</span><span class="o">.</span><span class="nx">MenuBar</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">p_oElement</span><span class="o">,</span> <span class="nx">p_oConfig</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">widget</span><span class="o">.</span><span class="nx">MenuBar</span><span class="o">.</span><span class="nx">superclass</span><span class="o">.</span><span class="nx">constructor</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span>
<span class="nx">p_oElement</span><span class="o">,</span> <span class="nx">p_oConfig</span><span class="o">);</span>
<span class="o">};</span>
<span class="c">/**</span>
<span class="c">* @method checkPosition</span>
<span class="c">* @description Checks to make sure that the value of the &quot;position&quot; property </span>
<span class="c">* is one of the supported strings. Returns true if the position is supported.</span>
<span class="c">* @private</span>
<span class="c">* @param {Object} p_sPosition String specifying the position of the menu.</span>
<span class="c">* @return {Boolean}</span>
<span class="c">*/</span>
<span class="k">function</span> <span class="nx">checkPosition</span><span class="o">(</span><span class="nx">p_sPosition</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="k">typeof</span> <span class="nx">p_sPosition</span> <span class="o">==</span> <span class="s2">&quot;string&quot;</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="o">(</span><span class="s2">&quot;dynamic,static&quot;</span><span class="o">.</span><span class="nx">indexOf</span><span class="o">((</span><span class="nx">p_sPosition</span><span class="o">.</span><span class="nx">toLowerCase</span><span class="o">()))</span> <span class="o">!=</span> <span class="o">-</span><span class="m">1</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="k">var</span> <span class="nx">Event</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">,</span>
<span class="nx">MenuBar</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">widget</span><span class="o">.</span><span class="nx">MenuBar</span><span class="o">,</span>
<span class="c">/**</span>
<span class="c"> * Constant representing the MenuBar&#39;s configuration properties</span>
<span class="c"> * @property DEFAULT_CONFIG</span>
<span class="c"> * @private</span>
<span class="c"> * @final</span>
<span class="c"> * @type Object</span>
<span class="c"> */</span>
<span class="nx">DEFAULT_CONFIG</span> <span class="o">=</span> <span class="o">{</span>
<span class="s2">&quot;POSITION&quot;</span><span class="o">:</span> <span class="o">{</span>
<span class="nx">key</span><span class="o">:</span> <span class="s2">&quot;position&quot;</span><span class="o">,</span>
<span class="nx">value</span><span class="o">:</span> <span class="s2">&quot;static&quot;</span><span class="o">,</span>
<span class="nx">validator</span><span class="o">:</span> <span class="nx">checkPosition</span><span class="o">,</span>
<span class="nx">supercedes</span><span class="o">:</span> <span class="o">[</span><span class="s2">&quot;visible&quot;</span><span class="o">]</span>
<span class="o">},</span>
<span class="s2">&quot;SUBMENU_ALIGNMENT&quot;</span><span class="o">:</span> <span class="o">{</span>
<span class="nx">key</span><span class="o">:</span> <span class="s2">&quot;submenualignment&quot;</span><span class="o">,</span>
<span class="nx">value</span><span class="o">:</span> <span class="o">[</span><span class="s2">&quot;tl&quot;</span><span class="o">,</span><span class="s2">&quot;bl&quot;</span><span class="o">],</span>
<span class="nx">suppressEvent</span><span class="o">:</span> <span class="kc">true</span>
<span class="o">},</span>
<span class="s2">&quot;AUTO_SUBMENU_DISPLAY&quot;</span><span class="o">:</span> <span class="o">{</span>
<span class="nx">key</span><span class="o">:</span> <span class="s2">&quot;autosubmenudisplay&quot;</span><span class="o">,</span>
<span class="nx">value</span><span class="o">:</span> <span class="kc">false</span><span class="o">,</span>
<span class="nx">validator</span><span class="o">:</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">isBoolean</span><span class="o">,</span>
<span class="nx">suppressEvent</span><span class="o">:</span> <span class="kc">true</span>
<span class="o">}</span>
<span class="o">};</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">extend</span><span class="o">(</span><span class="nx">MenuBar</span><span class="o">,</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">widget</span><span class="o">.</span><span class="nx">Menu</span><span class="o">,</span> <span class="o">{</span>
<span class="c">/**</span>
<span class="c">* @method init</span>
<span class="c">* @description The MenuBar class&#39;s initialization method. This method is </span>
<span class="c">* automatically called by the constructor, and sets up all DOM references for </span>
<span class="c">* pre-existing markup, and creates required markup if it is not already present.</span>
<span class="c">* @param {String} p_oElement String specifying the id attribute of the </span>
<span class="c">* &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.</span>
<span class="c">* @param {String} p_oElement String specifying the id attribute of the </span>
<span class="c">* &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data source for the </span>
<span class="c">* menu bar.</span>
<span class="c">* @param {&lt;a href=&quot;http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span>
<span class="c">* one-html.html#ID-22445964&quot;&gt;HTMLDivElement&lt;/a&gt;} p_oElement Object specifying </span>
<span class="c">* the &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element of the menu bar.</span>
<span class="c">* @param {&lt;a href=&quot;http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-</span>
<span class="c">* one-html.html#ID-94282980&quot;&gt;HTMLSelectElement&lt;/a&gt;} p_oElement Object </span>
<span class="c">* specifying the &lt;code&gt;&amp;#60;select&amp;#62;&lt;/code&gt; element to be used as the data </span>
<span class="c">* source for the menu bar.</span>
<span class="c">* @param {Object} p_oConfig Optional. Object literal specifying the </span>
<span class="c">* configuration for the menu bar. See configuration class documentation for</span>
<span class="c">* more details.</span>
<span class="c">*/</span>
<span class="nx">init</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">p_oElement</span><span class="o">,</span> <span class="nx">p_oConfig</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span><span class="o">(!</span><span class="k">this</span><span class="o">.</span><span class="nx">ITEM_TYPE</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">ITEM_TYPE</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">widget</span><span class="o">.</span><span class="nx">MenuBarItem</span><span class="o">;</span>
<span class="o">}</span>
<span class="c">// Call the init of the superclass (YAHOO.widget.Menu)</span>
<span class="c"></span>
<span class="nx">MenuBar</span><span class="o">.</span><span class="nx">superclass</span><span class="o">.</span><span class="nx">init</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">p_oElement</span><span class="o">);</span>
<span class="k">this</span><span class="o">.</span><span class="nx">beforeInitEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">MenuBar</span><span class="o">);</span>
<span class="k">if</span><span class="o">(</span><span class="nx">p_oConfig</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">applyConfig</span><span class="o">(</span><span class="nx">p_oConfig</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">this</span><span class="o">.</span><span class="nx">initEvent</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">MenuBar</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">// Constants</span>
<span class="c"></span>
<span class="c">/**</span>
<span class="c">* @property CSS_CLASS_NAME</span>
<span class="c">* @description String representing the CSS class(es) to be applied to the menu </span>
<span class="c">* bar&#39;s &lt;code&gt;&amp;#60;div&amp;#62;&lt;/code&gt; element.</span>
<span class="c">* @default &quot;yuimenubar&quot;</span>
<span class="c">* @final</span>
<span class="c">* @type String</span>
<span class="c">*/</span>
<span class="nx">CSS_CLASS_NAME</span><span class="o">:</span> <span class="s2">&quot;yuimenubar&quot;</span><span class="o">,</span>
<span class="c">// Protected event handlers</span>
<span class="c"></span>
<span class="c">/**</span>
<span class="c">* @method _onKeyDown</span>
<span class="c">* @description &quot;keydown&quot; Custom Event handler for the menu bar.</span>
<span class="c">* @private</span>
<span class="c">* @param {String} p_sType String representing the name of the event that </span>
<span class="c">* was fired.</span>
<span class="c">* @param {Array} p_aArgs Array of arguments sent when the event was fired.</span>
<span class="c">* @param {YAHOO.widget.MenuBar} p_oMenuBar Object representing the menu bar </span>
<span class="c">* that fired the event.</span>
<span class="c">*/</span>
<span class="nx">_onKeyDown</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">p_sType</span><span class="o">,</span> <span class="nx">p_aArgs</span><span class="o">,</span> <span class="nx">p_oMenuBar</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">oEvent</span> <span class="o">=</span> <span class="nx">p_aArgs</span><span class="o">[</span><span class="m">0</span><span class="o">],</span>
<span class="nx">oItem</span> <span class="o">=</span> <span class="nx">p_aArgs</span><span class="o">[</span><span class="m">1</span><span class="o">],</span>
<span class="nx">oSubmenu</span><span class="o">,</span>
<span class="nx">oItemCfg</span><span class="o">,</span>
<span class="nx">oNextItem</span><span class="o">;</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oItem</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">oItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;disabled&quot;</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">oItemCfg</span> <span class="o">=</span> <span class="nx">oItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">;</span>
<span class="nx">switch</span><span class="o">(</span><span class="nx">oEvent</span><span class="o">.</span><span class="nx">keyCode</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">case</span> <span class="m">37</span><span class="o">:</span> <span class="c">// Left arrow</span>
<span class="c"></span> <span class="nx">case</span> <span class="m">39</span><span class="o">:</span> <span class="c">// Right arrow</span>
<span class="c"></span>
<span class="k">if</span><span class="o">(</span><span class="nx">oItem</span> <span class="o">==</span> <span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span> <span class="o">&amp;&amp;</span>
<span class="o">!</span><span class="nx">oItemCfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;selected&quot;</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">oItemCfg</span><span class="o">.</span><span class="nx">setProperty</span><span class="o">(</span><span class="s2">&quot;selected&quot;</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">else</span> <span class="o">{</span>
<span class="nx">oNextItem</span> <span class="o">=</span> <span class="o">(</span><span class="nx">oEvent</span><span class="o">.</span><span class="nx">keyCode</span> <span class="o">==</span> <span class="m">37</span><span class="o">)</span> <span class="o">?</span>
<span class="nx">oItem</span><span class="o">.</span><span class="nx">getPreviousEnabledSibling</span><span class="o">()</span> <span class="o">:</span>
<span class="nx">oItem</span><span class="o">.</span><span class="nx">getNextEnabledSibling</span><span class="o">();</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oNextItem</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">clearActiveItem</span><span class="o">();</span>
<span class="nx">oNextItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">setProperty</span><span class="o">(</span><span class="s2">&quot;selected&quot;</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;autosubmenudisplay&quot;</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oNextItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;submenu&quot;</span><span class="o">);</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">show</span><span class="o">();</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="nx">oNextItem</span><span class="o">.</span><span class="nx">focus</span><span class="o">();</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="nx">Event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">(</span><span class="nx">oEvent</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="nx">case</span> <span class="m">40</span><span class="o">:</span> <span class="c">// Down arrow</span>
<span class="c"></span>
<span class="k">if</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span> <span class="o">!=</span> <span class="nx">oItem</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">clearActiveItem</span><span class="o">();</span>
<span class="nx">oItemCfg</span><span class="o">.</span><span class="nx">setProperty</span><span class="o">(</span><span class="s2">&quot;selected&quot;</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="nx">oItem</span><span class="o">.</span><span class="nx">focus</span><span class="o">();</span>
<span class="o">}</span>
<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oItemCfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;submenu&quot;</span><span class="o">);</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;visible&quot;</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">setInitialSelection</span><span class="o">();</span>
<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">setInitialFocus</span><span class="o">();</span>
<span class="o">}</span>
<span class="k">else</span> <span class="o">{</span>
<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">show</span><span class="o">();</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="nx">Event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">(</span><span class="nx">oEvent</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oEvent</span><span class="o">.</span><span class="nx">keyCode</span> <span class="o">==</span> <span class="m">27</span> <span class="o">&amp;&amp;</span> <span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span><span class="o">)</span> <span class="o">{</span> <span class="c">// Esc key</span>
<span class="c"></span>
<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;submenu&quot;</span><span class="o">);</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oSubmenu</span> <span class="o">&amp;&amp;</span> <span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;visible&quot;</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">hide</span><span class="o">();</span>
<span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span><span class="o">.</span><span class="nx">focus</span><span class="o">();</span>
<span class="o">}</span>
<span class="k">else</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">setProperty</span><span class="o">(</span><span class="s2">&quot;selected&quot;</span><span class="o">,</span> <span class="kc">false</span><span class="o">);</span>
<span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span><span class="o">.</span><span class="nx">blur</span><span class="o">();</span>
<span class="o">}</span>
<span class="nx">Event</span><span class="o">.</span><span class="nx">preventDefault</span><span class="o">(</span><span class="nx">oEvent</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c">* @method _onClick</span>
<span class="c">* @description &quot;click&quot; event handler for the menu bar.</span>
<span class="c">* @protected</span>
<span class="c">* @param {String} p_sType String representing the name of the event that </span>
<span class="c">* was fired.</span>
<span class="c">* @param {Array} p_aArgs Array of arguments sent when the event was fired.</span>
<span class="c">* @param {YAHOO.widget.MenuBar} p_oMenuBar Object representing the menu bar </span>
<span class="c">* that fired the event.</span>
<span class="c">*/</span>
<span class="nx">_onClick</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">p_sType</span><span class="o">,</span> <span class="nx">p_aArgs</span><span class="o">,</span> <span class="nx">p_oMenuBar</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">MenuBar</span><span class="o">.</span><span class="nx">superclass</span><span class="o">.</span><span class="nx">_onClick</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">p_sType</span><span class="o">,</span> <span class="nx">p_aArgs</span><span class="o">,</span> <span class="nx">p_oMenuBar</span><span class="o">);</span>
<span class="k">var</span> <span class="nx">oItem</span> <span class="o">=</span> <span class="nx">p_aArgs</span><span class="o">[</span><span class="m">1</span><span class="o">],</span>
<span class="nx">oEvent</span><span class="o">,</span>
<span class="nx">oTarget</span><span class="o">,</span>
<span class="nx">oActiveItem</span><span class="o">,</span>
<span class="nx">oConfig</span><span class="o">,</span>
<span class="nx">oSubmenu</span><span class="o">;</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oItem</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">oItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;disabled&quot;</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">oEvent</span> <span class="o">=</span> <span class="nx">p_aArgs</span><span class="o">[</span><span class="m">0</span><span class="o">];</span>
<span class="nx">oTarget</span> <span class="o">=</span> <span class="nx">Event</span><span class="o">.</span><span class="nx">getTarget</span><span class="o">(</span><span class="nx">oEvent</span><span class="o">);</span>
<span class="nx">oActiveItem</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">activeItem</span><span class="o">;</span>
<span class="nx">oConfig</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">cfg</span><span class="o">;</span>
<span class="c">// Hide any other submenus that might be visible</span>
<span class="c"></span>
<span class="k">if</span><span class="o">(</span><span class="nx">oActiveItem</span> <span class="o">&amp;&amp;</span> <span class="nx">oActiveItem</span> <span class="o">!=</span> <span class="nx">oItem</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">clearActiveItem</span><span class="o">();</span>
<span class="o">}</span>
<span class="nx">oItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">setProperty</span><span class="o">(</span><span class="s2">&quot;selected&quot;</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="c">// Show the submenu for the item</span>
<span class="c"></span>
<span class="nx">oSubmenu</span> <span class="o">=</span> <span class="nx">oItem</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;submenu&quot;</span><span class="o">);</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span><span class="o">(</span><span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">cfg</span><span class="o">.</span><span class="nx">getProperty</span><span class="o">(</span><span class="s2">&quot;visible&quot;</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">hide</span><span class="o">();</span>
<span class="o">}</span>
<span class="k">else</span> <span class="o">{</span>
<span class="nx">oSubmenu</span><span class="o">.</span><span class="nx">show</span><span class="o">();</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">},</span>
<span class="c">// Public methods</span>
<span class="c"></span>
<span class="c">/**</span>
<span class="c">* @method toString</span>
<span class="c">* @description Returns a string representing the menu bar.</span>
<span class="c">* @return {String}</span>
<span class="c">*/</span>
<span class="nx">toString</span><span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">sReturnVal</span> <span class="o">=</span> <span class="s2">&quot;MenuBar&quot;</span><span class="o">,</span>
<span class="nx">sId</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">id</span><span class="o">;</span>
<span class="k">if</span><span class="o">(</span><span class="nx">sId</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">sReturnVal</span> <span class="o">+=</span> <span class="o">(</span><span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="nx">sId</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">return</span> <span class="nx">sReturnVal</span><span class="o">;</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c">* @description Initializes the class&#39;s configurable properties which can be</span>
<span class="c">* changed using the menu bar&#39;s Config object (&quot;cfg&quot;).</span>
<span class="c">* @method initDefaultConfig</span>
<span class="c">*/</span>
<span class="nx">initDefaultConfig</span><span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
<span class="nx">MenuBar</span><span class="o">.</span><span class="nx">superclass</span><span class="o">.</span><span class="nx">initDefaultConfig</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">);</span>
<span class="k">var</span> <span class="nx">oConfig</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">cfg</span><span class="o">;</span>
<span class="c">// Add configuration properties</span>
<span class="c"></span>
<span class="c">/*</span>
<span class="c"> Set the default value for the &quot;position&quot; configuration property</span>
<span class="c"> to &quot;static&quot; by re-adding the property.</span>
<span class="c"> */</span>
<span class="c">/**</span>
<span class="c"> * @config position</span>
<span class="c"> * @description String indicating how a menu bar should be positioned on the </span>
<span class="c"> * screen. Possible values are &quot;static&quot; and &quot;dynamic.&quot; Static menu bars </span>
<span class="c"> * are visible by default and reside in the normal flow of the document </span>
<span class="c"> * (CSS position: static). Dynamic menu bars are hidden by default, reside</span>
<span class="c"> * out of the normal flow of the document (CSS position: absolute), and can </span>
<span class="c"> * overlay other elements on the screen.</span>
<span class="c"> * @default static</span>
<span class="c"> * @type String</span>
<span class="c"> */</span>
<span class="nx">oConfig</span><span class="o">.</span><span class="nx">addProperty</span><span class="o">(</span>
<span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">POSITION</span><span class="o">.</span><span class="nx">key</span><span class="o">,</span>
<span class="o">{</span>
<span class="nx">handler</span><span class="o">:</span> <span class="k">this</span><span class="o">.</span><span class="nx">configPosition</span><span class="o">,</span>
<span class="nx">value</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">POSITION</span><span class="o">.</span><span class="nx">value</span><span class="o">,</span>
<span class="nx">validator</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">POSITION</span><span class="o">.</span><span class="nx">validator</span><span class="o">,</span>
<span class="nx">supercedes</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">POSITION</span><span class="o">.</span><span class="nx">supercedes</span>
<span class="o">}</span>
<span class="o">);</span>
<span class="c">/*</span>
<span class="c"> Set the default value for the &quot;submenualignment&quot; configuration property</span>
<span class="c"> to [&quot;tl&quot;,&quot;bl&quot;] by re-adding the property.</span>
<span class="c"> */</span>
<span class="c">/**</span>
<span class="c"> * @config submenualignment</span>
<span class="c"> * @description Array defining how submenus should be aligned to their </span>
<span class="c"> * parent menu bar item. The format is: [itemCorner, submenuCorner].</span>
<span class="c"> * @default [&quot;tl&quot;,&quot;bl&quot;]</span>
<span class="c"> * @type Array</span>
<span class="c"> */</span>
<span class="nx">oConfig</span><span class="o">.</span><span class="nx">addProperty</span><span class="o">(</span>
<span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">SUBMENU_ALIGNMENT</span><span class="o">.</span><span class="nx">key</span><span class="o">,</span>
<span class="o">{</span>
<span class="nx">value</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">SUBMENU_ALIGNMENT</span><span class="o">.</span><span class="nx">value</span><span class="o">,</span>
<span class="nx">suppressEvent</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">SUBMENU_ALIGNMENT</span><span class="o">.</span><span class="nx">suppressEvent</span>
<span class="o">}</span>
<span class="o">);</span>
<span class="c">/*</span>
<span class="c"> Change the default value for the &quot;autosubmenudisplay&quot; configuration </span>
<span class="c"> property to &quot;false&quot; by re-adding the property.</span>
<span class="c"> */</span>
<span class="c">/**</span>
<span class="c"> * @config autosubmenudisplay</span>
<span class="c"> * @description Boolean indicating if submenus are automatically made </span>
<span class="c"> * visible when the user mouses over the menu bar&#39;s items.</span>
<span class="c"> * @default false</span>
<span class="c"> * @type Boolean</span>
<span class="c"> */</span>
<span class="nx">oConfig</span><span class="o">.</span><span class="nx">addProperty</span><span class="o">(</span>
<span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">AUTO_SUBMENU_DISPLAY</span><span class="o">.</span><span class="nx">key</span><span class="o">,</span>
<span class="o">{</span>
<span class="nx">value</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">AUTO_SUBMENU_DISPLAY</span><span class="o">.</span><span class="nx">value</span><span class="o">,</span>
<span class="nx">validator</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">AUTO_SUBMENU_DISPLAY</span><span class="o">.</span><span class="nx">validator</span><span class="o">,</span>
<span class="nx">suppressEvent</span><span class="o">:</span> <span class="nx">DEFAULT_CONFIG</span><span class="o">.</span><span class="nx">AUTO_SUBMENU_DISPLAY</span><span class="o">.</span><span class="nx">suppressEvent</span>
<span class="o">}</span>
<span class="o">);</span>
<span class="o">}</span>
<span class="o">});</span> <span class="c">// END YAHOO.lang.extend</span>
<span class="c"></span>
<span class="o">}());</span>
</pre></div>
</div>
</div>
</div>
<div class="yui-b">
<div class="nav">
<div class="module">
<h4>Modules</h4>
<ul class="content">
<li class=""><a href="module_animation.html">animation</a></li>
<li class=""><a href="module_autocomplete.html">autocomplete</a></li>
<li class=""><a href="module_button.html">button</a></li>
<li class=""><a href="module_calendar.html">calendar</a></li>
<li class=""><a href="module_charts.html">charts</a></li>
<li class=""><a href="module_colorpicker.html">colorpicker</a></li>
<li class=""><a href="module_connection.html">connection</a></li>
<li class=""><a href="module_container.html">container</a></li>
<li class=""><a href="module_cookie.html">cookie</a></li>
<li class=""><a href="module_datasource.html">datasource</a></li>
<li class=""><a href="module_datatable.html">datatable</a></li>
<li class=""><a href="module_dom.html">dom</a></li>
<li class=""><a href="module_dragdrop.html">dragdrop</a></li>
<li class=""><a href="module_editor.html">editor</a></li>
<li class=""><a href="module_element.html">element</a></li>
<li class=""><a href="module_event.html">event</a></li>
<li class=""><a href="module_get.html">get</a></li>
<li class=""><a href="module_history.html">history</a></li>
<li class=""><a href="module_imagecropper.html">imagecropper</a></li>
<li class=""><a href="module_imageloader.html">imageloader</a></li>
<li class=""><a href="module_json.html">json</a></li>
<li class=""><a href="module_layout.html">layout</a></li>
<li class=""><a href="module_logger.html">logger</a></li>
<li class="selected"><a href="module_menu.html">menu</a></li>
<li class=""><a href="module_profiler.html">profiler</a></li>
<li class=""><a href="module_profilerviewer.html">profilerviewer</a></li>
<li class=""><a href="module_resize.html">resize</a></li>
<li class=""><a href="module_selector.html">selector</a></li>
<li class=""><a href="module_slider.html">slider</a></li>
<li class=""><a href="module_tabview.html">tabview</a></li>
<li class=""><a href="module_treeview.html">treeview</a></li>
<li class=""><a href="module_uploader.html">uploader</a></li>
<li class=""><a href="module_yahoo.html">yahoo</a></li>
<li class=""><a href="module_yuiloader.html">yuiloader</a></li>
<li class=""><a href="module_yuitest.html">yuitest</a></li>
</ul>
</div>
<div class="module">
<h4>Classes</h4>
<ul class="content">
<li class=""><a href="YAHOO.widget.ContextMenu.html">YAHOO.widget.ContextMenu</a></li>
<li class=""><a href="YAHOO.widget.ContextMenuItem.html">YAHOO.widget.ContextMenuItem</a></li>
<li class=""><a href="YAHOO.widget.Menu.html">YAHOO.widget.Menu</a></li>
<li class=""><a href="YAHOO.widget.MenuBar.html">YAHOO.widget.MenuBar</a></li>
<li class=""><a href="YAHOO.widget.MenuBarItem.html">YAHOO.widget.MenuBarItem</a></li>
<li class=""><a href="YAHOO.widget.MenuItem.html">YAHOO.widget.MenuItem</a></li>
<li class=""><a href="YAHOO.widget.MenuManager.html">YAHOO.widget.MenuManager</a></li>
</ul>
</div>
<div class="module">
<h4>Files</h4>
<ul class="content">
<li class=""><a href="contextmenu.js.html">contextmenu.js</a></li>
<li class=""><a href="contextmenuitem.js.html">contextmenuitem.js</a></li>
<li class=""><a href="menu.js.html">menu.js</a></li>
<li class="selected"><a href="menubar.js.html">menubar.js</a></li>
<li class=""><a href="menubaritem.js.html">menubaritem.js</a></li>
<li class=""><a href="menuitem.js.html">menuitem.js</a></li>
<li class=""><a href="menumanager.js.html">menumanager.js</a></li>
</ul>
</div>
</div>
</div>
</div>
<div id="ft">
<hr />
Copyright &copy; 2007 Yahoo! Inc. All rights reserved.
</div>
</div>
</body>
</html>