/* This file is part of Ext JS 3.4 Copyright (c) 2011-2013 Sencha Inc Contact: http://www.sencha.com/contact GNU General Public License Usage This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you are unsure which license is appropriate for your use, please contact the sales department at http://www.sencha.com/contact. Build date: 2013-04-03 15:07:25 */ Ext.data.JsonP.Ext_Direct({"alternateClassNames":[],"aliases":{},"enum":null,"parentMixins":[],"tagname":"class","subclasses":[],"extends":"Ext.util.Observable","uses":[],"html":"
Hierarchy
Ext.util.ObservableExt.DirectFiles
Overview
\n\n\n\n\nExt.Direct aims to streamline communication between the client and server\nby providing a single interface that reduces the amount of common code\ntypically required to validate data and handle returned data packets\n(reading data, error conditions, etc).
\n\n\n\n\nThe Ext.direct namespace includes several classes for a closer integration\nwith the server-side. The Ext.data namespace also includes classes for working\nwith Ext.data.Stores which are backed by data from an Ext.Direct method.
\n\n\n\n\nSpecification
\n\n\n\n\nFor additional information consult the\nExt.Direct Specification.
\n\n\n\n\nProviders
\n\n\n\n\nExt.Direct uses a provider architecture, where one or more providers are\nused to transport data to and from the server. There are several providers\nthat exist in the core at the moment:
\n\n\nA provider does not need to be invoked directly, providers are added via\nExt.Direct.add.
\n\n\n\n\nRouter
\n\n\n\n\nExt.Direct utilizes a \"router\" on the server to direct requests from the client\nto the appropriate server-side method. Because the Ext.Direct API is completely\nplatform-agnostic, you could completely swap out a Java based server solution\nand replace it with one that uses C# without changing the client side JavaScript\nat all.
\n\n\n\n\nServer side events
\n\n\n\n\nCustom events from the server may be handled by the client by adding\nlisteners, for example:
\n\n\n{\"type\":\"event\",\"name\":\"message\",\"data\":\"Successfully polled at: 11:19:30 am\"}\n\n// add a handler for a 'message' event sent by the server\nExt.Direct.on('message', function(e){\n out.append(String.format('<p><i>{0}</i></p>', e.data));\n out.el.scrollTo('t', 100000, true);\n});\n
\n\n(optional)
A config object containing one or more event handlers to be added to this\nobject during initialization. This should be a valid listeners config object as specified in the\naddListener example for attaching multiple handlers at once.
\n\nDOM events from ExtJs Components
\n\n\nWhile some ExtJs Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this\n\n\n
is usually only done when extra value can be added. For example the DataView's\nclick
event passing the node clicked on. To access DOM\nevents directly from a Component's HTMLElement, listeners must be added to the Element after the Component\nhas been rendered. A plugin can simplify this step:
// Plugin is configured with a listeners config object.\n// The Component is appended to the argument list of all handler functions.\nExt.DomObserver = Ext.extend(Object, {\n constructor: function(config) {\n this.listeners = config.listeners ? config.listeners : config;\n },\n\n // Component passes itself into plugin's init method\n init: function(c) {\n var p, l = this.listeners;\n for (p in l) {\n if (Ext.isFunction(l[p])) {\n l[p] = this.createHandler(l[p], c);\n } else {\n l[p].fn = this.createHandler(l[p].fn, c);\n }\n }\n\n // Add the listeners to the Element immediately following the render call\n c.render = c.render.createSequence(function() {\n var e = c.getEl();\n if (e) {\n e.on(l);\n }\n });\n },\n\n createHandler: function(fn, c) {\n return function(e) {\n fn.call(this, e, c);\n };\n }\n});\n\nvar combo = new Ext.form.ComboBox({\n\n // Collapse combo when its element is clicked on\n plugins: [ new Ext.DomObserver({\n click: function(evt, comp) {\n comp.collapse();\n }\n })],\n store: myStore,\n typeAhead: true,\n mode: 'local',\n triggerAction: 'all'\n});\n
\n\n\n\nEach event type implements a getData() method. The default event types are:
\n\nFour types of possible exceptions which can occur:
\n\nDefaults to: {TRANSPORT: 'xhr', PARSE: 'parse', LOGIN: 'login', SERVER: 'exception'}
Adds the specified events to the list of events which this Observable may fire.
\nEither an object with event names as properties with a value of true
\nor the first event name string if multiple event names are being passed as separate parameters.
. Event name if multiple event names are being passed as separate parameters.\nUsage:
\n\nthis.addEvents('storeloaded', 'storecleared');\n
\n\nAppends an event handler to this object.
\nThe name of the event to listen for.
\nThe method the event invokes.
\nThe scope (this
reference) in which the handler function is executed.\nIf omitted, defaults to the object which fired the event.
An object containing handler configuration.\nproperties. This may contain any of the following properties:
this
reference) in which the handler function is executed.\nIf omitted, defaults to the object which fired the event.\nCombining Options
\nUsing the options argument, it is possible to combine different types of listeners:
\n
\nA delayed, one-time listener.\n
myDataView.on('click', this.onClick, this, {\nsingle: true,\ndelay: 100\n});
\n\nAttaching multiple handlers in 1 call
\nThe method also allows for a single argument to be passed which is a config object containing properties\nwhich specify multiple handlers.\n
\n
myGridPanel.on({\n'click' : {\n fn: this.onClick,\n scope: this,\n delay: 100\n},\n'mouseover' : {\n fn: this.onMouseOver,\n scope: this\n},\n'mouseout' : {\n fn: this.onMouseOut,\n scope: this\n}\n});
\n\nOr a shorthand syntax:
\n
myGridPanel.on({\n'click' : this.onClick,\n'mouseover' : this.onMouseOver,\n'mouseout' : this.onMouseOut,\n scope: this\n});
\n\nAdds an Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods.\nIf the provider is not already connected, it will auto-connect.
\n\nvar pollProv = new Ext.direct.PollingProvider({\n url: 'php/poll2.php'\n});\n\nExt.Direct.addProvider(\n {\n \"type\":\"remoting\", // create a Ext.direct.RemotingProvider\n \"url\":\"php\\/router.php\", // url to connect to the Ext.Direct server-side router.\n \"actions\":{ // each property within the actions object represents a Class\n \"TestAction\":[ // array of methods within each server side Class\n {\n \"name\":\"doEcho\", // name of method\n \"len\":1\n },{\n \"name\":\"multiply\",\n \"len\":1\n },{\n \"name\":\"doForm\",\n \"formHandler\":true, // handle form on server with Ext.Direct.Transaction\n \"len\":1\n }]\n },\n \"namespace\":\"myApplication\",// namespace to create the Remoting Provider in\n },{\n type: 'polling', // create a Ext.direct.PollingProvider\n url: 'php/poll.php'\n },\n pollProv // reference to previously created instance\n);\n
\n\nAccepts either an Array of Provider descriptions (an instance\nor config object for a Provider) or any number of Provider descriptions as arguments. Each\nProvider description instructs Ext.Direct how to create client-side stub methods.
\nEnables events fired by this Observable to bubble up an owner hierarchy by calling\nthis.getBubbleTarget()
if present. There is no implementation in the Observable base class.
This is commonly used by Ext.Components to bubble events to owner Containers. See Ext.Component.getBubbleTarget. The default\nimplementation in Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to\naccess the required target more quickly.
\n\n\nExample:
\n\n\nExt.override(Ext.form.Field, {\n // Add functionality to Field's initComponent to enable the change event to bubble\n initComponent : Ext.form.Field.prototype.initComponent.createSequence(function() {\n this.enableBubble('change');\n }),\n\n // We know that we want Field's events to bubble directly to the FormPanel.\n getBubbleTarget : function() {\n if (!this.formPanel) {\n this.formPanel = this.findParentByType('form');\n }\n return this.formPanel;\n }\n});\n\nvar myForm = new Ext.formPanel({\n title: 'User Details',\n items: [{\n ...\n }],\n listeners: {\n change: function() {\n // Title goes red if form has been modified.\n myForm.header.setStyle('color', 'red');\n }\n }\n});\n
\n\nFires the specified event with the passed parameters (minus the event name).
\n\n\nAn event may be set to bubble up an Observable parent hierarchy (See Ext.Component.getBubbleTarget)\nby calling enableBubble.
\n\nThe name of the event to fire.
\nVariable number of parameters are passed to handlers.
\nreturns false if any of the handlers return false otherwise it returns true.
\nRetrieve a provider by the\nid specified when the provider is\nadded.
\nUnique identifier assigned to the provider when calling addProvider
\nChecks to see if this object has any listeners for a specified event
\nThe name of the event to check for
\nTrue if the event is being listened for, else false
\nAppends an event handler to this object (shorthand for addListener.)
\nThe type of event to listen for
\nThe method the event invokes
\nThe scope (this
reference) in which the handler function is executed.\nIf omitted, defaults to the object which fired the event.
An object containing handler configuration.
\nRelays selected events from the specified Observable as if the events were fired by this.
\nThe Observable whose events this object is to relay.
\nArray of event names to relay.
\nRemoves an event handler.
\nThe type of event the handler was associated with.
\nThe handler to remove. This must be a reference to the function passed into the addListener call.
\nThe scope originally specified for the handler.
\nResume firing events. (see suspendEvents)\nIf events were suspended using the queueSuspended parameter, then all\nevents fired during event suspension will be sent to any listeners now.
\nSuspend the firing of all events. (see resumeEvents)
\nPass as true to queue up suspended events to be fired\nafter the resumeEvents call instead of discarding all suspended events;
\nRemoves an event handler (shorthand for removeListener.)
\nThe type of event the handler was associated with.
\nThe handler to remove. This must be a reference to the function passed into the addListener call.
\nThe scope originally specified for the handler.
\nFires after an event.
\nThe Ext.Direct.Event type that occurred.
\nThe Provider.
\n