X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/530ef4b6c5b943cfa68b779d11cf7de29aa878bf..3789b528d8dd8aad4558e38e22d775bcab1cbd36:/examples/ux/CheckColumn.js?ds=inline diff --git a/examples/ux/CheckColumn.js b/examples/ux/CheckColumn.js index 4a1440ff..bbe3421c 100644 --- a/examples/ux/CheckColumn.js +++ b/examples/ux/CheckColumn.js @@ -1,84 +1,77 @@ -/*! - * Ext JS Library 3.2.1 - * Copyright(c) 2006-2010 Ext JS, Inc. - * licensing@extjs.com - * http://www.extjs.com/license - */ -Ext.ns('Ext.ux.grid'); - /** - * @class Ext.ux.grid.CheckColumn - * @extends Object - * GridPanel plugin to add a column with check boxes to a grid. + * @class Ext.ux.CheckColumn + * @extends Ext.grid.column.Column + *
A Header subclass which renders a checkbox in each column cell which toggles the truthiness of the associated data field on click.
+ *Note. As of ExtJS 3.3 this no longer has to be configured as a plugin of the GridPanel.
*Example usage:
*
-// create the column
-var checkColumn = new Ext.grid.CheckColumn({
- header: 'Indoor?',
- dataIndex: 'indoor',
- id: 'check',
- width: 55
-});
-
-// add the column to the column model
-var cm = new Ext.grid.ColumnModel([{
- header: 'Foo',
- ...
- },
- checkColumn
-]);
-
// create the grid
-var grid = new Ext.grid.EditorGridPanel({
+var grid = Ext.create('Ext.grid.Panel', {
...
- cm: cm,
- plugins: [checkColumn], // include plugin
+ columns: [{
+ text: 'Foo',
+ ...
+ },{
+ xtype: 'checkcolumn',
+ text: 'Indoor?',
+ dataIndex: 'indoor',
+ width: 55
+ }
+ ]
...
});
*
- * In addition to storing a Boolean value within the record data, this
- * class toggles a css class between 'x-grid3-check-col' and
- * 'x-grid3-check-col-on' to alter the background image used for
- * a column.
+ * In addition to toggling a Boolean value within the record data, this
+ * class adds or removes a css class 'x-grid-checked' on the td
+ * based on whether or not it is checked to alter the background image used
+ * for a column.
*/
-Ext.ux.grid.CheckColumn = function(config){
- Ext.apply(this, config);
- if(!this.id){
- this.id = Ext.id();
- }
- this.renderer = this.renderer.createDelegate(this);
-};
-
-Ext.ux.grid.CheckColumn.prototype ={
- init : function(grid){
- this.grid = grid;
- this.grid.on('render', function(){
- var view = this.grid.getView();
- view.mainBody.on('mousedown', this.onMouseDown, this);
- }, this);
+Ext.define('Ext.ux.CheckColumn', {
+ extend: 'Ext.grid.column.Column',
+ alias: 'widget.checkcolumn',
+
+ constructor: function() {
+ this.addEvents(
+ /**
+ * @event checkchange
+ * Fires when the checked state of a row changes
+ * @param {Ext.ux.CheckColumn} this
+ * @param {Number} rowIndex The row index
+ * @param {Boolean} checked True if the box is checked
+ */
+ 'checkchange'
+ );
+ this.callParent(arguments);
},
- onMouseDown : function(e, t){
- if(Ext.fly(t).hasClass(this.createId())){
- e.stopEvent();
- var index = this.grid.getView().findRowIndex(t);
- var record = this.grid.store.getAt(index);
- record.set(this.dataIndex, !record.data[this.dataIndex]);
+ /**
+ * @private
+ * Process and refire events routed from the GridView's processEvent method.
+ */
+ processEvent: function(type, view, cell, recordIndex, cellIndex, e) {
+ if (type == 'mousedown' || (type == 'keydown' && (e.getKey() == e.ENTER || e.getKey() == e.SPACE))) {
+ var record = view.panel.store.getAt(recordIndex),
+ dataIndex = this.dataIndex,
+ checked = !record.get(dataIndex);
+
+ record.set(dataIndex, checked);
+ this.fireEvent('checkchange', this, recordIndex, checked);
+ // cancel selection.
+ return false;
+ } else {
+ return this.callParent(arguments);
}
},
- renderer : function(v, p, record){
- p.css += ' x-grid3-check-col-td';
- return String.format('