5.5.6 Custom Event Publishers - Reference Documentation
Authors: Andres Almiray
Version: 1.2.0
5.5.6 Custom Event Publishers
As the name implies application events are sent system wide. However there is an option to create localized event publishers. Griffon provides a @griffon.transform.EventPublisher AST transformation that you can apply to any class that wishes to be an event publisher.This AST transformation will inject the following methods to the annotated classes:- addEventListener(Object)
- addEventListener(String, Closure)
- addEventListener(String, RunnableWithArgs)
- removeEventListener(Object)
- removeEventListener(String, Closure)
- removeEventListener(String, RunnableWithArgs)
- publishEvent(String)
- publishEvent(String,List)
- publishEventOutsideUI(String)
- publishEventOutsideUI(String,List)
- publishEventAsync(String)
- publishEventAsync(String,List)
- isEventPublishingEnabled()
- setEventPublishingEnabled(boolean)
@griffon.transform.EventPublisher class Publisher { void doit(String name) { publishEvent('arg', [name]) } void doit() { publishEvent('empty') } }class Consumer { String value void onArg(String arg) { value = 'arg = ' + arg } void onEmpty() { value = 'empty' } }p = new Publisher() c = new Consumer() p.addEventListener(c) assert !c.value p.doit() assert c.value == 'empty' p.doit('Groovy') assert c.value == 'arg = Groovy'