/**
 * @private
 */
Ext.define('Ext.mixin.ConfigState', {
    extend: 'Ext.Mixin',

    mixinConfig: {
        id: 'configstate'
    },

    alternateStateConfig: '',

    toggleConfigState: function(isAlternate) {
        var me = this,
            state = me.capturedConfigState,
            cfg = me.getConfig(me.alternateStateConfig),
            key;

        if (!cfg) {
            return;
        }

        if (isAlternate) {
            state = {};

            for (key in cfg) {
                state[key] = me.getConfig(key);
            }

            me.capturedConfigState = state;
            me.setConfig(cfg);
            // Capture
        }
        else if (!me.isConfiguring && state) {
            me.setConfig(state);
            delete me.capturedConfigState;
        }
    }
});