/* Copyright (c) 2004-2011, 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.PopupMenuItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["dijit.PopupMenuItem"] = true; dojo.provide("dijit.PopupMenuItem"); dojo.require("dijit.MenuItem"); dojo.declare("dijit.PopupMenuItem", dijit.MenuItem, { _fillContent: function(){ // summary: // When Menu is declared in markup, this code gets the menu label and // the popup widget from the srcNodeRef. // description: // srcNodeRefinnerHTML contains both the menu item text and a popup widget // The first part holds the menu item text and the second part is the popup // example: // |
// | pick me // | ... // |
// tags: // protected if(this.srcNodeRef){ var nodes = dojo.query("*", this.srcNodeRef); dijit.PopupMenuItem.superclass._fillContent.call(this, nodes[0]); // save pointer to srcNode so we can grab the drop down widget after it's instantiated this.dropDownContainer = this.srcNodeRef; } }, startup: function(){ if(this._started){ return; } this.inherited(arguments); // we didn't copy the dropdown widget from the this.srcNodeRef, so it's in no-man's // land now. move it to dojo.doc.body. if(!this.popup){ var node = dojo.query("[widgetId]", this.dropDownContainer)[0]; this.popup = dijit.byNode(node); } dojo.body().appendChild(this.popup.domNode); this.popup.startup(); this.popup.domNode.style.display="none"; if(this.arrowWrapper){ dojo.style(this.arrowWrapper, "visibility", ""); } dijit.setWaiState(this.focusNode, "haspopup", "true"); }, destroyDescendants: function(){ if(this.popup){ // Destroy the popup, unless it's already been destroyed. This can happen because // the popup is a direct child of even though it's logically my child. if(!this.popup._destroyed){ this.popup.destroyRecursive(); } delete this.popup; } this.inherited(arguments); } }); }