/**
 * @class Ext.grid.Column
 *

This class encapsulates column configuration data to be used in the initialization of a
 * {@link Ext.grid.ColumnModel ColumnModel}.


 *

While subclasses are provided to render data in different ways, this class renders a passed
 * data field unchanged and is usually used for textual columns.


 */

Ext.grid.Column = function(config){
   
Ext.apply(this, config);

   
if(typeof this.renderer == 'string'){
       
this.renderer = Ext.util.Format[this.renderer];
   
} else if(Ext.isObject(this.renderer)){
       
this.scope = this.renderer.scope;
       
this.renderer = this.renderer.fn;
   
}
   
this.renderer = this.renderer.createDelegate(this.scope || config);

   
if(this.id === undefined){
       
this.id = ++Ext.grid.Column.AUTO_ID;
   
}
   
if(this.editor){
       
this.editor = Ext.create(this.editor, 'textfield');
   
}
};

Ext.grid.Column.AUTO_ID = 0;

Ext.grid.Column.prototype = {
   
/**
     * @cfg {Boolean} editable Optional. Defaults to
true, enabling the configured
     *
{@link #editor}.  Set to false to initially disable editing on this column.
     * The initial configuration may be dynamically altered using
     * {@link Ext.grid.ColumnModel}.{@link Ext.grid.ColumnModel#setEditable setEditable()}.
     */

   
/**
     * @cfg {String} id Optional. A name which identifies this column (defaults to the column's initial
     * ordinal position.) The
id is used to create a CSS class name which is applied to all
     * table cells (including headers) in that column (in this context the
id does not need to be
     * unique). The class name takes the form of
x-grid3-td-id

     * Header cells will also receive this class name, but will also have the class
x-grid3-hd

     * So, to target header cells, use CSS selectors such as:
.x-grid3-hd-row .x-grid3-td-id

     * The {@link Ext.grid.GridPanel#autoExpandColumn} grid config option references the column via this
     * unique identifier.
     */

   
/**
     * @cfg {String} header Optional. The header text to be used as innerHTML
     * (html tags are accepted) to display in the Grid view.  
Note: to
     * have a clickable header with no text displayed use
' '.
     */

   
/**
     * @cfg {Boolean} groupable Optional. If the grid is being rendered by an {@link Ext.grid.GroupingView}, this option
     * may be used to disable the header menu item to group by the column selected. Defaults to
true,
     * which enables the header menu group option.  Set to
false to disable (but still show) the
     * group option in the header menu for the column. See also
{@link #groupName}.
     */

   
/**
     * @cfg {String} groupName Optional. If the grid is being rendered by an {@link Ext.grid.GroupingView}, this option
     * may be used to specify the text with which to prefix the group field value in the group header line.
     * See also {@link #groupRenderer} and
     * {@link Ext.grid.GroupingView}.{@link Ext.grid.GroupingView#showGroupName showGroupName}.
     */

   
/**
     * @cfg {Function} groupRenderer

Optional. If the grid is being rendered by an {@link Ext.grid.GroupingView}, this option
     * may be used to specify the function used to format the grouping field value for display in the group
     * {@link #groupName header}.  If a
groupRenderer is not specified, the configured
     *
{@link #renderer} will be called; if a {@link #renderer} is also not specified
     * the new value of the group field will be used.


     *

The called function (either the groupRenderer or {@link #renderer}) will be
     * passed the following parameters:
     *


     *

The function should return a string value.


     */

   
/**
     * @cfg {String} emptyGroupText Optional. If the grid is being rendered by an {@link Ext.grid.GroupingView}, this option
     * may be used to specify the text to display when there is an empty group value. Defaults to the
     * {@link Ext.grid.GroupingView}.{@link Ext.grid.GroupingView#emptyGroupText emptyGroupText}.
     */

   
/**
     * @cfg {String} dataIndex

Required. The name of the field in the
     * grid's {@link Ext.data.Store}'s {@link Ext.data.Record} definition from
     * which to draw the column's value.


     */

   
/**
     * @cfg {Number} width
     * Optional. The initial width in pixels of the column.
     * The width of each column can also be affected if any of the following are configured:
     *