4 * @copy Copyright (c) Mbedthis Software LLC, 2005-2006. All Rights Reserved.
7 * listener = new System.Listener();
8 * listener.onClick = function() {
11 * eventTarget.addListener(eventName, listener);
13 * listener = new System.Listener(obj, method);
14 * eventTarget.addListener(eventName, listener);
17 * eventTarget.fire(eventName, new System.Event("My Event"));
20 /******************************************************************************/
30 /* MOB -- constructor should take a type */
39 /* MOB -- should not be needed */
47 function Listener(obj, method)
49 if (arguments.length >= 1) {
54 if (arguments.length == 2) {
57 this.method = "onEvent";
61 /* MOB -- should not be needed */
62 Listener = System.Listener;
66 * The Event target class
68 class System.EventTarget
71 var events; /* Hash of a event names */
73 function EventTarget()
75 events = new Object();
79 function addListener(eventName, listener)
81 var listeners = events[eventName];
82 if (listeners == undefined) {
83 listeners = events[eventName] = new Array();
85 if (arguments.length == 2) {
86 var method = eventName;
89 for (var i = 0; i < listeners.length; i++) {
95 listeners[listeners.length] = listener;
98 function removeListener(eventName, listener)
100 var listeners = events[eventName];
102 if (listeners == undefined) {
106 for (var i = 0; i < listeners.length; i++) {
107 var l = listeners[i];
109 // MOB -- want listeners.splice here
110 // listeners.splice(i, 1);
111 for (var j = i; j < (listeners.length - 1); j++) {
112 listeners[j] = listeners[j + 1];
114 delete listeners[listeners.length - 1];
115 i = listeners.length;
120 function fire(eventName, event)
122 var listeners = events[eventName];
124 if (listeners == undefined) {
125 // println("Event.fire(): unknown eventName " + eventName);
129 for (var i = listeners.length - 1; i >= 0; i--) {
130 var listener = listeners[i];
131 var method = listener.obj[listener.method];
132 if (method == undefined) {
133 throw new EvalError("Undefined method: " + listener.method);
135 listener.obj[listener.method](listener, event);
140 /* MOB -- should not be needed */
141 EventTarget = System.EventTarget;