Ext.define(null, { override: 'Ext.Component', saveState: function () { var me = this, stateful = me.getStateful(), id = stateful && me.getStateId(), hasListeners = me.hasListeners, cfg, configs, plugins, plugin, i, len, state, pluginState; if (id) { state = me.getState() || {}; //pass along for custom interactions if (Ext.isObject(stateful)) { configs = me.self.getConfigurator(); configs = configs.configs; // configs[name]: Ext.Config(name) for (i in stateful) { if (stateful[i]) { if (!(i in state)) { cfg = configs[i]; // if class declared this as a config state[i] = cfg ? me[cfg.get || cfg.names.get]() : me[i]; // change here } } else { delete state[i]; } } } /* * Gather state from those plugins that implement a getState method */ plugins = me.getPlugins() || []; for (i = 0, len = plugins.length; i < len; i++) { plugin = plugins[i]; if (plugin && plugin.getState) { pluginState = plugin.getState(state); if (pluginState && !state[plugin.ptype]) { //first duplicate plugin wins state[plugin.ptype] = pluginState; } } } if (!hasListeners.beforestatesave || me.fireEvent('beforestatesave', me, state) !== false) { Ext.state.Manager.set(id, state); if (hasListeners.statesave) { me.fireEvent('statesave', me, state); } } } } });