/**
 * @private
 */
Ext.define('Ext.grid.feature.AdvancedGroupStore', {
    extend: 'Ext.grid.AdvancedGroupStore',
 
    config: {
        view: null,
        gridLocked: false
    },
 
    fireReplaceEvent: true,
 
    // Number of records to load into a buffered grid before it has been
    // bound to a view of known size
    defaultViewSize: 100,
 
    // Use this property moving forward for all feature stores. It will be used to ensure
    // that the correct object is used to call various APIs. See EXTJSIV-10022.
    isFeatureStore: true,
 
    destroy: function() {
        Ext.destroy(this.viewListeners);
        this.callParent();
    },
 
    updateSource: function(store, oldStore) {
        var me = this;
 
        if (!me.getGridLocked()) {
            me.bindViewStoreListeners();
        }
 
        me.callParent([store, oldStore]);
    },
 
    bindViewStoreListeners: function() {
        var me = this,
            view = me.getView(),
            listeners = view.getStoreListeners(me);
 
        listeners.scope = view;
        listeners.destroyable = true;
 
        Ext.destroy(me.viewListeners);
 
        me.viewListeners = me.on(listeners);
    }
});