from __pyjamas__ import JS
class EventDelegate:
"""
Create the equivalent of a bound method. This also prepends extra
args, if any, to the called method's argument list when it calls it.
Pass the method name you want to implement (javascript doesn't
support callables).
@type args: list
@param args: If given, the arguments will be prepended to the
arguments passed to the event callback
"""
def __init__(self, eventMethodName, obj, method, *args):
self.obj = obj
self.method = method
self.args = args
JS("this[eventMethodName] = this.onEvent;")
def onEvent(self, *args):
self.method.apply(self.obj, self.args.l.concat(args.l))
|