/* 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["dojox.form.CheckedMultiSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["dojox.form.CheckedMultiSelect"] = true; dojo.provide("dojox.form.CheckedMultiSelect"); dojo.require("dijit.form.CheckBox"); dojo.require("dijit.Tooltip"); dojo.require("dijit.form._FormSelectWidget"); dojo.declare("dojox.form._CheckedMultiSelectItem", [dijit._Widget, dijit._Templated], { // summary: // The individual items for a CheckedMultiSelect widgetsInTemplate: true, templateString: dojo.cache("dojox.form", "resources/_CheckedMultiSelectItem.html", "
\n"), baseClass: "dojoxMultiSelectItem", // option: dojox.form.__SelectOption // The option that is associated with this item option: null, parent: null, // disabled: boolean // Whether or not this widget is disabled disabled: false, // readOnly: boolean // Whether or not this widget is readOnly readOnly: false, postMixInProperties: function(){ // summary: // Set the appropriate _subClass value - based on if we are multi- // or single-select this._type = this.parent.multiple ? {type: "checkbox", baseClass: "dijitCheckBox"} : {type: "radio", baseClass: "dijitRadio"}; // use global disabled/readOnly if set to true, otherwise use per-option setting if(!this.disabled){ this.disabled = this.option.disabled = this.option.disabled||false; } if(!this.readOnly){ this.readOnly = this.option.readOnly = this.option.readOnly||false; } this.inherited(arguments); }, postCreate: function(){ // summary: // Set innerHTML here - since the template gets messed up sometimes // with rich text this.inherited(arguments); this.labelNode.innerHTML = this.option.label; }, _changeBox: function(){ // summary: // Called to force the select to match the state of the check box // (only on click of the checkbox) Radio-based calls _setValueAttr // instead. if(this.get("disabled") || this.get("readOnly")){ return; } if(this.parent.multiple){ this.option.selected = this.checkBox.get('value') && true; }else{ this.parent.set('value', this.option.value); } // fire the parent's change this.parent._updateSelection(); // refocus the parent this.parent.focus(); }, _onClick: function(e){ // summary: // Sets the click state (passes through to the check box) if(this.get("disabled") || this.get("readOnly")){ dojo.stopEvent(e); }else{ this.checkBox._onClick(e); } }, _updateBox: function(){ // summary: // Called to force the box to match the state of the select this.checkBox.set('value', this.option.selected); }, _setDisabledAttr: function(value){ // summary: // Disables (or enables) all the children as well this.disabled = value||this.option.disabled; this.checkBox.set("disabled", this.disabled); dojo.toggleClass(this.domNode, "dojoxMultiSelectDisabled", this.disabled); }, _setReadOnlyAttr: function(value){ // summary: // Sets read only (or unsets) all the children as well this.checkBox.set("readOnly", value); this.readOnly = value; } }); dojo.declare("dojox.form.CheckedMultiSelect", dijit.form._FormSelectWidget, { // summary: // Extends the core dijit MultiSelect to provide a "checkbox" selector templateString: dojo.cache("dojox.form", "resources/CheckedMultiSelect.html", "