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);
}
}
}
}
});