X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6e39d509471fe9b4e2660e0d1631b350d0c66f40..f5240829880f87e0cf581c6a296e436fdef0ef80:/src/widgets/form/CheckboxGroup.js diff --git a/src/widgets/form/CheckboxGroup.js b/src/widgets/form/CheckboxGroup.js index a3a43c47..e375c8f5 100644 --- a/src/widgets/form/CheckboxGroup.js +++ b/src/widgets/form/CheckboxGroup.js @@ -1,6 +1,6 @@ /*! - * Ext JS Library 3.1.0 - * Copyright(c) 2006-2009 Ext JS, LLC + * Ext JS Library 3.3.0 + * Copyright(c) 2006-2010 Ext JS, Inc. * licensing@extjs.com * http://www.extjs.com/license */ @@ -147,7 +147,7 @@ Ext.form.CheckboxGroup = Ext.extend(Ext.form.Field, { var cc = Ext.apply({items:[]}, colCfg); cc[this.columns[i] <= 1 ? 'columnWidth' : 'width'] = this.columns[i]; if(this.defaults){ - cc.defaults = Ext.apply(cc.defaults || {}, this.defaults) + cc.defaults = Ext.apply(cc.defaults || {}, this.defaults); } cols.push(cc); }; @@ -236,22 +236,28 @@ Ext.form.CheckboxGroup = Ext.extend(Ext.form.Field, { }); this.fireEvent('change', this, arr); }, - - // private - validateValue : function(value){ - if(!this.allowBlank){ + + /** + * Runs CheckboxGroup's validations and returns an array of any errors. The only error by default + * is if allowBlank is set to true and no items are checked. + * @return {Array} Array of all validation errors + */ + getErrors: function() { + var errors = Ext.form.CheckboxGroup.superclass.getErrors.apply(this, arguments); + + if (!this.allowBlank) { var blank = true; + this.eachItem(function(f){ - if(f.checked){ + if (f.checked) { return (blank = false); } }); - if(blank){ - this.markInvalid(this.blankText); - return false; - } + + if (blank) errors.push(this.blankText); } - return true; + + return errors; }, // private @@ -262,15 +268,27 @@ Ext.form.CheckboxGroup = Ext.extend(Ext.form.Field, { } var dirty = false; + this.eachItem(function(item){ if(item.isDirty()){ dirty = true; return false; } }); + return dirty; }, + // private + setReadOnly : function(readOnly){ + if(this.rendered){ + this.eachItem(function(item){ + item.setReadOnly(readOnly); + }); + } + this.readOnly = readOnly; + }, + // private onDisable : function(){ this.eachItem(function(item){ @@ -285,14 +303,6 @@ Ext.form.CheckboxGroup = Ext.extend(Ext.form.Field, { }); }, - // private - doLayout: function(){ - if(this.rendered){ - this.panel.forceLayout = this.ownerCt.forceLayout; - this.panel.doLayout(); - } - }, - // private onResize : function(w, h){ this.panel.setSize(w, h); @@ -301,11 +311,26 @@ Ext.form.CheckboxGroup = Ext.extend(Ext.form.Field, { // inherit docs from Field reset : function(){ - this.eachItem(function(c){ - if(c.reset){ - c.reset(); - } - }); + if (this.originalValue) { + // Clear all items + this.eachItem(function(c){ + if(c.setValue){ + c.setValue(false); + c.originalValue = c.getValue(); + } + }); + // Set items stored in originalValue, ugly - set a flag to reset the originalValue + // during the horrible onSetValue. This will allow trackResetOnLoad to function. + this.resetOriginal = true; + this.setValue(this.originalValue); + delete this.resetOriginal; + } else { + this.eachItem(function(c){ + if(c.reset){ + c.reset(); + } + }); + } // Defer the clearInvalid so if BaseForm's collection is being iterated it will be called AFTER it is complete. // Important because reset is being called on both the group and the individual items. (function() { @@ -344,14 +369,33 @@ myCheckboxGroup.setValue('cb-col-1,cb-col-3'); return this; }, + /** + * @private + * Sets the values of one or more of the items within the CheckboxGroup + * @param {String|Array|Object} id Can take multiple forms. Can be optionally: + *