this.interpreter = interpreter;
}
public Object call(Context ctx, Scriptable scope,
Scriptable thisObj, Object[] args) {
NativeJavaObject njo = (NativeJavaObject)thisObj;
if (args[1] instanceof Function) {
EventListener evtListener = null;
SoftReference sr = (SoftReference)listenerMap.get(args[1]);
if (sr != null)
evtListener = (EventListener)sr.get();
if (evtListener == null) {
evtListener = new FunctionEventListener
((Function)args[1], interpreter);
listenerMap.put(args[1], new SoftReference(evtListener));
}
// we need to marshall args
Class[] paramTypes = { String.class, Function.class,
Boolean.TYPE };
for (int i = 0; i < args.length; i++)
args[i] = Context.jsToJava(args[i], paramTypes[i]);
((EventTarget)njo.unwrap()).addEventListener
((String)args[0], evtListener,
((Boolean)args[2]).booleanValue());
return Undefined.instance;
}
if (args[1] instanceof NativeObject) {
EventListener evtListener = null;
SoftReference sr = (SoftReference)listenerMap.get(args[1]);
if (sr != null)
evtListener = (EventListener)sr.get();
if (evtListener == null) {
evtListener = new HandleEventListener((Scriptable)args[1],
interpreter);
listenerMap.put(args[1], new SoftReference(evtListener));
}
// we need to marshall args
Class[] paramTypes = { String.class, Scriptable.class,
Boolean.TYPE };
for (int i = 0; i < args.length; i++)
args[i] = Context.jsToJava(args[i], paramTypes[i]);
((EventTarget)njo.unwrap()).addEventListener
((String)args[0], evtListener,
((Boolean)args[2]).booleanValue());
return Undefined.instance;
}
return delegate.call(ctx, scope, thisObj, args);