/**
* This class manages event dispatching for Controllers. The details of connecting classes
* to this dispatching mechanism is delegated to {@link Ext.app.EventDomain} instances.
*
* @private
*/
Ext.define('Ext.app.EventBus', {
singleton: true,
requires: [
'Ext.app.domain.Component'
],
constructor: function() {
var me = this,
domains = Ext.app.EventDomain.instances;
me.callParent();
me.domains = domains;
me.bus = domains.component.bus; // compat
},
/**
* Adds a set of component event listeners for a controller. To work with event domains
* other than component, see {@link #listen}.
*
* @param {Object} selectors Config object containing selectors and listeners.
* @param {Ext.app.BaseController} controller The listening controller instance.
*/
control: function(selectors, controller) {
return this.domains.component.listen(selectors, controller);
},
/**
* Adds a set of event domain listeners for a controller. For more information on event
* domains, see {@link Ext.app.EventDomain} and {@link Ext.app.BaseController}.
*
* @param {Object} to Config object containing domains, selectors and listeners.
* @param {Ext.app.BaseController} controller The listening controller instance.
*/
listen: function(to, controller) {
var domains = this.domains,
domain;
for (domain in to) {
if (to.hasOwnProperty(domain)) {
domains[domain].listen(to[domain], controller);
}
}
},
/**
* Removes all of a controller's attached listeners.
*
* @param {String/Ext.app.BaseController} controllerId The id or the controller instance.
*/
unlisten: function(controllerId) {
var domains = Ext.app.EventDomain.instances,
domain;
for (domain in domains) {
domains[domain].unlisten(controllerId);
}
}
});