-<span id='Ext-grid-column-Column-cfg-dataIndex'> /**
-</span> * @cfg {String} dataIndex <p><b>Required</b>. The name of the field in the
- * grid's {@link Ext.data.Store}'s {@link Ext.data.Model} definition from
- * which to draw the column's value.</p>
- */
- dataIndex: null,
-
-<span id='Ext-grid-column-Column-cfg-text'> /**
-</span> * @cfg {String} text Optional. The header text to be used as innerHTML
- * (html tags are accepted) to display in the Grid. <b>Note</b>: to
- * have a clickable header with no text displayed you can use the
- * default of <tt>'&#160;'</tt>.
- */
- text: '&#160',
-
-<span id='Ext-grid-column-Column-cfg-sortable'> /**
-</span> * @cfg {Boolean} sortable Optional. <tt>true</tt> if sorting is to be allowed on this column.
- * Whether local/remote sorting is used is specified in <code>{@link Ext.data.Store#remoteSort}</code>.
- */
- sortable: true,
-
-<span id='Ext-grid-column-Column-cfg-groupable'> /**
-</span> * @cfg {Boolean} groupable Optional. If the grid uses a {@link Ext.grid.feature.Grouping}, this option
- * may be used to disable the header menu item to group by the column selected. By default,
- * the header menu group option is enabled. Set to false to disable (but still show) the
- * group option in the header menu for the column.
- */
-
-<span id='Ext-grid-column-Column-cfg-hideable'> /**
-</span> * @cfg {Boolean} hideable Optional. Specify as <tt>false</tt> to prevent the user from hiding this column
- * (defaults to true).
- */
- hideable: true,
-
-<span id='Ext-grid-column-Column-cfg-menuDisabled'> /**
-</span> * @cfg {Boolean} menuDisabled
- * True to disabled the column header menu containing sort/hide options. Defaults to false.
- */
- menuDisabled: false,
-
-<span id='Ext-grid-column-Column-cfg-renderer'> /**
-</span> * @cfg {Function} renderer
- * <p>A renderer is an 'interceptor' method which can be used transform data (value, appearance, etc.) before it
- * is rendered. Example:</p>
- * <pre><code>{
- renderer: function(value){
- if (value === 1) {
- return '1 person';
- }
- return value + ' people';
- }
-}
- * </code></pre>
- * @param {Mixed} value The data value for the current cell
- * @param {Object} metaData A collection of metadata about the current cell; can be used or modified by
- * the renderer. Recognized properties are: <tt>tdCls</tt>, <tt>tdAttr</tt>, and <tt>style</tt>.
- * @param {Ext.data.Model} record The record for the current row
- * @param {Number} rowIndex The index of the current row
- * @param {Number} colIndex The index of the current column
- * @param {Ext.data.Store} store The data store
- * @param {Ext.view.View} view The current view
- * @return {String} The HTML to be rendered
- */
- renderer: false,
-
-<span id='Ext-grid-column-Column-cfg-align'> /**
-</span> * @cfg {String} align Sets the alignment of the header and rendered columns.
- * Defaults to 'left'.
- */
- align: 'left',
-
-<span id='Ext-grid-column-Column-cfg-draggable'> /**
-</span> * @cfg {Boolean} draggable Indicates whether or not the header can be drag and drop re-ordered.
- * Defaults to true.
- */
- draggable: true,
-
- // Header does not use the typical ComponentDraggable class and therefore we
- // override this with an emptyFn. It is controlled at the HeaderDragZone.
- initDraggable: Ext.emptyFn,
-
-<span id='Ext-grid-column-Column-cfg-tdCls'> /**
-</span> * @cfg {String} tdCls <p>Optional. A CSS class names to apply to the table cells for this column.</p>
- */
-
-<span id='Ext-grid-column-Column-property-triggerEl'> /**
-</span> * @property {Ext.core.Element} triggerEl
- */
-
-<span id='Ext-grid-column-Column-property-textEl'> /**
-</span> * @property {Ext.core.Element} textEl
- */
-
-<span id='Ext-grid-column-Column-property-isHeader'> /**
-</span> * @private
- * Set in this class to identify, at runtime, instances which are not instances of the
- * HeaderContainer base class, but are in fact, the subclass: Header.
- */
- isHeader: true,
-
- initComponent: function() {
- var me = this,
- i,
- len;
-
- if (Ext.isDefined(me.header)) {
- me.text = me.header;
- delete me.header;
- }
-
- // Flexed Headers need to have a minWidth defined so that they can never be squeezed out of existence by the
- // HeaderContainer's specialized Box layout, the ColumnLayout. The ColumnLayout's overridden calculateChildboxes
- // method extends the available layout space to accommodate the "desiredWidth" of all the columns.
- if (me.flex) {
- me.minWidth = me.minWidth || Ext.grid.plugin.HeaderResizer.prototype.minColWidth;
- }
- // Non-flexed Headers may never be squeezed in the event of a shortfall so
- // always set their minWidth to their current width.
- else {
- me.minWidth = me.width;
- }
-
- if (!me.triStateSort) {
- me.possibleSortStates.length = 2;
- }
-
- // A group header; It contains items which are themselves Headers
- if (Ext.isDefined(me.columns)) {
- me.isGroupHeader = true;
-
- //<debug>
- if (me.dataIndex) {
- Ext.Error.raise('Ext.grid.column.Column: Group header may not accept a dataIndex');
- }
- if ((me.width && me.width !== Ext.grid.header.Container.prototype.defaultWidth) || me.flex) {
- Ext.Error.raise('Ext.grid.column.Column: Group header does not support setting explicit widths or flexs. The group header width is calculated by the sum of its children.');
- }
- //</debug>
-
- // The headers become child items
- me.items = me.columns;
- delete me.columns;
- delete me.flex;
- me.width = 0;
-
- // Acquire initial width from sub headers
- for (i = 0, len = me.items.length; i < len; i++) {
- me.width += me.items[i].width || Ext.grid.header.Container.prototype.defaultWidth;
- //<debug>
- if (me.items[i].flex) {
- Ext.Error.raise('Ext.grid.column.Column: items of a grouped header do not support flexed values. Each item must explicitly define its width.');
- }
- //</debug>
- }
- me.minWidth = me.width;
-
- me.cls = (me.cls||'') + ' ' + Ext.baseCSSPrefix + 'group-header';
- me.sortable = false;
- me.fixed = true;
- me.align = 'center';
- }
-
- Ext.applyIf(me.renderSelectors, {
- titleContainer: '.' + Ext.baseCSSPrefix + 'column-header-inner',
- triggerEl: '.' + Ext.baseCSSPrefix + 'column-header-trigger',
- textEl: '.' + Ext.baseCSSPrefix + 'column-header-text'
- });
-
- // Initialize as a HeaderContainer
- me.callParent(arguments);
- },
-
- onAdd: function(childHeader) {
- childHeader.isSubHeader = true;
- childHeader.addCls(Ext.baseCSSPrefix + 'group-sub-header');
- },
-
- onRemove: function(childHeader) {
- childHeader.isSubHeader = false;
- childHeader.removeCls(Ext.baseCSSPrefix + 'group-sub-header');
- },
-
- initRenderData: function() {
- var me = this;
-
- Ext.applyIf(me.renderData, {
- text: me.text,
- menuDisabled: me.menuDisabled
- });
- return me.callParent(arguments);
- },
-
- // note that this should invalidate the menu cache
- setText: function(text) {
- this.text = text;
- if (this.rendered) {
- this.textEl.update(text);
- }
- },
-
- // Find the topmost HeaderContainer: An ancestor which is NOT a Header.
- // Group Headers are themselves HeaderContainers
- getOwnerHeaderCt: function() {
- return this.up(':not([isHeader])');
- },
-
-<span id='Ext-grid-column-Column-method-getIndex'> /**
-</span> * Returns the true grid column index assiciated with this Column only if this column is a base level Column.
- * If it is a group column, it returns <code>false</code>
- */
- getIndex: function() {
- return this.isGroupColumn ? false : this.getOwnerHeaderCt().getHeaderIndex(this);
- },
-
- afterRender: function() {
- var me = this,
- el = me.el;
-
- me.callParent(arguments);
-
- el.addCls(Ext.baseCSSPrefix + 'column-header-align-' + me.align).addClsOnOver(me.overCls);
-
- me.mon(el, {
- click: me.onElClick,
- dblclick: me.onElDblClick,
- scope: me
- });
-
- // BrowserBug: Ie8 Strict Mode, this will break the focus for this browser,
- // must be fixed when focus management will be implemented.
- if (!Ext.isIE8 || !Ext.isStrict) {
- me.mon(me.getFocusEl(), {
- focus: me.onTitleMouseOver,
- blur: me.onTitleMouseOut,
- scope: me