|
||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||
Garmin.Broadcaster is for registering listeners and dispatching call-back metheds.
Version: 1.0
Author: Michael Bina michael.bina.at.garmin.com
| Class Summary | |
| Garmin.Broadcaster | Broadcaster Acts as an event broadcaster. |
/** * @fileoverview Garmin.Broadcaster is for registering listeners and dispatching call-back metheds. * * @author Michael Bina michael.bina.at.garmin.com * @version 1.0 */ /** * @class Broadcaster * Acts as an event broadcaster. Code is pretty much stolen from Ajax.Responders, * but doesn't need to extend Enumerable. * * To use, register an object, then dispatch methods. * var toBeAlerted = new AlertedDude(); * var broadcaster = new Broadcaster(); * * broadcaster.register(toBeAlerterd); * broadcaster.dispatch("alerting"); * * that will call toBeAlerted.alerting(); * if you pass an object w/ the dispatch call the object will be passed as well. * Most calls are implemented using JSON, with controller as the owning broadcaster * object. * so ... * broadcaster.dispatch("alerting", {message: "howdy", controller: this}); * toBeAlerted.alerting({message: 'howdy', controller: broadcaster}) * @constructor */ Garmin.Broadcaster = function(){}; //just here for jsdoc Garmin.Broadcaster = Class.create(); Garmin.Broadcaster.prototype = { initialize: function() { this.responders = new Array(); }, /** * Register * * @param {Object} responder * @member Broadcaster */ register: function(responderToAdd) { if (!this.responders.include(responderToAdd)) this.responders.push(responderToAdd); }, /** * Unregister * * @param {Object} responder * @member Broadcaster */ unregister: function(responderToRemove) { this.responders = this.responders.without(responderToRemove); }, /** * Dispatch * * @param {String} callback * @param {Object} json * @member Broadcaster */ dispatch: function(callback, json) { this.responders.each(function(responder) { if (responder[callback] && typeof responder[callback] == 'function') { try { responder[callback].apply(responder, [json]); } catch (e) { alert(e) } } }); } };
|
||||||||
| PREV NEXT | FRAMES NO FRAMES | |||||||