1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dijit.MenuBar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dijit.MenuBar"] = true;
- dojo.provide("dijit.MenuBar");
- dojo.require("dijit.Menu");
- dojo.declare("dijit.MenuBar", dijit._MenuBase, {
- // summary:
- // A menu bar, listing menu choices horizontally, like the "File" menu in most desktop applications
- templateString: dojo.cache("dijit", "templates/MenuBar.html", "<div class=\"dijitMenuBar dijitMenuPassive\" dojoAttachPoint=\"containerNode\" role=\"menubar\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress: _onKeyPress\"></div>\n"),
- baseClass: "dijitMenuBar",
- // _isMenuBar: [protected] Boolean
- // This is a MenuBar widget, not a (vertical) Menu widget.
- _isMenuBar: true,
- postCreate: function(){
- var k = dojo.keys, l = this.isLeftToRight();
- this.connectKeyNavHandlers(
- l ? [k.LEFT_ARROW] : [k.RIGHT_ARROW],
- l ? [k.RIGHT_ARROW] : [k.LEFT_ARROW]
- );
- // parameter to dijit.popup.open() about where to put popup (relative to this.domNode)
- this._orient = this.isLeftToRight() ? {BL: 'TL'} : {BR: 'TR'};
- },
- focusChild: function(item){
- // overload focusChild so that whenever the focus is moved to a new item,
- // check the previous focused whether it has its popup open, if so, after
- // focusing the new item, open its submenu immediately
- var prev_item = this.focusedChild,
- showpopup = prev_item && prev_item.popup && prev_item.popup.isShowingNow;
- this.inherited(arguments);
- if(showpopup && item.popup && !item.disabled){
- this._openPopup(); // TODO: on down arrow, _openPopup() is called here and in onItemClick()
- }
- },
- _onKeyPress: function(/*Event*/ evt){
- // summary:
- // Handle keyboard based menu navigation.
- // tags:
- // protected
- if(evt.ctrlKey || evt.altKey){ return; }
- switch(evt.charOrCode){
- case dojo.keys.DOWN_ARROW:
- this._moveToPopup(evt);
- dojo.stopEvent(evt);
- }
- },
- onItemClick: function(/*dijit._Widget*/ item, /*Event*/ evt){
- // summary:
- // Handle clicks on an item. Cancels a dropdown if already open.
- // tags:
- // private
- if(item.popup && item.popup.isShowingNow){
- item.popup.onCancel();
- }else{
- this.inherited(arguments);
- }
- }
- });
- }
|