12345678 |
- /*
- Copyright (c) 2004-2009, 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.Menu"]){dojo._hasResource["dijit.Menu"]=true;dojo.provide("dijit.Menu");dojo.require("dijit._Widget");dojo.require("dijit._KeyNavContainer");dojo.require("dijit._Templated");dojo.declare("dijit._MenuBase",[dijit._Widget,dijit._Templated,dijit._KeyNavContainer],{parentMenu:null,popupDelay:500,startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_1){_1.startup();});this.startupKeyNavChildren();this.inherited(arguments);},onExecute:function(){},onCancel:function(_2){},_moveToPopup:function(_3){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.focusedChild._onClick(_3);}else{var _4=this._getTopMenu();if(_4&&_4._isMenuBar){_4.focusNext();}}},_onPopupHover:function(_5){if(this.currentPopup&&this.currentPopup._pendingClose_timer){var _6=this.currentPopup.parentMenu;if(_6.focusedChild){_6.focusedChild._setSelected(false);}_6.focusedChild=this.currentPopup.from_item;_6.focusedChild._setSelected(true);this._stopPendingCloseTimer(this.currentPopup);}},onItemHover:function(_7){if(this.isActive){this.focusChild(_7);if(this.focusedChild.popup&&!this.focusedChild.disabled&&!this.hover_timer){this.hover_timer=setTimeout(dojo.hitch(this,"_openPopup"),this.popupDelay);}}if(this.focusedChild){this.focusChild(_7);}this._hoveredChild=_7;},_onChildBlur:function(_8){this._stopPopupTimer();_8._setSelected(false);var _9=_8.popup;if(_9){this._stopPendingCloseTimer(_9);_9._pendingClose_timer=setTimeout(function(){_9._pendingClose_timer=null;if(_9.parentMenu){_9.parentMenu.currentPopup=null;}dijit.popup.close(_9);},this.popupDelay);}},onItemUnhover:function(_a){if(this.isActive){this._stopPopupTimer();}if(this._hoveredChild==_a){this._hoveredChild=null;}},_stopPopupTimer:function(){if(this.hover_timer){clearTimeout(this.hover_timer);this.hover_timer=null;}},_stopPendingCloseTimer:function(_b){if(_b._pendingClose_timer){clearTimeout(_b._pendingClose_timer);_b._pendingClose_timer=null;}},_stopFocusTimer:function(){if(this._focus_timer){clearTimeout(this._focus_timer);this._focus_timer=null;}},_getTopMenu:function(){for(var _c=this;_c.parentMenu;_c=_c.parentMenu){}return _c;},onItemClick:function(_d,_e){if(_d.disabled){return false;}if(typeof this.isShowingNow=="undefined"){this._markActive();}this.focusChild(_d);if(_d.popup){this._openPopup();}else{this.onExecute();_d.onClick(_e);}},_openPopup:function(){this._stopPopupTimer();var _f=this.focusedChild;if(!_f){return;}var _10=_f.popup;if(_10.isShowingNow){return;}if(this.currentPopup){this._stopPendingCloseTimer(this.currentPopup);dijit.popup.close(this.currentPopup);}_10.parentMenu=this;_10.from_item=_f;var _11=this;dijit.popup.open({parent:this,popup:_10,around:_f.domNode,orient:this._orient||(this.isLeftToRight()?{"TR":"TL","TL":"TR","BR":"BL","BL":"BR"}:{"TL":"TR","TR":"TL","BL":"BR","BR":"BL"}),onCancel:function(){_11.focusChild(_f);_11._cleanUp();_f._setSelected(true);_11.focusedChild=_f;},onExecute:dojo.hitch(this,"_cleanUp")});this.currentPopup=_10;_10.connect(_10.domNode,"onmouseenter",dojo.hitch(_11,"_onPopupHover"));if(_10.focus){_10._focus_timer=setTimeout(dojo.hitch(_10,function(){this._focus_timer=null;this.focus();}),0);}},_markActive:function(){this.isActive=true;dojo.addClass(this.domNode,"dijitMenuActive");dojo.removeClass(this.domNode,"dijitMenuPassive");},onOpen:function(e){this.isShowingNow=true;this._markActive();},_markInactive:function(){this.isActive=false;dojo.removeClass(this.domNode,"dijitMenuActive");dojo.addClass(this.domNode,"dijitMenuPassive");},onClose:function(){this._stopFocusTimer();this._markInactive();this.isShowingNow=false;this.parentMenu=null;},_closeChild:function(){this._stopPopupTimer();if(this.focusedChild){this.focusedChild._setSelected(false);this.focusedChild._onUnhover();this.focusedChild=null;}if(this.currentPopup){dijit.popup.close(this.currentPopup);this.currentPopup=null;}},_onItemFocus:function(_12){if(this._hoveredChild&&this._hoveredChild!=_12){this._hoveredChild._onUnhover();}},_onBlur:function(){this._cleanUp();this.inherited(arguments);},_cleanUp:function(){this._closeChild();if(typeof this.isShowingNow=="undefined"){this._markInactive();}}});dojo.declare("dijit.Menu",dijit._MenuBase,{constructor:function(){this._bindings=[];},templateString:dojo.cache("dijit","templates/Menu.html","<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" waiRole=\"menu\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress:_onKeyPress\">\n\t<tbody class=\"dijitReset\" dojoAttachPoint=\"containerNode\"></tbody>\n</table>\n"),targetNodeIds:[],contextMenuForWindow:false,leftClickToOpen:false,refocus:true,_contextMenuWithMouse:false,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(dojo.body());}else{dojo.forEach(this.targetNodeIds,this.bindDomNode,this);}var k=dojo.keys,l=this.isLeftToRight();this._openSubMenuKey=l?k.RIGHT_ARROW:k.LEFT_ARROW;this._closeSubMenuKey=l?k.LEFT_ARROW:k.RIGHT_ARROW;this.connectKeyNavHandlers([k.UP_ARROW],[k.DOWN_ARROW]);},_onKeyPress:function(evt){if(evt.ctrlKey||evt.altKey){return;}switch(evt.charOrCode){case this._openSubMenuKey:this._moveToPopup(evt);dojo.stopEvent(evt);break;case this._closeSubMenuKey:if(this.parentMenu){if(this.parentMenu._isMenuBar){this.parentMenu.focusPrev();}else{this.onCancel(false);}}else{dojo.stopEvent(evt);}break;}},_iframeContentWindow:function(_13){var win=dijit.getDocumentWindow(this._iframeContentDocument(_13))||this._iframeContentDocument(_13)["__parent__"]||(_13.name&&dojo.doc.frames[_13.name])||null;return win;},_iframeContentDocument:function(_14){var doc=_14.contentDocument||(_14.contentWindow&&_14.contentWindow.document)||(_14.name&&dojo.doc.frames[_14.name]&&dojo.doc.frames[_14.name].document)||null;return doc;},bindDomNode:function(_15){_15=dojo.byId(_15);var cn;if(_15.tagName.toLowerCase()=="iframe"){var _16=_15,win=this._iframeContentWindow(_16);cn=dojo.withGlobal(win,dojo.body);}else{cn=(_15==dojo.body()?dojo.doc.documentElement:_15);}var _17={node:_15,iframe:_16};dojo.attr(_15,"_dijitMenu"+this.id,this._bindings.push(_17));var _18=dojo.hitch(this,function(cn){return [dojo.connect(cn,(this.leftClickToOpen)?"onclick":"oncontextmenu",this,function(evt){this._openMyself(evt,cn,_16);}),dojo.connect(cn,"onkeydown",this,"_contextKey"),dojo.connect(cn,"onmousedown",this,"_contextMouse")];});_17.connects=cn?_18(cn):[];if(_16){_17.onloadHandler=dojo.hitch(this,function(){var win=this._iframeContentWindow(_16);cn=dojo.withGlobal(win,dojo.body);_17.connects=_18(cn);});if(_16.addEventListener){_16.addEventListener("load",_17.onloadHandler,false);}else{_16.attachEvent("onload",_17.onloadHandler);}}},unBindDomNode:function(_19){var _1a;try{_1a=dojo.byId(_19);}catch(e){return;}var _1b="_dijitMenu"+this.id;if(_1a&&dojo.hasAttr(_1a,_1b)){var bid=dojo.attr(_1a,_1b)-1,b=this._bindings[bid];dojo.forEach(b.connects,dojo.disconnect);var _1c=b.iframe;if(_1c){if(_1c.removeEventListener){_1c.removeEventListener("load",b.onloadHandler,false);}else{_1c.detachEvent("onload",b.onloadHandler);}}dojo.removeAttr(_1a,_1b);delete this._bindings[bid];}},_contextKey:function(e){this._contextMenuWithMouse=false;if(e.keyCode==dojo.keys.F10){dojo.stopEvent(e);if(e.shiftKey&&e.type=="keydown"){var _1d={target:e.target,pageX:e.pageX,pageY:e.pageY};_1d.preventDefault=_1d.stopPropagation=function(){};window.setTimeout(dojo.hitch(this,function(){this._openMyself(_1d);}),1);}}},_contextMouse:function(e){this._contextMenuWithMouse=true;},_openMyself:function(e,_1e,_1f){if(this.leftClickToOpen&&e.button>0){return;}dojo.stopEvent(e);var x,y;if(dojo.isSafari||this._contextMenuWithMouse){x=e.pageX;y=e.pageY;if(_1f){var od=e.target.ownerDocument,ifc=dojo.position(_1f,true),win=this._iframeContentWindow(_1f),_20=dojo.withGlobal(win,"_docScroll",dojo);var cs=dojo.getComputedStyle(_1f),tp=dojo._toPixelValue,_21=(dojo.isIE&&dojo.isQuirks?0:tp(_1f,cs.paddingLeft))+(dojo.isIE&&dojo.isQuirks?tp(_1f,cs.borderLeftWidth):0),top=(dojo.isIE&&dojo.isQuirks?0:tp(_1f,cs.paddingTop))+(dojo.isIE&&dojo.isQuirks?tp(_1f,cs.borderTopWidth):0);x+=ifc.x+_21-_20.x;y+=ifc.y+top-_20.y;}}else{var _22=dojo.position(e.target,true);x=_22.x+10;y=_22.y+10;}var _23=this;var _24=dijit.getFocus(this);function _25(){if(_23.refocus){dijit.focus(_24);}dijit.popup.close(_23);};dijit.popup.open({popup:this,x:x,y:y,onExecute:_25,onCancel:_25,orient:this.isLeftToRight()?"L":"R"});this.focus();this._onBlur=function(){this.inherited("_onBlur",arguments);dijit.popup.close(this);};},uninitialize:function(){dojo.forEach(this._bindings,function(b){if(b){this.unBindDomNode(b.node);}},this);this.inherited(arguments);}});dojo.require("dijit.MenuItem");dojo.require("dijit.PopupMenuItem");dojo.require("dijit.CheckedMenuItem");dojo.require("dijit.MenuSeparator");}
|