    /**
     * @class YAHOO.ext.grid.AbstractColumnModel
     * @extends YAHOO.ext.util.Observable
     * This abstract class defines the ColumnModel interface and provides default implementations of the events required by the Grid.
     * @constructor
    */
    YAHOO.ext.grid.AbstractColumnModel = function(){
    	// legacy events
    	this.onWidthChange = new YAHOO.util.CustomEvent('widthChanged');
        this.onHeaderChange = new YAHOO.util.CustomEvent('headerChanged');
    	this.onHiddenChange = new YAHOO.util.CustomEvent('hiddenChanged');

        this.events = {
            /**
    	     * @event widthchange
    	     * Fires when the width of a column changes
    	     * @param {ColumnModel} this
    	     * @param {Number} columnIndex The column index
    	     * @param {Number} newWidth The new width
    	     */
    	    'widthchange': this.onWidthChange,
            /**
    	     * @event headerchange
    	     * Fires when the text of a header changes
    	     * @param {ColumnModel} this
    	     * @param {Number} columnIndex The column index
    	     * @param {Number} newText The new header text
    	     */
    	    'headerchange': this.onHeaderChange,
            /**
    	     * @event hiddenchange
    	     * Fires when a column is hidden or "unhidden"
    	     * @param {ColumnModel} this
    	     * @param {Number} columnIndex The column index
    	     * @param {Number} hidden true if hidden, false otherwise
    	     */
    	    'hiddenchange': this.onHiddenChange
        };
    };

    YAHOO.ext.grid.AbstractColumnModel.prototype = {
    	fireEvent : YAHOO.ext.util.Observable.prototype.fireEvent,
        on : YAHOO.ext.util.Observable.prototype.on,
        addListener : YAHOO.ext.util.Observable.prototype.addListener,
        delayedListener : YAHOO.ext.util.Observable.prototype.delayedListener,
        removeListener : YAHOO.ext.util.Observable.prototype.removeListener,
        purgeListeners : YAHOO.ext.util.Observable.prototype.purgeListeners,

        fireWidthChange : function(colIndex, newWidth){
    		this.onWidthChange.fireDirect(this, colIndex, newWidth);
    	},

    	fireHeaderChange : function(colIndex, newHeader){
    		this.onHeaderChange.fireDirect(this, colIndex, newHeader);
    	},

    	fireHiddenChange : function(colIndex, hidden){
    		this.onHiddenChange.fireDirect(this, colIndex, hidden);
    	},

    	/**
         * Interface method - Returns the number of columns.
         * @return {Number}
         */
        getColumnCount : function(){
            return 0;
        },

        /**
         * Interface method - Returns true if the specified column is sortable.
         * @param {Number} col The column index
         * @return {Boolean}
         */
        isSortable : function(col){
            return false;
        },

        /**
         * Interface method - Returns true if the specified column is hidden.
         * @param {Number} col The column index
         * @return {Boolean}
         */
        isHidden : function(col){
            return false;
        },

        /**
         * Interface method - Returns the sorting comparison function defined for the column (defaults to sortTypes.none).
         * @param {Number} col The column index
         * @return {Function}
         */
        getSortType : function(col){
            return YAHOO.ext.grid.DefaultColumnModel.sortTypes.none;
        },

        /**
         * Interface method - Returns the rendering (formatting) function defined for the column.
         * @param {Number} col The column index
         * @return {Function}
         */
        getRenderer : function(col){
            return YAHOO.ext.grid.DefaultColumnModel.defaultRenderer;
        },

        /**
         * Interface method - Returns the width for the specified column.
         * @param {Number} col The column index
         * @return {Number}
         */
        getColumnWidth : function(col){
            return 0;
        },

        /**
         * Interface method - Returns the total width of all columns.
         * @return {Number}
         */
        getTotalWidth : function(){
            return 0;
        },

        /**
         * Interface method - Returns the header for the specified column.
         * @param {Number} col The column index
         * @return {String}
         */
        getColumnHeader : function(col){
            return '';
        }
    };

Copyright © 2006 Jack Slocum. All rights reserved.