4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>The source code</title>
6 <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
7 <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
8 <style type="text/css">
9 .highlight { display: block; background-color: #ddd; }
11 <script type="text/javascript">
12 function highlight() {
13 document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
17 <body onload="prettyPrint(); highlight();">
18 <pre class="prettyprint lang-js"><span id='Ext-app-EventBus'>/**
19 </span> * @class Ext.app.EventBus
22 Ext.define('Ext.app.EventBus', {
27 observable: 'Ext.util.Observable'
30 constructor: function() {
31 this.mixins.observable.constructor.call(this);
36 Ext.override(Ext.Component, {
37 fireEvent: function(ev) {
38 if (Ext.util.Observable.prototype.fireEvent.apply(this, arguments) !== false) {
39 return me.dispatch.call(me, ev, this, arguments);
46 dispatch: function(ev, target, args) {
49 selector, controllers, id, events, event, i, ln;
52 // Loop over all the selectors that are bound to this event
53 for (selector in selectors) {
54 // Check if the target matches the selector
55 if (target.is(selector)) {
56 // Loop over all the controllers that are bound to this selector
57 controllers = selectors[selector];
58 for (id in controllers) {
59 // Loop over all the events that are bound to this selector on this controller
60 events = controllers[id];
61 for (i = 0, ln = events.length; i < ln; i++) {
64 if (event.fire.apply(event, Array.prototype.slice.call(args, 1)) === false) {
74 control: function(selectors, listeners, controller) {
78 if (Ext.isString(selectors)) {
81 selectors[selector] = listeners;
82 this.control(selectors, null, controller);
86 Ext.Object.each(selectors, function(selector, listeners) {
87 Ext.Object.each(listeners, function(ev, listener) {
90 event = Ext.create('Ext.util.Event', controller, ev);
92 // Normalize the listener
93 if (Ext.isObject(listener)) {
95 listener = options.fn;
96 scope = options.scope || controller;
101 event.addListener(listener, scope, options);
103 // Create the bus tree if it is not there yet
104 bus[ev] = bus[ev] || {};
105 bus[ev][selector] = bus[ev][selector] || {};
106 bus[ev][selector][controller.id] = bus[ev][selector][controller.id] || [];
108 // Push our listener in our bus
109 bus[ev][selector][controller.id].push(event);