Upgrade to ExtJS 3.3.1 - Released 11/30/2010
[extjs.git] / docs / output / Ext.direct.RemotingProvider.html
1 <div class="body-wrap" xmlns:ext="http://www.extjs.com"><div class="top-tools"><a class="inner-link" href="#Ext.direct.RemotingProvider-props"><img src="resources/images/default/s.gif" class="item-icon icon-prop">Properties</a>&#13;<a class="inner-link" href="#Ext.direct.RemotingProvider-methods"><img src="resources/images/default/s.gif" class="item-icon icon-method">Methods</a>&#13;<a class="inner-link" href="#Ext.direct.RemotingProvider-events"><img src="resources/images/default/s.gif" class="item-icon icon-event">Events</a>&#13;<a class="inner-link" href="#Ext.direct.RemotingProvider-configs"><img src="resources/images/default/s.gif" class="item-icon icon-config">Config Options</a>&#13;<a class="bookmark" href="../docs/?class=Ext.direct.RemotingProvider"><img src="resources/images/default/s.gif" class="item-icon icon-fav">Direct Link</a>&#13;</div><div class="inheritance res-block"><pre class="res-block-inner"><a href="output/Ext.util.Observable.html" ext:member="" ext:cls="Ext.util.Observable">Observable</a>
2   <img src="resources/elbow-end.gif"><a href="output/Ext.direct.Provider.html" ext:member="" ext:cls="Ext.direct.Provider">Provider</a>
3     <img src="resources/elbow-end.gif"><a href="output/Ext.direct.JsonProvider.html" ext:member="" ext:cls="Ext.direct.JsonProvider">JsonProvider</a>
4       <img src="resources/elbow-end.gif">RemotingProvider</pre></div><h1>Class <a href="source/RemotingProvider.html#cls-Ext.direct.RemotingProvider">Ext.direct.RemotingProvider</a></h1><table cellspacing="0"><tr><td class="label">Package:</td><td class="hd-info">Ext.direct</td></tr><tr><td class="label">Defined In:</td><td class="hd-info"><a href="source/RemotingProvider.html#cls-Ext.direct.RemotingProvider">RemotingProvider.js</a></td></tr><tr><td class="label">Class:</td><td class="hd-info"><a href="source/RemotingProvider.html#cls-Ext.direct.RemotingProvider">RemotingProvider</a></td></tr><tr><td class="label">Extends:</td><td class="hd-info"><a href="output/Ext.direct.JsonProvider.html" ext:cls="Ext.direct.JsonProvider" ext:member="">JsonProvider</a></td></tr></table><div class="description"><p>The <a href="output/Ext.direct.RemotingProvider.html" ext:cls="Ext.direct.RemotingProvider">RemotingProvider</a> exposes access to
5 server side methods on the client (a remote procedure call (RPC) type of
6 connection where the client can initiate a procedure on the server).</p>
7 <p>This allows for code to be organized in a fashion that is maintainable,
8 while providing a clear path between client and server, something that is
9 not always apparent when using URLs.</p>
10 <p>To accomplish this the server-side needs to describe what classes and methods
11 are available on the client-side. This configuration will typically be
12 outputted by the server-side Ext.Direct stack when the API description is built.</p></div><div class="hr"></div><a id="Ext.direct.RemotingProvider-configs"></a><h2>Config Options</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Config Options</th><th class="msource-header">Defined By</th></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-actions"></a><b><a href="source/RemotingProvider.html#cfg-Ext.direct.RemotingProvider-actions">actions</a></b> : Object<div class="mdesc"><div class="short">Object literal defining the server side actions and methods. For example, if
13 the Provider is configured with:
14 "action...</div><div class="long">Object literal defining the server side actions and methods. For example, if
15 the Provider is configured with:
16 <pre><code><em>"actions"</em>:{ <i>// each property within the <em>'actions'</em> object represents a server side Class </i>
17     <em>"TestAction"</em>:[ <i>// array of methods within each server side Class to be   </i>
18     {              <i>// stubbed out on client</i>
19         <em>"name"</em>:<em>"doEcho"</em>, 
20         <em>"len"</em>:1            
21     },{
22         <em>"name"</em>:<em>"multiply"</em>,<i>// name of method</i>
23         <em>"len"</em>:2           <i>// The number of parameters that will be used to create an</i>
24                           <i>// array of data to send to the server side <b>function</b>.</i>
25                           <i>// Ensure the server sends back a Number, not a String. </i>
26     },{
27         <em>"name"</em>:<em>"doForm"</em>,
28         <em>"formHandler"</em>:true, <i>// direct the client to use specialized form handling method </i>
29         <em>"len"</em>:1
30     }]
31 }</code></pre>
32 <p>Note that a Store is not required, a server method can be called at any time.
33 In the following example a <b>client side</b> handler is used to call the
34 server side method "multiply" in the server-side "TestAction" Class:</p>
35 <pre><code>TestAction.multiply(
36     2, 4, <i>// pass two arguments to server, so specify len=2</i>
37     <i>// callback <b>function</b> after the server is called</i>
38     <i>// result: the result returned by the server</i>
39     <i>//      e: Ext.Direct.RemotingEvent object</i>
40     <b>function</b>(result, e){
41         <b>var</b> t = e.getTransaction();
42         <b>var</b> action = t.action; <i>// server side Class called</i>
43         <b>var</b> method = t.method; <i>// server side method called</i>
44         <b>if</b>(e.status){
45             <b>var</b> answer = Ext.encode(result); <i>// 8</i>
46     
47         }<b>else</b>{
48             <b>var</b> msg = e.message; <i>// failure message</i>
49         }
50     }
51 );</code></pre>
52 In the example above, the server side "multiply" function will be passed two
53 arguments (2 and 4).  The "multiply" method should return the value 8 which will be
54 available as the <tt>result</tt> in the example above.</div></div></td><td class="msource">RemotingProvider</td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-enableBuffer"></a><b><a href="source/RemotingProvider.html#cfg-Ext.direct.RemotingProvider-enableBuffer">enableBuffer</a></b> : Number/Boolean<div class="mdesc"><div class="short">true or false to enable or disable combining of method
55 calls. If a number is specified this is the amount of time in ...</div><div class="long"><p><tt>true</tt> or <tt>false</tt> to enable or disable combining of method
56 calls. If a number is specified this is the amount of time in milliseconds
57 to wait before sending a batched request (defaults to <tt>10</tt>).</p>
58 <br><p>Calls which are received within the specified timeframe will be
59 concatenated together and sent in a single request, optimizing the
60 application by reducing the amount of round trips that have to be made
61 to the server.</p></div></div></td><td class="msource">RemotingProvider</td></tr><tr class="config-row  "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-enableUrlEncode"></a><b><a href="source/RemotingProvider.html#cfg-Ext.direct.RemotingProvider-enableUrlEncode">enableUrlEncode</a></b> : String<div class="mdesc">Specify which param will hold the arguments for the method.
62 Defaults to <tt>'data'</tt>.</div></td><td class="msource">RemotingProvider</td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-id"></a><b><a href="source/Provider.html#cfg-Ext.direct.Provider-id">id</a></b> : String<div class="mdesc"><div class="short">The unique id of the provider (defaults to an auto-assigned id).
63 You should assign an id if you need to be able to ac...</div><div class="long">The unique id of the provider (defaults to an <a href="output/Ext.html#Ext-id" ext:member="id" ext:cls="Ext">auto-assigned id</a>).
64 You should assign an id if you need to be able to access the provider later and you do
65 not have an object reference available, for example:
66 <pre><code>Ext.Direct.addProvider(
67     {
68         type: <em>'polling'</em>,
69         url:  <em>'php/poll.php'</em>,
70         id:   <em>'poll-provider'</em>
71     }
72 );
73      
74 <b>var</b> p = <a href="output/Ext.Direct.html" ext:cls="Ext.Direct">Ext.Direct</a>.<a href="output/Ext.Direct.html#Ext.Direct-getProvider" ext:member="getProvider" ext:cls="Ext.Direct">getProvider</a>(<em>'poll-provider'</em>);
75 p.disconnect();</code></pre></div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#id" ext:member="#id" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-listeners"></a><b><a href="source/Observable.html#cfg-Ext.util.Observable-listeners">listeners</a></b> : Object<div class="mdesc"><div class="short">A config object containing one or more event handlers to be added to this
76 object during initialization.  This should ...</div><div class="long"><p>A config object containing one or more event handlers to be added to this
77 object during initialization.  This should be a valid listeners config object as specified in the
78 <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> example for attaching multiple handlers at once.</p>
79 <br><p><b><u>DOM events from ExtJs <a href="output/Ext.Component.html" ext:cls="Ext.Component">Components</a></u></b></p>
80 <br><p>While <i>some</i> ExtJs Component classes export selected DOM events (e.g. "click", "mouseover" etc), this
81 is usually only done when extra value can be added. For example the <a href="output/Ext.DataView.html" ext:cls="Ext.DataView">DataView</a>'s
82 <b><code><a href="output/Ext.DataView.html#Ext.DataView-click" ext:member="click" ext:cls="Ext.DataView">click</a></code></b> event passing the node clicked on. To access DOM
83 events directly from a Component's HTMLElement, listeners must be added to the <i><a href="output/Ext.Component.html#Ext.Component-getEl" ext:member="getEl" ext:cls="Ext.Component">Element</a></i> after the Component
84 has been rendered. A plugin can simplify this step:<pre><code><i>// Plugin is configured <b>with</b> a listeners config object.</i>
85 <i>// The Component is appended to the argument list of all handler functions.</i>
86 Ext.DomObserver = Ext.extend(Object, {
87     constructor: <b>function</b>(config) {
88         this.listeners = config.listeners ? config.listeners : config;
89     },
90
91     <i>// Component passes itself into plugin&#39;s init method</i>
92     init: <b>function</b>(c) {
93         <b>var</b> p, l = this.listeners;
94         <b>for</b> (p <b>in</b> l) {
95             <b>if</b> (Ext.isFunction(l[p])) {
96                 l[p] = this.createHandler(l[p], c);
97             } <b>else</b> {
98                 l[p].fn = this.createHandler(l[p].fn, c);
99             }
100         }
101
102         <i>// Add the listeners to the Element immediately following the render call</i>
103         c.render = c.render.<a href="output/Function.html#Function-createSequence" ext:member="createSequence" ext:cls="Function">createSequence</a>(<b>function</b>() {
104             <b>var</b> e = c.getEl();
105             <b>if</b> (e) {
106                 e.on(l);
107             }
108         });
109     },
110
111     createHandler: <b>function</b>(fn, c) {
112         <b>return</b> <b>function</b>(e) {
113             fn.call(this, e, c);
114         };
115     }
116 });
117
118 <b>var</b> combo = <b>new</b> Ext.form.ComboBox({
119
120     <i>// Collapse combo when its element is clicked on</i>
121     plugins: [ <b>new</b> Ext.DomObserver({
122         click: <b>function</b>(evt, comp) {
123             comp.collapse();
124         }
125     })],
126     store: myStore,
127     typeAhead: true,
128     mode: <em>'local'</em>,
129     triggerAction: <em>'all'</em>
130 });</code></pre></p></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#listeners" ext:member="#listeners" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="config-row  "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-maxRetries"></a><b><a href="source/RemotingProvider.html#cfg-Ext.direct.RemotingProvider-maxRetries">maxRetries</a></b> : Number<div class="mdesc">Number of times to re-attempt delivery on failure of a call. Defaults to <tt>1</tt>.</div></td><td class="msource">RemotingProvider</td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-namespace"></a><b><a href="source/RemotingProvider.html#cfg-Ext.direct.RemotingProvider-namespace">namespace</a></b> : String/Object<div class="mdesc"><div class="short">Namespace for the Remoting Provider (defaults to the browser global scope of window).
131 Explicitly specify the namespac...</div><div class="long">Namespace for the Remoting Provider (defaults to the browser global scope of <i>window</i>).
132 Explicitly specify the namespace Object, or specify a String to have a
133 <a href="output/Ext.html#Ext-namespace" ext:member="namespace" ext:cls="Ext">namespace created</a> implicitly.</div></div></td><td class="msource">RemotingProvider</td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-priority"></a><b><a href="source/Provider.html#cfg-Ext.direct.Provider-priority">priority</a></b> : Number<div class="mdesc"><div class="short">Priority of the request. Lower is higher priority, 0 means "duplex" (always on).
134 All Providers default to 1 except fo...</div><div class="long">Priority of the request. Lower is higher priority, <tt>0</tt> means "duplex" (always on).
135 All Providers default to <tt>1</tt> except for PollingProvider which defaults to <tt>3</tt>.</div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#priority" ext:member="#priority" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="config-row  "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-timeout"></a><b><a href="source/RemotingProvider.html#cfg-Ext.direct.RemotingProvider-timeout">timeout</a></b> : Number<div class="mdesc">The timeout to use for each request. Defaults to <tt>undefined</tt>.</div></td><td class="msource">RemotingProvider</td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-type"></a><b><a href="source/Provider.html#cfg-Ext.direct.Provider-type">type</a></b> : String<div class="mdesc"><div class="short">Required, undefined by default.  The type of provider specified
136 to Ext.Direct.addProvider to create a
137 new Provider. A...</div><div class="long"><b>Required</b>, <tt>undefined</tt> by default.  The <tt>type</tt> of provider specified
138 to <a href="output/Ext.Direct.html" ext:cls="Ext.Direct">Ext.Direct</a>.<a href="output/Ext.Direct.html#Ext.Direct-addProvider" ext:member="addProvider" ext:cls="Ext.Direct">addProvider</a> to create a
139 new Provider. Acceptable values by default are:<div class="mdetail-params"><ul>
140 <li><b><tt>polling</tt></b> : <a href="output/Ext.direct.PollingProvider.html" ext:cls="Ext.direct.PollingProvider">PollingProvider</a></li>
141 <li><b><tt>remoting</tt></b> : <a href="output/Ext.direct.RemotingProvider.html" ext:cls="Ext.direct.RemotingProvider">RemotingProvider</a></li>
142 </ul></div></div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#type" ext:member="#type" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="config-row  "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-url"></a><b><a href="source/RemotingProvider.html#cfg-Ext.direct.RemotingProvider-url">url</a></b> : String<div class="mdesc"><b>Required<b>. The url to connect to the <a href="output/Ext.Direct.html" ext:cls="Ext.Direct">Ext.Direct</a> server-side router.</div></td><td class="msource">RemotingProvider</td></tr></tbody></table><a id="Ext.direct.RemotingProvider-props"></a><h2>Public Properties</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Property</th><th class="msource-header">Defined By</th></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-connect"></a><b><a href="source/Provider.html#prop-Ext.direct.Provider-connect">connect</a></b> : Object<div class="mdesc">Abstract methods for subclasses to implement.</div></td><td class="msource"><a href="output/Ext.direct.Provider.html#connect" ext:member="#connect" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-disconnect"></a><b><a href="source/Provider.html#prop-Ext.direct.Provider-disconnect">disconnect</a></b> : Object<div class="mdesc">Abstract methods for subclasses to implement.</div></td><td class="msource"><a href="output/Ext.direct.Provider.html#disconnect" ext:member="#disconnect" ext:cls="Ext.direct.Provider">Provider</a></td></tr></tbody></table><a id="Ext.direct.RemotingProvider-methods"></a><h2>Public Methods</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Method</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addEvents">addEvents</a></b>(&nbsp;<code>Object|String&nbsp;o</code>,&nbsp;<code>string&nbsp;Optional.</code>&nbsp;)
143     :
144                                         void<div class="mdesc"><div class="short">Adds the specified events to the list of events which this Observable may fire.</div><div class="long">Adds the specified events to the list of events which this Observable may fire.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object|String<div class="sub-desc">Either an object with event names as properties with a value of <code>true</code>
145 or the first event name string if multiple event names are being passed as separate parameters.</div></li><li><code>Optional.</code> : string<div class="sub-desc">Event name if multiple event names are being passed as separate parameters.
146 Usage:<pre><code>this.addEvents(<em>'storeloaded'</em>, <em>'storecleared'</em>);</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addEvents" ext:member="#addEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addListener">addListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
147     :
148                                         void<div class="mdesc"><div class="short">Appends an event handler to this object.</div><div class="long">Appends an event handler to this object.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to listen for.</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes.</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
149 <b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.
150 properties. This may contain any of the following properties:<ul>
151 <li><b>scope</b> : Object<div class="sub-desc">The scope (<code><b>this</b></code> reference) in which the handler function is executed.
152 <b>If omitted, defaults to the object which fired the event.</b></div></li>
153 <li><b>delay</b> : Number<div class="sub-desc">The number of milliseconds to delay the invocation of the handler after the event fires.</div></li>
154 <li><b>single</b> : Boolean<div class="sub-desc">True to add a handler to handle just the next firing of the event, and then remove itself.</div></li>
155 <li><b>buffer</b> : Number<div class="sub-desc">Causes the handler to be scheduled to run in an <a href="output/Ext.util.DelayedTask.html" ext:cls="Ext.util.DelayedTask">Ext.util.DelayedTask</a> delayed
156 by the specified number of milliseconds. If the event fires again within that time, the original
157 handler is <em>not</em> invoked, but the new handler is scheduled in its place.</div></li>
158 <li><b>target</b> : Observable<div class="sub-desc">Only call the handler if the event was fired on the target Observable, <i>not</i>
159 if the event was bubbled up from a child Observable.</div></li>
160 </ul><br>
161 <p>
162 <b>Combining Options</b><br>
163 Using the options argument, it is possible to combine different types of listeners:<br>
164 <br>
165 A delayed, one-time listener.
166 <pre><code>myDataView.on(<em>'click'</em>, this.onClick, this, {
167 single: true,
168 delay: 100
169 });</code></pre>
170 <p>
171 <b>Attaching multiple handlers in 1 call</b><br>
172 The method also allows for a single argument to be passed which is a config object containing properties
173 which specify multiple handlers.
174 <p>
175 <pre><code>myGridPanel.on({
176 <em>'click'</em> : {
177     fn: this.onClick,
178     scope: this,
179     delay: 100
180 },
181 <em>'mouseover'</em> : {
182     fn: this.onMouseOver,
183     scope: this
184 },
185 <em>'mouseout'</em> : {
186     fn: this.onMouseOut,
187     scope: this
188 }
189 });</code></pre>
190 <p>
191 Or a shorthand syntax:<br>
192 <pre><code>myGridPanel.on({
193 <em>'click'</em> : this.onClick,
194 <em>'mouseover'</em> : this.onMouseOver,
195 <em>'mouseout'</em> : this.onMouseOut,
196  scope: this
197 });</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addListener" ext:member="#addListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-enableBubble"></a><b><a href="source/Observable-more.html#method-Ext.util.Observable-enableBubble">enableBubble</a></b>(&nbsp;<code>String/Array&nbsp;events</code>&nbsp;)
198     :
199                                         void<div class="mdesc"><div class="short">Enables events fired by this Observable to bubble up an owner hierarchy by calling
200 this.getBubbleTarget() if present....</div><div class="long"><p>Enables events fired by this Observable to bubble up an owner hierarchy by calling
201 <code>this.getBubbleTarget()</code> if present. There is no implementation in the Observable base class.</p>
202 <p>This is commonly used by Ext.Components to bubble events to owner Containers. See <a href="output/Ext.Component.getBubbleTarget.html" ext:cls="Ext.Component.getBubbleTarget">Ext.Component.getBubbleTarget</a>. The default
203 implementation in Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to
204 access the required target more quickly.</p>
205 <p>Example:</p><pre><code>Ext.override(Ext.form.Field, {
206     <i>//  Add functionality to Field&#39;s initComponent to enable the change event to bubble</i>
207     initComponent : Ext.form.Field.prototype.initComponent.createSequence(<b>function</b>() {
208         this.enableBubble(<em>'change'</em>);
209     }),
210
211     <i>//  We know that we want Field&#39;s events to bubble directly to the FormPanel.</i>
212     getBubbleTarget : <b>function</b>() {
213         <b>if</b> (!this.formPanel) {
214             this.formPanel = this.findParentByType(<em>'form'</em>);
215         }
216         <b>return</b> this.formPanel;
217     }
218 });
219
220 <b>var</b> myForm = <b>new</b> Ext.formPanel({
221     title: <em>'User Details'</em>,
222     items: [{
223         ...
224     }],
225     listeners: {
226         change: <b>function</b>() {
227             <i>// Title goes red <b>if</b> form has been modified.</i>
228             myForm.header.setStyle(<em>'color'</em>, <em>'red'</em>);
229         }
230     }
231 });</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>events</code> : String/Array<div class="sub-desc">The event name to bubble, or an Array of event names.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#enableBubble" ext:member="#enableBubble" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-fireEvent"></a><b><a href="source/Observable.html#method-Ext.util.Observable-fireEvent">fireEvent</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Object...&nbsp;args</code>&nbsp;)
232     :
233                                         Boolean<div class="mdesc"><div class="short">Fires the specified event with the passed parameters (minus the event name).
234 An event may be set to bubble up an Obse...</div><div class="long"><p>Fires the specified event with the passed parameters (minus the event name).</p>
235 <p>An event may be set to bubble up an Observable parent hierarchy (See <a href="output/Ext.Component.html#Ext.Component-getBubbleTarget" ext:member="getBubbleTarget" ext:cls="Ext.Component">Ext.Component.getBubbleTarget</a>)
236 by calling <a href="output/Ext.util.Observable.html#Ext.util.Observable-enableBubble" ext:member="enableBubble" ext:cls="Ext.util.Observable">enableBubble</a>.</p><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to fire.</div></li><li><code>args</code> : Object...<div class="sub-desc">Variable number of parameters are passed to handlers.</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">returns false if any of the handlers return false otherwise it returns true.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#fireEvent" ext:member="#fireEvent" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-hasListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-hasListener">hasListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>&nbsp;)
237     :
238                                         Boolean<div class="mdesc"><div class="short">Checks to see if this object has any listeners for a specified event</div><div class="long">Checks to see if this object has any listeners for a specified event<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to check for</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">True if the event is being listened for, else false</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#hasListener" ext:member="#hasListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-isConnected"></a><b><a href="source/Provider.html#method-Ext.direct.Provider-isConnected">isConnected</a></b>()
239     :
240                                         void<div class="mdesc"><div class="short">Returns whether or not the server-side is currently connected.
241 Abstract method for subclasses to implement.</div><div class="long">Returns whether or not the server-side is currently connected.
242 Abstract method for subclasses to implement.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#isConnected" ext:member="#isConnected" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-on"></a><b><a href="source/Observable.html#method-Ext.util.Observable-on">on</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)
243     :
244                                         void<div class="mdesc"><div class="short">Appends an event handler to this object (shorthand for addListener.)</div><div class="long">Appends an event handler to this object (shorthand for <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a>.)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event to listen for</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
245 <b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#on" ext:member="#on" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-purgeListeners"></a><b><a href="source/Observable.html#method-Ext.util.Observable-purgeListeners">purgeListeners</a></b>()
246     :
247                                         void<div class="mdesc"><div class="short">Removes all listeners for this object</div><div class="long">Removes all listeners for this object<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#purgeListeners" ext:member="#purgeListeners" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-relayEvents"></a><b><a href="source/Observable-more.html#method-Ext.util.Observable-relayEvents">relayEvents</a></b>(&nbsp;<code>Object&nbsp;o</code>,&nbsp;<code>Array&nbsp;events</code>&nbsp;)
248     :
249                                         void<div class="mdesc"><div class="short">Relays selected events from the specified Observable as if the events were fired by this.</div><div class="long">Relays selected events from the specified Observable as if the events were fired by <tt><b>this</b></tt>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object<div class="sub-desc">The Observable whose events this object is to relay.</div></li><li><code>events</code> : Array<div class="sub-desc">Array of event names to relay.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#relayEvents" ext:member="#relayEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-removeListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-removeListener">removeListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
250     :
251                                         void<div class="mdesc"><div class="short">Removes an event handler.</div><div class="long">Removes an event handler.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event the handler was associated with.</div></li><li><code>handler</code> : Function<div class="sub-desc">The handler to remove. <b>This must be a reference to the function passed into the <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> call.</b></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope originally specified for the handler.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#removeListener" ext:member="#removeListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-resumeEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-resumeEvents">resumeEvents</a></b>()
252     :
253                                         void<div class="mdesc"><div class="short">Resume firing events. (see suspendEvents)
254 If events were suspended using the queueSuspended parameter, then all
255 event...</div><div class="long">Resume firing events. (see <a href="output/Ext.util.Observable.html#Ext.util.Observable-suspendEvents" ext:member="suspendEvents" ext:cls="Ext.util.Observable">suspendEvents</a>)
256 If events were suspended using the <tt><b>queueSuspended</b></tt> parameter, then all
257 events fired during event suspension will be sent to any listeners now.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#resumeEvents" ext:member="#resumeEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-suspendEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-suspendEvents">suspendEvents</a></b>(&nbsp;<code>Boolean&nbsp;queueSuspended</code>&nbsp;)
258     :
259                                         void<div class="mdesc"><div class="short">Suspend the firing of all events. (see resumeEvents)</div><div class="long">Suspend the firing of all events. (see <a href="output/Ext.util.Observable.html#Ext.util.Observable-resumeEvents" ext:member="resumeEvents" ext:cls="Ext.util.Observable">resumeEvents</a>)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>queueSuspended</code> : Boolean<div class="sub-desc">Pass as true to queue up suspended events to be fired
260 after the <a href="output/Ext.util.Observable.html#Ext.util.Observable-resumeEvents" ext:member="resumeEvents" ext:cls="Ext.util.Observable">resumeEvents</a> call instead of discarding all suspended events;</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#suspendEvents" ext:member="#suspendEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-un"></a><b><a href="source/Observable.html#method-Ext.util.Observable-un">un</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)
261     :
262                                         void<div class="mdesc"><div class="short">Removes an event handler (shorthand for removeListener.)</div><div class="long">Removes an event handler (shorthand for <a href="output/Ext.util.Observable.html#Ext.util.Observable-removeListener" ext:member="removeListener" ext:cls="Ext.util.Observable">removeListener</a>.)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event the handler was associated with.</div></li><li><code>handler</code> : Function<div class="sub-desc">The handler to remove. <b>This must be a reference to the function passed into the <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> call.</b></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope originally specified for the handler.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#un" ext:member="#un" ext:cls="Ext.util.Observable">Observable</a></td></tr></tbody></table><a id="Ext.direct.RemotingProvider-events"></a><h2>Public Events</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Event</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-beforecall"></a><b><a href="source/RemotingProvider.html#event-Ext.direct.RemotingProvider-beforecall">beforecall</a></b> :
263                                       (&nbsp;<code>Ext.direct.RemotingProvider&nbsp;provider</code>,&nbsp;<code>Ext.Direct.Transaction&nbsp;transaction</code>,&nbsp;<code>Object&nbsp;meta</code>&nbsp;)
264     <div class="mdesc"><div class="short">Fires immediately before the client-side sends off the RPC call.
265 By returning false from an event handler you can pre...</div><div class="long">Fires immediately before the client-side sends off the RPC call.
266 By returning false from an event handler you can prevent the call from
267 executing.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>provider</code> : Ext.direct.RemotingProvider<div class="sub-desc"></div></li><li><code>transaction</code> : Ext.Direct.Transaction<div class="sub-desc"></div></li><li><code>meta</code> : Object<div class="sub-desc">The meta data</div></li></ul></div></div></div></td><td class="msource">RemotingProvider</td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.RemotingProvider-call"></a><b><a href="source/RemotingProvider.html#event-Ext.direct.RemotingProvider-call">call</a></b> :
268                                       (&nbsp;<code>Ext.direct.RemotingProvider&nbsp;provider</code>,&nbsp;<code>Ext.Direct.Transaction&nbsp;transaction</code>,&nbsp;<code>Object&nbsp;meta</code>&nbsp;)
269     <div class="mdesc"><div class="short">Fires immediately after the request to the server-side is sent. This does
270 NOT fire after the response has come back f...</div><div class="long">Fires immediately after the request to the server-side is sent. This does
271 NOT fire after the response has come back from the call.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>provider</code> : Ext.direct.RemotingProvider<div class="sub-desc"></div></li><li><code>transaction</code> : Ext.Direct.Transaction<div class="sub-desc"></div></li><li><code>meta</code> : Object<div class="sub-desc">The meta data</div></li></ul></div></div></div></td><td class="msource">RemotingProvider</td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-connect"></a><b><a href="source/Provider.html#event-Ext.direct.Provider-connect">connect</a></b> :
272                                       (&nbsp;<code>Ext.direct.Provider&nbsp;provider</code>&nbsp;)
273     <div class="mdesc"><div class="short">Fires when the Provider connects to the server-side</div><div class="long">Fires when the Provider connects to the server-side<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>provider</code> : Ext.direct.Provider<div class="sub-desc">The <a href="output/Ext.direct.Provider.html" ext:cls="Ext.direct.Provider">Provider</a>.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#connect" ext:member="#connect" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-data"></a><b><a href="source/Provider.html#event-Ext.direct.Provider-data">data</a></b> :
274                                       (&nbsp;<code>Ext.direct.Provider&nbsp;provider</code>,&nbsp;<code>event&nbsp;e</code>&nbsp;)
275     <div class="mdesc"><div class="short">Fires when the Provider receives data from the server-side</div><div class="long">Fires when the Provider receives data from the server-side<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>provider</code> : Ext.direct.Provider<div class="sub-desc">The <a href="output/Ext.direct.Provider.html" ext:cls="Ext.direct.Provider">Provider</a>.</div></li><li><code>e</code> : event<div class="sub-desc">The <a href="output/Ext.Direct.html#Ext.Direct-eventTypes" ext:member="eventTypes" ext:cls="Ext.Direct">Ext.Direct.Event type</a> that occurred.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#data" ext:member="#data" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-disconnect"></a><b><a href="source/Provider.html#event-Ext.direct.Provider-disconnect">disconnect</a></b> :
276                                       (&nbsp;<code>Ext.direct.Provider&nbsp;provider</code>&nbsp;)
277     <div class="mdesc"><div class="short">Fires when the Provider disconnects from the server-side</div><div class="long">Fires when the Provider disconnects from the server-side<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>provider</code> : Ext.direct.Provider<div class="sub-desc">The <a href="output/Ext.direct.Provider.html" ext:cls="Ext.direct.Provider">Provider</a>.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#disconnect" ext:member="#disconnect" ext:cls="Ext.direct.Provider">Provider</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.direct.Provider-exception"></a><b><a href="source/Provider.html#event-Ext.direct.Provider-exception">exception</a></b> :
278                                       ()
279     <div class="mdesc"><div class="short">Fires when the Provider receives an exception from the server-side</div><div class="long">Fires when the Provider receives an exception from the server-side<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li>None.</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.direct.Provider.html#exception" ext:member="#exception" ext:cls="Ext.direct.Provider">Provider</a></td></tr></tbody></table></div>