// the 'callable' below defines a function type that takes two arguments
callable ClickEventHandler(sender as object)
class Button:
event Click as ClickEventHandler
def whatever():
Click(self) // triggers the event
button = Button()
button.Click += do: // subscribe closure to event
print "clicked"
button.Click += do: // subscribe another closure to the event
print "once more"
button.whatever()
Scroll to the end of the message after you have given it some though.
// callable ClickEventHandler(sender as object)
public interface ClickEventHandler extends Callable<object> {
void call(sender as object);
}
class Button {
public void whatever() {
triggerClick(this); // Click(self)
}
// begin 'Click as ClickEventHandler'
protected MulticastCallable<ClickEventHandler> _click;
public void addClickListener(ClickEventHandler handler) {
_click = MulticastCallable<ClickEventHandler>.add(_click, handler);
}
public void removeClickListener(ClickEventHandler handler) {
_click =
MulticastCallable<ClickEventHandler>.remove(_click, handler);
}
protected void triggerClick(Object sender) {
if (_click == null) return;
for (ClickEventHandler handler : _click) {
handler.call(sender);
}
}
// end 'Click as ClickEventHandler'
}
public class Module {
public static void main(String[] argv) {
Button button = new Button();
button.addClickListener(new ClickEventHandler() {
public void call(sender as object) {
System.out.println("clicked");
}
});
button.addClickListener(new ClickEventHandler() {
public void call(sender as object) {
System.out.println("once more");
}
});
button.whatever();
}
}
Thoughts?
--
bamboo
dramage
On Oct 27, 5:04 pm, "Rodrigo B. de Oliveira" <rodrigobam...@gmail.com>
wrote: