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

Reply via email to