3
<title>The source code</title>
4
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
5
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
7
<body onload="prettyPrint();">
8
<pre class="prettyprint lang-js">
9
Ext.ns('Ext.ux.MultiCombo');
10
<div id="method-Ext.ux.TaskBar.TaskButton-MultiCombo.Checkable"></div>/**
14
Ext.ux.MultiCombo.Checkable = function(cfg) {
17
Ext.ux.MultiCombo.Checkable.prototype = {
18
<div id="cfg-Ext.ux.TaskBar.TaskButton-checkSelector"></div>/**
19
* @cfg {String} checkSelector DomQuery config for locating checkbox
21
checkSelector: 'input[type=checkbox]',
22
<div id="cfg-Ext.ux.TaskBar.TaskButton-itemSelector"></div>/**
23
* @cfg {String} itemSelector The itemSelector used with Combo's internal DataView [x-combo-list]
25
itemSelector : 'x-combo-list',
26
<div id="cfg-Ext.ux.TaskBar.TaskButton-cls"></div>/**
29
cls: 'combo-checkable',
30
<div id="cfg-Ext.ux.TaskBar.TaskButton-selectAllText"></div>/**
31
* @cfg {String} selectAllText The "SELECT ALL" phrase [Select All]
33
selectAllText: 'Select All',
34
<div id="cfg-Ext.ux.TaskBar.TaskButton-clearAllText"></div>/**
35
* @cfg {String} clearAllText the text to display for "clear all" link
37
clearAllText : 'clear all',
39
<div id="cfg-Ext.ux.TaskBar.TaskButton-separatorHtml"></div>/**
40
* @cfg {String} separatorHtml arbitrary html rendered after Checkable controls. Can be used to add an
41
* html separator markup.
45
// private {Boolean} checked
48
init : function(combo) {
52
var cls = combo.itemSelector || this.itemSelector;
55
combo.tpl =['<tpl for=".">','<div class="'+cls+'-item">{'+combo.displayField+'}</div>','</tpl>'] . join('');
58
'<div class="plugin ' + this.cls + '">',
59
'<span class="' + this.cls + '-select-all">',
60
'<input id="'+id+'" type="checkbox" /> <label>'+this.selectAllText+'</label>',
62
' <span class="'+this.cls+'-clear-all">(<a href="#">' + this.clearAllText + '</a>)</span>',
65
].join('') + combo.tpl.replace(new RegExp('({'+combo.displayField+'})'), "<input type=\"checkbox\" <tpl if=\"values._checked\">checked</tpl> /> <label>$1</label>");
67
combo.on('initview', function(c, dv) {
68
dv.on('containerclick', this.onContainerClick.createDelegate(this));
69
dv.on('selectionchange', this.onSelectionChange.createDelegate(this));
70
dv.el.on('mouseover', this.onViewOver, this);
72
combo.on('select', this.onSelect.createDelegate(this));
75
onViewOver : function(ev, node){
76
var target = ev.getTarget('.' + this.cls, 5);
78
this.combo.clearHighlight();
79
Ext.fly(target).addClass(this.combo.highlightClass);
81
if(this.inKeyMode){ // prevent key nav and mouse over conflicts
87
onSelect : function(rec, index) {
91
<div id="method-Ext.ux.TaskBar.TaskButton-getCheckbox"></div>/**
95
getCheckbox : function() {
96
return this.combo.view.el.child('.'+this.cls+' '+this.checkSelector, true);
99
<div id="method-Ext.ux.TaskBar.TaskButton-onSelectionChange"></div>/**
100
* onSelectChange Fired by MultiCombo
104
onSelectionChange : function(dv, rs) {
105
this.checked = (rs.length > 0 && rs.length == this.combo.store.getCount()) ? true : false;
106
this.getCheckbox().checked = this.checked;
108
var selector = this.checkSelector;
109
setTimeout(function() {
110
dv.el.select(dv.itemSelector + ' ' + selector).each(function(f) {
111
f.dom.checked = false;
113
dv.el.select('.' + dv.selectedClass + ' ' + selector).each(function(f) {
114
f.dom.checked = true;
119
<div id="method-Ext.ux.TaskBar.TaskButton-selectNext"></div>/**
120
* selectNext Called by MultiCombo. use this to apply hover-class to this row.
121
* @param {Object} sender
123
selectNext: function(sender) {
124
sender.view.el.child('.' + this.cls).addClass(sender.highlightClass);
127
<div id="method-Ext.ux.TaskBar.TaskButton-selectPrev"></div>/**
128
* selectPrev Called by MultiCombo, use this to apply hover class to row.
129
* @param {Object} sender
131
selectPrev : function(sender) {
132
sender.view.el.child('.' + this.cls).addClass(sender.highlightClass);
135
<div id="method-Ext.ux.TaskBar.TaskButton-onEnter"></div>/**
136
* onEnter Called by MultiCombo
137
* @param {Object} sender
139
onEnter : function(sender) {
140
this.setChecked(!this.checked);
143
<div id="method-Ext.ux.TaskBar.TaskButton-onContainerClick"></div>/**
144
* onContainerClick Fired by MultiCombo
148
onContainerClick : function(dv, ev) {
149
var btnClearAll = ev.getTarget('.'+this.cls+'-clear-all');
154
this.setChecked(!this.checked);
160
selectAll : function() {
162
this.combo.store.each(function(r) { value.push(r.data[this.combo.valueField]); },this);
163
this.combo.setValue(value);
164
this.combo.selectByValue(this.combo.getValue());
169
clearAll : function() {
170
this.combo.updateValue([]);
171
this.combo.selectByValue([]);
172
this.combo.view.clearSelections();
174
this.combo.fireEvent('clearall', this.combo);
177
<div id="method-Ext.ux.TaskBar.TaskButton-setChecked"></div>/**
181
setChecked : function(v) {
182
if (v == this.checked) {
186
this.getCheckbox().checked = this.checked;
187
if (this.checked == true) {
b'\\ No newline at end of file'