<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>The source code</title>
  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
  <style type="text/css">
    .highlight { display: block; background-color: #ddd; }
  </style>
  <script type="text/javascript">
    function highlight() {
      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
    }
  </script>
</head>
<body onload="prettyPrint(); highlight();">
  <pre class="prettyprint lang-js"><span id='Ext-grid-AbstractSelectionModel-method-constructor'><span id='Ext-grid-AbstractSelectionModel'>/**
</span></span> * @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 = Ext.extend(Ext.util.Observable,  {
<span id='Ext-grid-AbstractSelectionModel-property-grid'>    /**
</span>     * The GridPanel for which this SelectionModel is handling selection. Read-only.
     * @type Object
     * @property grid
     */

    constructor : function(){
        this.locked = false;
        Ext.grid.AbstractSelectionModel.superclass.constructor.call(this);
    },

<span id='global-method-init'>    /** @ignore Called by the grid automatically. Do not call directly. */
</span>    init : function(grid){
        this.grid = grid;
        if(this.lockOnInit){
            delete this.lockOnInit;
            this.locked = false;
            this.lock();
        }
        this.initEvents();
    },

<span id='Ext-grid-AbstractSelectionModel-method-lock'>    /**
</span>     * Locks the selections.
     */
    lock : function(){
        if(!this.locked){
            this.locked = true;
            // If the grid has been set, then the view is already initialized.
            var g = this.grid;
            if(g){
                g.getView().on({
                    scope: this,
                    beforerefresh: this.sortUnLock,
                    refresh: this.sortLock
                });
            }else{
                this.lockOnInit = true;
            }
        }
    },

<span id='Ext-grid-AbstractSelectionModel-method-sortLock'>    // set the lock states before and after a view refresh
</span>    sortLock : function() {
        this.locked = true;
    },

<span id='Ext-grid-AbstractSelectionModel-method-sortUnLock'>    // set the lock states before and after a view refresh
</span>    sortUnLock : function() {
        this.locked = false;
    },

<span id='Ext-grid-AbstractSelectionModel-method-unlock'>    /**
</span>     * Unlocks the selections.
     */
    unlock : function(){
        if(this.locked){
            this.locked = false;
            var g = this.grid,
                gv;
                
            // If the grid has been set, then the view is already initialized.
            if(g){
                gv = g.getView();
                gv.un('beforerefresh', this.sortUnLock, this);
                gv.un('refresh', this.sortLock, this);    
            }else{
                delete this.lockOnInit;
            }
        }
    },

<span id='Ext-grid-AbstractSelectionModel-method-isLocked'>    /**
</span>     * Returns true if the selections are locked.
     * @return {Boolean}
     */
    isLocked : function(){
        return this.locked;
    },

<span id='Ext-grid-AbstractSelectionModel-method-destroy'>    destroy: function(){
</span>        this.unlock();
        this.purgeListeners();
    }
});</pre>
</body>
</html>