blob: 4a9d4104e0ee3c8bc781d3fbe26ca51f80f8bd34 [file] [log] [blame]
/*
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["dojox.form.CheckedMultiSelect"]){
dojo._hasResource["dojox.form.CheckedMultiSelect"]=true;
dojo.provide("dojox.form.CheckedMultiSelect");
dojo.require("dijit.form.CheckBox");
dojo.require("dojox.form._FormSelectWidget");
dojo.declare("dojox.form._CheckedMultiSelectItem",[dijit._Widget,dijit._Templated],{widgetsInTemplate:true,templateString:"<div class=\"dijitReset ${baseClass}\"\n\t><input class=\"${baseClass}Box\" dojoType=\"dijit.form.CheckBox\" dojoAttachPoint=\"checkBox\" \n\t\tdojoAttachEvent=\"_onClick:_changeBox\" type=\"${_type.type}\" baseClass=\"${_type.baseClass}\"\n\t><div class=\"dijitInline ${baseClass}Label\" dojoAttachPoint=\"labelNode\" dojoAttachEvent=\"onmousedown:_onMouse,onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick\"></div\n></div>\n",baseClass:"dojoxMultiSelectItem",option:null,parent:null,disabled:false,readOnly:false,postMixInProperties:function(){
if(this.parent._multiValue){
this._type={type:"checkbox",baseClass:"dijitCheckBox"};
}else{
this._type={type:"radio",baseClass:"dijitRadio"};
}
this.disabled=this.option.disabled=this.option.disabled||false;
this.inherited(arguments);
},postCreate:function(){
this.inherited(arguments);
this.labelNode.innerHTML=this.option.label;
},_changeBox:function(){
if(this.attr("disabled")||this.attr("readOnly")){
return;
}
if(this.parent._multiValue){
this.option.selected=this.checkBox.attr("value")&&true;
}else{
this.parent.attr("value",this.option.value);
}
this.parent._updateSelection();
this.parent.focus();
},_onMouse:function(e){
if(this.attr("disabled")||this.attr("readOnly")){
dojo.stopEvent(e);
}else{
this.checkBox._onMouse(e);
}
},_onClick:function(e){
if(this.attr("disabled")||this.attr("readOnly")){
dojo.stopEvent(e);
}else{
this.checkBox._onClick(e);
}
},_updateBox:function(){
this.checkBox.attr("value",this.option.selected);
},_setDisabledAttr:function(_3){
this.disabled=_3||this.option.disabled;
this.checkBox.attr("disabled",this.disabled);
dojo.toggleClass(this.domNode,"dojoxMultiSelectDisabled",this.disabled);
},_setReadOnlyAttr:function(_4){
this.checkBox.attr("readOnly",_4);
this.checkBox._setStateClass();
this.readOnly=_4;
}});
dojo.declare("dojox.form.CheckedMultiSelect",dojox.form._FormSelectWidget,{templateString:"",templateString:"<div class=\"dijit dijitReset dijitInline\" dojoAttachEvent=\"onmousedown:_mouseDown,onclick:focus\"\n\t><select class=\"${baseClass}Select\" multiple=\"true\" dojoAttachPoint=\"containerNode,focusNode\"></select\n\t><div dojoAttachPoint=\"wrapperDiv\"></div\n></div>\n",baseClass:"dojoxMultiSelect",_mouseDown:function(e){
dojo.stopEvent(e);
},_addOptionItem:function(_6){
this.wrapperDiv.appendChild(new dojox.form._CheckedMultiSelectItem({option:_6,parent:this}).domNode);
},_updateSelection:function(){
this.inherited(arguments);
dojo.forEach(this._getChildren(),function(c){
c._updateBox();
});
},_getChildren:function(){
return dojo.map(this.wrapperDiv.childNodes,function(n){
return dijit.byNode(n);
});
},invertSelection:function(_9){
dojo.forEach(this.options,function(i){
i.selected=!i.selected;
});
this._updateSelection();
},_setDisabledAttr:function(_b){
this.inherited(arguments);
dojo.forEach(this._getChildren(),function(_c){
if(_c&&_c.attr){
_c.attr("disabled",_b);
}
});
},_setReadOnlyAttr:function(_d){
if("readOnly" in this.attributeMap){
this._attrToDom("readOnly",_d);
}
this.readOnly=_d;
dojo.forEach(this._getChildren(),function(_e){
if(_e&&_e.attr){
_e.attr("readOnly",_d);
}
});
this._setStateClass();
},uninitialize:function(){
dojo.forEach(this._getChildren(),function(_f){
_f.destroyRecursive();
});
}});
}