Как использовать EventBus предка, если я расширяю Widget в GWT? - PullRequest
1 голос
/ 12 декабря 2011

Я расширяю ScrollPanel и хочу обработать свои собственные события с помощью этого нового виджета.

Я создал свой собственный HasMyHandlers интерфейс двумя способами fireEvent(MyEvent event) и HandlerRegistration addMyHandler(MyHandler handler).

Сначала я создал приватный член SimpleEventBus eventBus, но потом подумал, что у класса предка уже должна быть собственная копия.

Можно ли использовать шину событий предка, то есть зарегистрировать обработчики внутри нее и запускать их в соответствии с ней?

1 Ответ

3 голосов
/ 12 декабря 2011

Да, это возможно. Стандартный способ сделать это в реализации HandlerRegistration addMyHandler(MyHandler handler):

public class MyWidget extends Widget implements HasMyHandlers {

  @Override
  public HandlerRegistration addMyHandler(MyHandler handler) { 
    return addHandler(handler, MyEvent.getType());
  }

  // Other methods
}

Метод Widget.addHandler(...) предоставляет механизм для привязки пользовательских обработчиков событий к HandlerManager виджета.

Чтобы запустить ваше событие для всех зарегистрированных обработчиков, вы используете метод Widget.fireEvent(...). Итак, чтобы запустить ваше мероприятие, вы можете сделать:

fireEvent(new MyEvent(yourEventData));

Стоит отметить, что ваше мероприятие должно также расширить класс GwtEvent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...