On Mon, Aug 10, 2009 at 11:09 PM, Henri Yandell<flame...@gmail.com> wrote: > On Sun, Aug 9, 2009 at 1:37 PM, Michael Wooten<mwooten....@gmail.com> wrote: >> >> I would also like to propose some support be added to Lang for basic event >> handling. This would be based on the way that PropertyChangeSupport can be >> used to add and remove listeners and post events. >> >> Add interface EventSupport<L extends EventListener> >> >> - addListener(L listener) >> - The signature for the method that can add a listener of some subtype of >> EventListener >> - removeListener(L listener) >> - The signature for the method that can remove a listener of some subtype >> of EventListener >> >> >> Add class AbstractEventSupport implements EventSupport<L>, Iterable<L> >> >> - AbstractEventSupport(Object eventSource) >> - Constructs a new AbstractEventSupport object and associates it with the >> object that will be used as the source of all events (much like >> PropertyChangeSupport). >> - addListener(L) >> - An implementation that adds a listener to an internal collection. >> - removeListener(L) >> - An implementation that removes a listener from an internal collection. >> - iterator() >> - Returns an iterator over the attached listeners. >> - getSource() >> - Returns a reference to the source object of all events. >> >> >> The best way to describe this would be to demonstrate an example of how it >> can be used. >> >> public class ButtonPressedEventSupport extends >> AbstractEventSupport<ButtonPressedListener> { >> >> public ButtonPressedEventSupport(Object source) { super(source); } >> >> public void fireButtonPressed(Button button) { >> ButtonPressedEvent bpe = new ButtonPressedEvent(getSource(), >> button); >> for (ButtonPressedListener listener : this) >> { >> listener.buttonPressed(bpe); >> } >> } >> } >> >> public class MyWindow implements EventSupport<ButtonPressedListener> { >> private final ButtonPressedEventSupport buttonPressedEventSupport; >> >> public MyWindow { buttonPressedEventSupport = new >> ButtonPressedEventSupport(this); } >> >> public void addListener(ButtonPressedListener listener) { >> buttonPressedEventSupport.addListener(listener); } >> >> public void removeListener(ButtonPressedListener listener) { >> buttonPressedEventSupport.removeListener(listener); } >> >> ... >> >> private void onDetectButtonPressed(Button button) { >> buttonPressedEventSupport.fireButtonPressed(button); >> } >> } >> >> I haven't compiled the above code. It's just an example of how these classes >> could be used so that you're not constantly rewriting the code and >> interfaces for adding and removing listeners, and it provides a fairly easy >> method of creating methods to fire events. > > Worth a JIRA to solicit more feedback :) Seems good, in the 'this > doesn't exist?' way :)
This'll be why I like the idea I guess :) http://code.google.com/p/osjava/source/browse/trunk/genjava/gj-core/src/java/com/generationjava/lang/Notifier.java Hen --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org