commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Henri Yandell <flame...@gmail.com>
Subject Re: [LANG] Suggestions For New Features
Date Tue, 11 Aug 2009 06:17:05 GMT
On Mon, Aug 10, 2009 at 11:09 PM, Henri Yandell<flamefew@gmail.com> wrote:
> On Sun, Aug 9, 2009 at 1:37 PM, Michael Wooten<mwooten.dev@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-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message