-<!DOCTYPE html><html><head><title>Sencha Documentation Project</title><link rel="stylesheet" href="../reset.css" type="text/css"><link rel="stylesheet" href="../prettify.css" type="text/css"><link rel="stylesheet" href="../prettify_sa.css" type="text/css"><script type="text/javascript" src="../prettify.js"></script></head><body onload="prettyPrint()"><pre class="prettyprint"><pre><span id='Ext-state.Stateful'>/**
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>The source code</title>
+ <link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
+ <script type="text/javascript" src="../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-state-Stateful'>/**
</span> * @class Ext.state.Stateful
- * A mixin for being able to save the state of an object to an underlying
+ * A mixin for being able to save the state of an object to an underlying
* {@link Ext.state.Provider}.
*/
Ext.define('Ext.state.Stateful', {
-
+
/* Begin Definitions */
-
+
mixins: {
observable: 'Ext.util.Observable'
},
-
+
requires: ['Ext.state.Manager'],
-
+
/* End Definitions */
-
-<span id='Ext-state.Stateful-cfg-stateful'> /**
+
+<span id='Ext-state-Stateful-cfg-stateful'> /**
</span> * @cfg {Boolean} stateful
* <p>A flag which causes the object to attempt to restore the state of
* internal properties from a saved state on startup. The object must have
- * a <code>{@link #stateId}</code> for state to be managed.
- * Auto-generated ids are not guaranteed to be stable across page loads and
+ * a <code>{@link #stateId}</code> for state to be managed.
+ * Auto-generated ids are not guaranteed to be stable across page loads and
* cannot be relied upon to save and restore the same state for a object.<p>
* <p>For state saving to work, the state manager's provider must have been
* set to an implementation of {@link Ext.state.Provider} which overrides the
* object hash which represents the restorable state of the object.</p>
* <p>The value yielded by getState is passed to {@link Ext.state.Manager#set}
* which uses the configured {@link Ext.state.Provider} to save the object
- * keyed by the <code>{@link stateId}</code></p>.
+ * keyed by the <code>{@link #stateId}</code></p>.
* <p>During construction, a stateful object attempts to <i>restore</i>
* its state by calling {@link Ext.state.Manager#get} passing the
* <code>{@link #stateId}</code></p>
* {@link #beforestatesave} and {@link #statesave} events.</p>
*/
stateful: true,
-
-<span id='Ext-state.Stateful-cfg-stateId'> /**
+
+<span id='Ext-state-Stateful-cfg-stateId'> /**
</span> * @cfg {String} stateId
* The unique id for this object to use for state management purposes.
* <p>See {@link #stateful} for an explanation of saving and restoring state.</p>
*/
-
-<span id='Ext-state.Stateful-cfg-stateEvents'> /**
+
+<span id='Ext-state-Stateful-cfg-stateEvents'> /**
</span> * @cfg {Array} stateEvents
* <p>An array of events that, when fired, should trigger this object to
* save its state (defaults to none). <code>stateEvents</code> may be any type
* <p>See <code>{@link #stateful}</code> for an explanation of saving and
* restoring object state.</p>
*/
-
-<span id='Ext-state.Stateful-cfg-saveBuffer'> /**
+
+<span id='Ext-state-Stateful-cfg-saveBuffer'> /**
</span> * @cfg {Number} saveBuffer A buffer to be applied if many state events are fired within
* a short period. Defaults to 100.
*/
saveDelay: 100,
-
+
autoGenIdRe: /^((\w+-)|(ext-comp-))\d{4,}$/i,
-
+
constructor: function(config) {
var me = this;
-
+
config = config || {};
if (Ext.isDefined(config.stateful)) {
me.stateful = config.stateful;
if (Ext.isDefined(config.saveDelay)) {
me.saveDelay = config.saveDelay;
}
- me.stateId = config.stateId;
-
+ me.stateId = me.stateId || config.stateId;
+
if (!me.stateEvents) {
me.stateEvents = [];
}
me.stateEvents.concat(config.stateEvents);
}
this.addEvents(
-<span id='Ext-state.Stateful-event-beforestaterestore'> /**
+<span id='Ext-state-Stateful-event-beforestaterestore'> /**
</span> * @event beforestaterestore
* Fires before the state of the object is restored. Return false from an event handler to stop the restore.
* @param {Ext.state.Stateful} this
* provide custom state restoration.
*/
'beforestaterestore',
-
-<span id='Ext-state.Stateful-event-staterestore'> /**
+
+<span id='Ext-state-Stateful-event-staterestore'> /**
</span> * @event staterestore
* Fires after the state of the object is restored.
* @param {Ext.state.Stateful} this
* object. The method maybe overriden to provide custom state restoration.
*/
'staterestore',
-
-<span id='Ext-state.Stateful-event-beforestatesave'> /**
+
+<span id='Ext-state-Stateful-event-beforestatesave'> /**
</span> * @event beforestatesave
* Fires before the state of the object is saved to the configured state provider. Return false to stop the save.
* @param {Ext.state.Stateful} this
* has a null implementation.
*/
'beforestatesave',
-
-<span id='Ext-state.Stateful-event-statesave'> /**
+
+<span id='Ext-state-Stateful-event-statesave'> /**
</span> * @event statesave
* Fires after the state of the object is saved to the configured state provider.
* @param {Ext.state.Stateful} this
me.initState();
}
},
-
-<span id='Ext-state.Stateful-method-initStateEvents'> /**
+
+<span id='Ext-state-Stateful-method-initStateEvents'> /**
</span> * Initializes any state events for this object.
* @private
*/
initStateEvents: function() {
this.addStateEvents(this.stateEvents);
},
-
-<span id='Ext-state.Stateful-method-addStateEvents'> /**
+
+<span id='Ext-state-Stateful-method-addStateEvents'> /**
</span> * Add events that will trigger the state to be saved.
* @param {String/Array} events The event name or an array of event names.
*/
if (!Ext.isArray(events)) {
events = [events];
}
-
+
var me = this,
i = 0,
len = events.length;
-
+
for (; i < len; ++i) {
me.on(events[i], me.onStateChange, me);
}
},
-
-<span id='Ext-state.Stateful-method-onStateChange'> /**
+
+<span id='Ext-state-Stateful-method-onStateChange'> /**
</span> * This method is called when any of the {@link #stateEvents} are fired.
* @private
*/
onStateChange: function(){
var me = this,
delay = me.saveDelay;
-
+
if (delay > 0) {
if (!me.stateTask) {
me.stateTask = Ext.create('Ext.util.DelayedTask', me.saveState, me);
me.saveState();
}
},
-
-<span id='Ext-state.Stateful-method-saveState'> /**
+
+<span id='Ext-state-Stateful-method-saveState'> /**
</span> * Saves the state of the object to the persistence store.
* @private
*/
var me = this,
id,
state;
-
+
if (me.stateful !== false) {
id = me.getStateId();
if (id) {
}
}
},
-
-<span id='Ext-state.Stateful-method-getState'> /**
+
+<span id='Ext-state-Stateful-method-getState'> /**
</span> * Gets the current state of the object. By default this function returns null,
* it should be overridden in subclasses to implement methods for getting the state.
* @return {Object} The current state
*/
getState: function(){
- return null;
+ return null;
},
-
-<span id='Ext-state.Stateful-method-applyState'> /**
+
+<span id='Ext-state-Stateful-method-applyState'> /**
</span> * Applies the state to the object. This should be overridden in subclasses to do
* more complex state operations. By default it applies the state properties onto
* the current object.
Ext.apply(this, state);
}
},
-
-<span id='Ext-state.Stateful-method-getStateId'> /**
+
+<span id='Ext-state-Stateful-method-getStateId'> /**
</span> * Gets the state id for this object.
* @return {String} The state id, null if not found.
*/
getStateId: function() {
var me = this,
id = me.stateId;
-
+
if (!id) {
id = me.autoGenIdRe.test(String(me.id)) ? null : me.id;
}
return id;
},
-
-<span id='Ext-state.Stateful-method-initState'> /**
+
+<span id='Ext-state-Stateful-method-initState'> /**
</span> * Initializes the state of the object upon construction.
* @private
*/
var me = this,
id = me.getStateId(),
state;
-
+
if (me.stateful !== false) {
if (id) {
state = Ext.state.Manager.get(id);
}
}
},
-
-<span id='Ext-state.Stateful-method-destroy'> /**
+
+<span id='Ext-state-Stateful-method-destroy'> /**
</span> * Destroys this stateful object.
*/
destroy: function(){
task.cancel();
}
this.clearListeners();
-
+
}
-
+
});
-</pre></pre></body></html>
\ No newline at end of file
+</pre>
+</body>
+</html>