extend Ext.util.Observable rather than reinventing

This commit is contained in:
Damien Churchill 2009-04-21 20:27:25 +00:00
parent 1be29dc319
commit 1f212b8a38
1 changed files with 17 additions and 59 deletions

View File

@ -18,66 +18,24 @@
* The Free Software Foundation, Inc., * The Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor * 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301, USA. * Boston, MA 02110-1301, USA.
** *
* @class Deluge.Events * @class Deluge.Events
* <p>Class for holding global events that occur within the UI.</p> * <p>Class for holding global events that occur within the UI.</p>
* @singleton * @singleton
*/ */
Deluge.Events = {
// private (function() {
__events: {}, Events = Ext.extend(Ext.util.Observable, {
constructor: function() {
Events.superclass.constructor.call(this);
},
/** addListener: function(eventName, fn, scope, o) {
* Fires an event, calling any listening event handlers and passing the this.addEvents(eventName);
* given arguments. Events.superclass.addListener.call(this, eventName, fn, scope, o);
* @param {String} name The name of the event to call. }
* @param eventArg1 (optional) });
* @param eventArg2 (optional)... Events.prototype.on = Events.prototype.addListener
*/ Events.prototype.fire = Events.prototype.fireEvent
fire: function() { Deluge.Events = new Events();
var args = []; })();
Ext.each(arguments, function(arg) {
args.push(arg);
});
var eventName = args.shift();
if (!this.__events[eventName]) return;
var eventArgs = arguments;
Ext.each(this.__events[eventName], function(cb) {
try {
cb.fn.apply(cb.scope || this, eventArgs);
} catch (e) {
alert(e);
}
});
},
/**
* Attachs an event listener.
*
*/
on: function(eventName, fn, scope) {
var e = this.__events[eventName] || new Array();
e.push({
'fn': fn,
'scope': scope
});
this.__events[eventName] = e;
},
/**
* Removes an event listener.
*/
removeListener: function(eventName, fn) {
if (!this.__events[eventName]) return;
this.__events[eventName].remove(fn);
},
/**
* Alias to removeListener
*
*/
un: this.removeListener
};