a:33:{s:9:"#provides";s:23:"dojox.form._HasDropDown";s:9:"#resource";s:20:"form/_HasDropDown.js";s:9:"#requires";a:1:{i:0;a:3:{i:0;s:6:"common";i:1;s:13:"dijit._Widget";i:2;s:5:"dijit";}}s:23:"dojox.form._HasDropDown";a:3:{s:4:"type";s:8:"Function";s:7:"summary";s:46:"Mixin for widgets that need drop down ability.";s:9:"classlike";b:1;}s:36:"dojox.form._HasDropDown.dropDownNode";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:8:"instance";s:23:"dojox.form._HasDropDown";s:4:"type";s:7:"DomNode";s:7:"summary";s:187:"responds to click events. "dropDownNode" can be set via a dojoAttachPoint assignment. If missing, then either focusNode or domNode (if focusNode is also missing) will be used.";}s:38:"dojox.form._HasDropDown.popupStateNode";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:8:"instance";s:23:"dojox.form._HasDropDown";s:4:"type";s:7:"DomNode";s:7:"summary";s:125:"the node to set the popupActive class on. If missing, then focusNode or dropDownNode (if focusNode is missing) will be used.";}s:34:"dojox.form._HasDropDown.aroundNode";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:8:"instance";s:23:"dojox.form._HasDropDown";s:4:"type";s:7:"DomNode";s:7:"summary";s:77:"the node to display the popup around. If missing, then domNode will be used.";}s:32:"dojox.form._HasDropDown.dropDown";a:3:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:6:"Widget";s:7:"summary";s:105:"the widget to display in the popup. This widget *must* be defined before the startup function is called.";}s:33:"dojox.form._HasDropDown.autoWidth";a:3:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:7:"Boolean";s:7:"summary";s:130:"Set to true to make the drop down at least as wide as this widget. Set to false if the drop down should just be its default width";}s:40:"dojox.form._HasDropDown._stopClickEvents";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:7:"Boolean";s:7:"summary";s:103:"When set to false, the click events will not be stopped, in case you want to use them in your subwidget";s:7:"private";b:1;}s:38:"dojox.form._HasDropDown._onMenuMouseup";a:6:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:283:" // summary: called with the mouseup event if the mouseup occurred // over the menu. You can try and use this event in // order to automatically execute your dropdown (as // if it were clicked). You mightwant to close your menu // as a part of this function.";s:7:"summary";s:235:"called with the mouseup event if the mouseup occurred over the menu. You can try and use this event in order to automatically execute your dropdown (as if it were clicked). You mightwant to close your menu as a part of this function.";s:7:"private";b:1;}s:40:"dojox.form._HasDropDown._onDropDownMouse";a:6:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:550:" if(e.type == "click" && !this._seenKeydown){ return; } this._seenKeydown = false; // If we are a mouse event, set up the mouseup handler if(e.type == "mousedown"){ this._docHandler = this.connect(dojo.doc, "onmouseup", "_onDropDownMouseup"); } if(this.disabled || this.readOnly){ return; } if(this._stopClickEvents){ dojo.stopEvent(e); } this.toggleDropDown(); // If we are a click, then we'll pretend we did a mouse up if(e.type == "click" || e.type == "keypress"){ this._onDropDownMouseup(); }";s:7:"summary";s:267:"callback when the user mouse clicks on menu popup node We handle mouse events using onmousedown in order to allow for selecting via a drag. So, our click is already handled, unless we are executed via keypress - in which case, this._seenKeydown will be set to true.";s:7:"private";b:1;}s:42:"dojox.form._HasDropDown._onDropDownMouseup";a:6:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:2:{s:8:"optional";b:1;s:4:"type";s:5:"Event";}}s:6:"source";s:649:" if(e && this._docHandler){ this.disconnect(this._docHandler); } var dropDown = this.dropDown, overMenu = false; if(e && this._opened){ // Find out if our target is somewhere in our dropdown widget var t = e.target; while(t && !overMenu){ if(dojo.hasClass(t, "dijitPopup")){ overMenu = true; }else{ t = t.parentNode; } } if(overMenu){ this._onMenuMouseup(e); return; } } if(this._opened && dropDown.focus){ // delay so that we don't steal our own focus. window.setTimeout(dojo.hitch(dropDown, "focus"), 1); }else{ dijit.focus(this.focusNode); }";s:7:"summary";s:180:"callback when the user lifts their mouse - if we are over the menu, we execute it, otherwise, we focus our dropDown node. If the event is missing, then we are not a mouseup event.";s:7:"private";b:1;}s:38:"dojox.form._HasDropDown._setupDropdown";a:5:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:857:" this.dropDownNode = this.dropDownNode || this.focusNode || this.domNode; this.popupStateNode = this.popupStateNode || this.focusNode || this.dropDownNode; this.aroundNode = this.aroundNode || this.domNode; this.connect(this.dropDownNode, "onmousedown", "_onDropDownMouse"); this.connect(this.dropDownNode, "onclick", "_onDropDownMouse"); this.connect(this.dropDownNode, "onkeydown", "_onDropDownKeydown"); this.connect(this.dropDownNode, "onblur", "_onDropDownBlur"); this.connect(this.dropDownNode, "onkeypress", "_onKey"); // If we have a _setStateClass function (which happens when // we are a form widget), then we need to connect our open/close // functions to it if(this._setStateClass){ this.connect(this, "openDropDown", "_setStateClass"); this.connect(this, "closeDropDown", "_setStateClass"); }";s:7:"summary";s:54:"set up nodes and connect our mouse and keypress events";s:7:"private";b:1;}s:34:"dojox.form._HasDropDown.postCreate";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:69:" this._setupDropdown(); this.inherited("postCreate", arguments);";s:7:"summary";s:0:"";}s:31:"dojox.form._HasDropDown.startup";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:87:" dijit.popup.prepare(this.dropDown.domNode); this.inherited("startup", arguments);";s:7:"summary";s:0:"";}s:42:"dojox.form._HasDropDown.destroyDescendants";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:142:" if(this.dropDown){ this.dropDown.destroyRecursive(); delete this.dropDown; } this.inherited("destroyDescendants", arguments);";s:7:"summary";s:0:"";}s:42:"dojox.form._HasDropDown._onDropDownKeydown";a:6:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:28:" this._seenKeydown = true;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:35:"dojox.form._HasDropDown._onKeyPress";a:6:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:195:" if(this._opened && e.charOrCode == dojo.keys.ESCAPE && !e.shiftKey && !e.ctrlKey && !e.altKey){ this.toggleDropDown(); dojo.stopEvent(e); return; } this.inherited(arguments);";s:7:"private";b:1;s:7:"summary";s:0:"";}s:39:"dojox.form._HasDropDown._onDropDownBlur";a:6:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:29:" this._seenKeydown = false;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:30:"dojox.form._HasDropDown._onKey";a:6:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:1:"e";a:1:{s:4:"type";s:5:"Event";}}s:6:"source";s:344:" if(this.disabled || this.readOnly){ return; } var d = this.dropDown; if(d && this._opened && d.handleKey){ if(d.handleKey(e) === false){ return; } } if(d && this._opened && e.keyCode == dojo.keys.ESCAPE){ this.toggleDropDown(); return; } if(e.keyCode == dojo.keys.DOWN_ARROW){ this._onDropDownMouse(e); }";s:7:"summary";s:55:"callback when the user presses a key on menu popup node";s:7:"private";b:1;}s:31:"dojox.form._HasDropDown._onBlur";a:5:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:146:" this.closeDropDown(); // don't focus on button. the user has explicitly focused on something else. this.inherited("_onBlur", arguments);";s:7:"summary";s:79:"called magically when focus has shifted away from this widget and it's dropdown";s:7:"private";b:1;}s:32:"dojox.form._HasDropDown.isLoaded";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:15:" return true;";s:7:"summary";s:114:"returns whether or not the dropdown is loaded. This can be overridden in order to force a call to loadDropDown().";}s:36:"dojox.form._HasDropDown.loadDropDown";a:5:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:12:"loadCallback";a:1:{s:4:"type";s:8:"Function";}}s:6:"source";s:18:" loadCallback();";s:7:"summary";s:76:"loads the data for the dropdown, and at some point, calls the given callback";}s:38:"dojox.form._HasDropDown.toggleDropDown";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:396:" if(this.disabled || this.readOnly){ return; } this.focus(); var dropDown = this.dropDown; if(!dropDown){ return; } if(!this._opened){ // If we aren't loaded, load it first so there isn't a flicker if(!this.isLoaded()){ this.loadDropDown(dojo.hitch(this, "openDropDown")); return; }else{ this.openDropDown(); } }else{ this.closeDropDown(); }";s:7:"summary";s:67:"toggle the drop-down widget; if it is up, close it, if not, open it";}s:36:"dojox.form._HasDropDown.openDropDown";a:4:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:6:"source";s:1663:" var dropDown = this.dropDown; var oldWidth=dropDown.domNode.style.width; var self = this; var retVal = dijit.popup.open({ parent: this, popup: dropDown, around: this.aroundNode, orient: // TODO: add user-defined positioning option, like in Tooltip.js this.isLeftToRight() ? {'BL':'TL', 'BR':'TR', 'TL':'BL', 'TR':'BR'} : {'BR':'TR', 'BL':'TL', 'TR':'BR', 'TL':'BL'}, onExecute: function(){ self.closeDropDown(true); }, onCancel: function(){ self.closeDropDown(true); }, onClose: function(){ dropDown.domNode.style.width = oldWidth; dojo.attr(self.popupStateNode, "popupActive", false); dojo.removeClass(self.popupStateNode, "dojoxHasDropDownOpen"); self._opened = false; self.state = ""; } }); if(this.autoWidth && this.domNode.offsetWidth > dropDown.domNode.offsetWidth){ var adjustNode = null; if(!this.isLeftToRight()){ adjustNode = dropDown.domNode.parentNode; var oldRight = adjustNode.offsetLeft + adjustNode.offsetWidth; } // make menu at least as wide as the node if(dropDown.resize){ dropDown.resize({w: this.domNode.offsetWidth}); }else{ dojo.marginBox(dropDown.domNode, {w: this.domNode.offsetWidth}); } if(adjustNode){ adjustNode.style.left = oldRight - this.domNode.offsetWidth + "px"; } } dojo.attr(this.popupStateNode, "popupActive", "true"); dojo.addClass(self.popupStateNode, "dojoxHasDropDownOpen"); this._opened=true; this.state="Opened"; // TODO: set this.checked and call setStateClass(), to affect button look while drop down is shown return retVal;";s:7:"summary";s:84:"opens the dropdown for this widget - it returns the return value of dijit.popup.open";}s:37:"dojox.form._HasDropDown.closeDropDown";a:5:{s:9:"prototype";s:23:"dojox.form._HasDropDown";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:5:"focus";a:1:{s:4:"type";s:7:"Boolean";}}s:6:"source";s:141:" if(this._opened){ dijit.popup.close(this.dropDown); if(focus){ this.focus(); } this._opened = false; this.state = ""; }";s:7:"summary";s:35:"Closes the drop down on this widget";}s:36:"dojox.form._HasDropDown._seenKeydown";a:3:{s:8:"instance";s:23:"dojox.form._HasDropDown";s:7:"private";b:1;s:7:"summary";s:0:"";}s:35:"dojox.form._HasDropDown._docHandler";a:3:{s:8:"instance";s:23:"dojox.form._HasDropDown";s:7:"private";b:1;s:7:"summary";s:0:"";}s:31:"dojox.form._HasDropDown._opened";a:3:{s:8:"instance";s:23:"dojox.form._HasDropDown";s:7:"private";b:1;s:7:"summary";s:0:"";}s:29:"dojox.form._HasDropDown.state";a:2:{s:8:"instance";s:23:"dojox.form._HasDropDown";s:7:"summary";s:0:"";}s:10:"dojox.form";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:5:"dojox";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}