3 * Copyright(c) 2008-2011 Alan Knowles
10 * @class Roo.form.ComboCheck
11 * @extends Roo.form.ComboBox
12 * A combobox for multiple select items.
14 * Create a new ComboCheck
15 * @param {Object} config Configuration options
17 Roo.form.ComboCheck = function(config){
18 Roo.form.ComboCheck.superclass.constructor.call(this, config);
19 // should verify some data...
21 // hiddenName = required..
22 // displayField = required
23 // valudField == required
24 var req= [ 'hiddenName', 'displayField', 'valueField' ];
26 Roo.each(req, function(e) {
27 if ((typeof(_t[e]) == 'undefined' ) || !_t[e].length) {
28 throw "Roo.form.ComboCheck : missing value for: " + e;
35 Roo.extend(Roo.form.ComboCheck, Roo.form.ComboBox, {
40 //selectedClass: 'x-menu-item-checked', - this is the mouse over class...
43 onRender : function(ct, position){
49 var cls = 'x-combo-list';
52 this.tpl = new Roo.Template({
53 html : '<div class="'+cls+'-item x-menu-check-item{' + this.valueField + ':this.checked}">' +
54 '<img class="x-menu-item-icon" style="margin: 0px;" src="' + Roo.BLANK_IMAGE_URL + '">' +
55 '<span>{' + this.displayField + '}</span>' +
57 checked: function (value, allValues) {
58 var ar = _t.getValueArray();
59 return ar.indexOf(value) > -1 ? ' x-menu-item-checked' : ''
65 Roo.form.ComboCheck.superclass.onRender.call(this, ct, position);
66 this.view.singleSelect = false;
67 this.view.multiSelect = true;
70 onViewOver : function(e, t){
73 if(this.inKeyMode){ // prevent key nav and mouse over conflicts
76 var item = this.view.findItemFromChild(t);
78 var index = this.view.indexOf(item);
79 this.select(index, false);
83 onViewClick : function(doFocus,index){
85 if(this.inKeyMode){ // prevent key nav and mouse over conflicts
89 this.view.select(index, false);
92 var index = this.view.getSelectedIndexes()[0];
93 var r = this.store.getAt(index);
95 this.onSelect(r, index);
97 if(doFocus !== false && !this.blockFocus){
103 onSelect : function(record, index){
104 if(this.fireEvent('beforeselect', this, record, index) !== false){
107 this.setFromData(index > -1 ? record.data : false);
112 this.fireEvent('select', this, record, index);
115 getValueArray : function()
119 var ret = Roo.decode(thist.getValue());
120 ret = typeof(ar) == 'Array' ? ar : []; //?? valid?
123 Roo.log("Roo.form.ComboCheck:getValueArray invalid data:" + this.getValue());