public Object call(Context ctx, Scriptable scope,
Scriptable thisObj, Object[] args)
throws JavaScriptException {
if (args[1] instanceof Function) {
if (this.get(NAME, this).equals(ADD_NAME)) {
EventListener evtListener =
new FunctionEventListener((Function)args[1]);
if (listenerMap == null)
listenerMap = new HashMap(2);
listenerMap.put(args[1], evtListener);
// we need to marshall args
Class[] paramTypes = { String.class, Function.class,
Boolean.TYPE };
for (int i = 0; i < args.length; i++)
args[i] = NativeJavaObject.coerceType(paramTypes[i],
args[i]);
((EventTarget)unwrap()).
addEventListener((String)args[0],
evtListener,
((Boolean)args[2]).booleanValue());
return Undefined.instance;
} else {
if (listenerMap != null) {
// we need to marshall args
Class[] paramTypes = { String.class, Function.class,
Boolean.TYPE };
for (int i = 0; i < args.length; i++)
args[i] =
NativeJavaObject.coerceType(paramTypes[i],
args[i]);
((EventTarget)unwrap()).
removeEventListener((String)args[0],
(EventListener)listenerMap.
remove(args[1]),
((Boolean)args[2]).
booleanValue());
}
return Undefined.instance;
}
} else {
if (args[1] instanceof org.mozilla.javascript.NativeObject) {
if (this.get(NAME, this).equals(ADD_NAME)) {
EventListener evtListener =
new HandleEventListener((Scriptable)args[1]);
if (listenerMap == null)
listenerMap = new HashMap(2);
listenerMap.put(args[1], evtListener);
// we need to marshall args