    /*!
     * Ext JS Library 3.3.0
     * 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 Ext.grid.Column
     * A Column 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:
     *
    var cm = new Ext.grid.ColumnModel([{
           header: 'Foo',
           ...
        },{
           xtype: 'checkcolumn',
           header: 'Indoor?',
           dataIndex: 'indoor',
           width: 55
        }
    ]);

    // create the grid
    var grid = new Ext.grid.EditorGridPanel({
        ...
        colModel: cm,
        ...
    });
     *
     * In addition to toggling 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.
     */
    Ext.ux.grid.CheckColumn = Ext.extend(Ext.grid.Column, {

        /**
         * @private
         * Process and refire events routed from the GridView's processEvent method.
         */
        processEvent : function(name, e, grid, rowIndex, colIndex){
            if (name == 'mousedown') {
                var record = grid.store.getAt(rowIndex);
                record.set(this.dataIndex, !record.data[this.dataIndex]);
                return false; // Cancel row selection.
            } else {
                return Ext.grid.ActionColumn.superclass.processEvent.apply(this, arguments);
            }
        },

        renderer : function(v, p, record){
            p.css += ' x-grid3-check-col-td';
            return String.format(' ', v ? '-on' : '');
        },

        // Deprecate use as a plugin. Remove in 4.0
        init: Ext.emptyFn
    });

    // register ptype. Deprecate. Remove in 4.0
    Ext.preg('checkcolumn', Ext.ux.grid.CheckColumn);

    // backwards compat. Remove in 4.0
    Ext.grid.CheckColumn = Ext.ux.grid.CheckColumn;

    // register Column xtype
    Ext.grid.Column.types.checkcolumn = Ext.ux.grid.CheckColumn;