Oops... sent too soon.
so that you might have
abstract TypeBasedEventHandler<T> implements IEventHandler<T> {
private Class<? extends T> payLoadClass;
TypeBasedEventHandler(Class<? extends T> payLoadClass) {
this.payLoadClass = payLoadClass;
}
public boolean canHandleEvent(IEvent<?> event) {
return true if payload is of type T
}
}
and then
Component#addEventListener(IEventHandler<T> listener
)
ad component will check for "passing" handlers and deliver events tho then.
And then use it as
addListener(new TypeBasedEventHandler<>(MyPayLoad.class) {
public boolean handleEvent(IEvent<MyPayLoad> event) {
}
});
but this might make Component object too heavy.. Isn't it?
Are there any plans to rework events in any way to make then generic
friendly?
On Thu, May 30, 2013 at 11:07 AM, Ernesto Reinaldo Barreiro <
[email protected]> wrote:
> Hi,
>
> I'm starting to use events a lot on my applications... and all the time I
> have to do something like.
>
> @Override
> public void onEvent(IEvent<?> event) {
> if( event.getPayload() instanceof CreateEditTaskPanel.TaskCreatedEvent){
> CreateEditTaskPanel.TaskCreatedEvent message =
> (CreateEditTaskPanel.TaskCreatedEvent) event.getPayload();
> if( tasksViewParent.isVisible() ){
> message.getTarget().add( tasksViewParent );
> }
> }
> }
>
> which is not really nice. I was thinking about something like.
>
> interface IEventHandler<T> {
>
> public boolean canHandleEvent(IEvent<?> event);
>
> public boolean handleEvent(IEvent<?> event);
>
> }
>
> so that you might have
>
> TypeBasedEventHandler<T> implements IEventHandler<T> {
>
>
> TypeBasedEventHandler(Class<? extends T> payLoadClass)
> }
>
> --
> Regards - Ernesto Reinaldo Barreiro
>
--
Regards - Ernesto Reinaldo Barreiro