Broadcaster.js

Summary

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) }
	    }
	  });
	}
};


Documentation generated by JSDoc on Mon Apr 16 11:23:41 2007