diff --git a/deluge/ui/web/js/Deluge.Events.js b/deluge/ui/web/js/Deluge.Events.js index f83cd7ecf..1b220eb8d 100644 --- a/deluge/ui/web/js/Deluge.Events.js +++ b/deluge/ui/web/js/Deluge.Events.js @@ -18,66 +18,24 @@ * The Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301, USA. - ** + * * @class Deluge.Events *
Class for holding global events that occur within the UI.
* @singleton */ -Deluge.Events = { - - // private - __events: {}, - - /** - * Fires an event, calling any listening event handlers and passing the - * given arguments. - * @param {String} name The name of the event to call. - * @param eventArg1 (optional) - * @param eventArg2 (optional)... - */ - fire: function() { - 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 -}; \ No newline at end of file + +(function() { + Events = Ext.extend(Ext.util.Observable, { + constructor: function() { + Events.superclass.constructor.call(this); + }, + + addListener: function(eventName, fn, scope, o) { + this.addEvents(eventName); + Events.superclass.addListener.call(this, eventName, fn, scope, o); + } + }); + Events.prototype.on = Events.prototype.addListener + Events.prototype.fire = Events.prototype.fireEvent + Deluge.Events = new Events(); +})(); \ No newline at end of file