Author: damoxc

Revision: 5119

Log:
        ext based Deluge.Events

Diff:
Added: trunk/deluge/ui/web/js/Deluge.Events.js
===================================================================
--- trunk/deluge/ui/web/js/Deluge.Events.js                             (rev 0)
+++ trunk/deluge/ui/web/js/Deluge.Events.js     2009-04-21 20:15:49 UTC (rev 
5119)
@@ -0,0 +1,83 @@
+/**
+ *
+ * @script Deluge.Events.js
+ *
+ * (C) Damien Churchill 2009 <[email protected]>
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, write to:
+ *             The Free Software Foundation, Inc.,
+ *             51 Franklin Street, Fifth Floor
+ *             Boston, MA  02110-1301, USA.
+ **
+ * @class Deluge.Events
+ * <p>Class for holding global events that occur within the UI.</p>
+ * @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



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to