X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/c930e9176a5a85509c5b0230e2bff5c22a591432..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/docs/source/Provider.html diff --git a/docs/source/Provider.html b/docs/source/Provider.html index d420c804..c5f758f2 100644 --- a/docs/source/Provider.html +++ b/docs/source/Provider.html @@ -1,131 +1,96 @@ - -
-/** - * @class Ext.state.Provider - * Abstract base class for state provider implementations. This class provides methods - * for encoding and decoding typed variables including dates and defines the - * Provider interface. +\ No newline at end of fileSencha Documentation Project /** + * @class Ext.direct.Provider + * <p>Ext.direct.Provider is an abstract class meant to be extended.</p> + * + * <p>For example ExtJs implements the following subclasses:</p> + * <pre><code> +Provider +| ++---{@link Ext.direct.JsonProvider JsonProvider} + | + +---{@link Ext.direct.PollingProvider PollingProvider} + | + +---{@link Ext.direct.RemotingProvider RemotingProvider} + * </code></pre> + * @abstract */ -Ext.state.Provider = function(){ - /** - * @event statechange - * Fires when a state change occurs. - * @param {Provider} this This state provider - * @param {String} key The state key which was changed - * @param {String} value The encoded value for the state - */ - this.addEvents("statechange"); - this.state = {}; - Ext.state.Provider.superclass.constructor.call(this); -}; -Ext.extend(Ext.state.Provider, Ext.util.Observable, { - /** - * Returns the current value for a key - * @param {String} name The key name - * @param {Mixed} defaultValue A default value to return if the key's value is not found - * @return {Mixed} The state data - */ - get : function(name, defaultValue){ - return typeof this.state[name] == "undefined" ? - defaultValue : this.state[name]; +Ext.define('Ext.direct.Provider', { + + /* Begin Definitions */ + + alias: 'direct.provider', + + mixins: { + observable: 'Ext.util.Observable' }, - - /** - * Clears a value from the state - * @param {String} name The key name + + /* End Definitions */ + + /** + * @cfg {String} id + * The unique id of the provider (defaults to an {@link Ext#id auto-assigned id}). + * You should assign an id if you need to be able to access the provider later and you do + * not have an object reference available, for example: + * <pre><code> +Ext.direct.Manager.addProvider({ + type: 'polling', + url: 'php/poll.php', + id: 'poll-provider' +}); +var p = {@link Ext.direct.Manager}.{@link Ext.direct.Manager#getProvider getProvider}('poll-provider'); +p.disconnect(); + * </code></pre> */ - clear : function(name){ - delete this.state[name]; - this.fireEvent("statechange", this, name, null); + + constructor : function(config){ + var me = this; + + Ext.apply(me, config); + me.addEvents( + /** + * @event connect + * Fires when the Provider connects to the server-side + * @param {Ext.direct.Provider} provider The {@link Ext.direct.Provider Provider}. + */ + 'connect', + /** + * @event disconnect + * Fires when the Provider disconnects from the server-side + * @param {Ext.direct.Provider} provider The {@link Ext.direct.Provider Provider}. + */ + 'disconnect', + /** + * @event data + * Fires when the Provider receives data from the server-side + * @param {Ext.direct.Provider} provider The {@link Ext.direct.Provider Provider}. + * @param {event} e The Ext.Direct.Event type that occurred. + */ + 'data', + /** + * @event exception + * Fires when the Provider receives an exception from the server-side + */ + 'exception' + ); + me.mixins.observable.constructor.call(me, config); }, - - /** - * Sets the value for a key - * @param {String} name The key name - * @param {Mixed} value The value to set + + /** + * Returns whether or not the server-side is currently connected. + * Abstract method for subclasses to implement. */ - set : function(name, value){ - this.state[name] = value; - this.fireEvent("statechange", this, name, value); + isConnected: function(){ + return false; }, - /** - * Decodes a string previously encoded with {@link #encodeValue}. - * @param {String} value The value to decode - * @return {Mixed} The decoded value + /** + * Abstract methods for subclasses to implement. */ - decodeValue : function(cookie){ - var re = /^(a|n|d|b|s|o)\:(.*)$/; - var matches = re.exec(unescape(cookie)); - if(!matches || !matches[1]) return; // non state cookie - var type = matches[1]; - var v = matches[2]; - switch(type){ - case "n": - return parseFloat(v); - case "d": - return new Date(Date.parse(v)); - case "b": - return (v == "1"); - case "a": - var all = []; - var values = v.split("^"); - for(var i = 0, len = values.length; i < len; i++){ - all.push(this.decodeValue(values[i])); - } - return all; - case "o": - var all = {}; - var values = v.split("^"); - for(var i = 0, len = values.length; i < len; i++){ - var kv = values[i].split("="); - all[kv[0]] = this.decodeValue(kv[1]); - } - return all; - default: - return v; - } - }, - - /** - * Encodes a value including type information. Decode with {@link #decodeValue}. - * @param {Mixed} value The value to encode - * @return {String} The encoded value + connect: Ext.emptyFn, + + /** + * Abstract methods for subclasses to implement. */ - encodeValue : function(v){ - var enc; - if(typeof v == "number"){ - enc = "n:" + v; - }else if(typeof v == "boolean"){ - enc = "b:" + (v ? "1" : "0"); - }else if(Ext.isDate(v)){ - enc = "d:" + v.toGMTString(); - }else if(Ext.isArray(v)){ - var flat = ""; - for(var i = 0, len = v.length; i < len; i++){ - flat += this.encodeValue(v[i]); - if(i != len-1) flat += "^"; - } - enc = "a:" + flat; - }else if(typeof v == "object"){ - var flat = ""; - for(var key in v){ - if(typeof v[key] != "function" && v[key] !== undefined){ - flat += key + "=" + this.encodeValue(v[key]) + "^"; - } - } - enc = "o:" + flat.substring(0, flat.length-1); - }else{ - enc = "s:" + v; - } - return escape(enc); - } + disconnect: Ext.emptyFn }); -- - \ No newline at end of file +