    /*!
     * Ext JS Library 3.0.3
     * Copyright(c) 2006-2009 Ext JS, LLC
     * licensing@extjs.com
     * http://www.extjs.com/license
     */
    /**
     * @class Ext.grid.AbstractSelectionModel
     * @extends Ext.util.Observable
     * Abstract base class for grid SelectionModels.  It provides the interface that should be
     * implemented by descendant classes.  This class should not be directly instantiated.
     * @constructor
     */
    Ext.grid.AbstractSelectionModel = function(){
        this.locked = false;
        Ext.grid.AbstractSelectionModel.superclass.constructor.call(this);
    };

    Ext.extend(Ext.grid.AbstractSelectionModel, Ext.util.Observable,  {
        /**
         * The GridPanel for which this SelectionModel is handling selection. Read-only.
         * @type Object
         * @property grid
         */

        /** @ignore Called by the grid automatically. Do not call directly. */
        init : function(grid){
            this.grid = grid;
            this.initEvents();
        },

        /**
         * Locks the selections.
         */
        lock : function(){
            this.locked = true;
        },

        /**
         * Unlocks the selections.
         */
        unlock : function(){
            this.locked = false;
        },

        /**
         * Returns true if the selections are locked.
         * @return {Boolean}
         */
        isLocked : function(){
            return this.locked;
        },

        destroy: function(){
            this.purgeListeners();
        }
    });