2009-05-31 2 views
5

Мой текущий процесс для пользовательских виджетов заключается в следующем:Сокращение GWT пользовательского виджета многословие

  1. Создать мой класс виджета - расширение Composite;
  2. Создайте интерфейс для этого виджета;
  3. Создайте интерфейс коллекции слушателей - частный внутренний класс для виджета;
  4. Создайте методы add/removeListener для виджета;
  5. Внутри виджета, огонь событий на слушателей.

Мои слушатели стреляют мелкозернистыми событиями, такими как onEntityDisplayRequested(Entity entity), поэтому я не могу использовать слушателей запаса.

Хотя это обеспечивает низкую связь для виджета и позволяет повторно использовать, это довольно многословие. Есть ли лучший способ обработки дизайна пользовательских виджетов?

ответ

3

Для каждого нового виджета вам не нужен отдельный интерфейс прослушивателя. Например. ClickListener используется различными классами виджетов. Очевидно, что для некоторых пользовательских виджетов потребуется новый тип прослушивателя, но это не должно быть автоматическим.

+0

Спасибо за ответ. Я использую эти слушатели для запуска пользовательских событий, например. onEntityDisplayRequested (Entity e), поэтому я не могу использовать слушателей запаса. –

+0

Лучшее - и только - ответ до сих пор. Победитель! –

2

Я думаю, что Java столкнулась с той же проблемой некоторое время назад, и решение состояло в том, чтобы иметь события PropertyChange. Они поставляются с - PropertyEvent, который содержит источник, имя свойства и старые + новые значения - PropertyChangeListener - свойствоChangeSupport, на которое вы можете делегировать событие, а также регистрировать и отменить регистрацию слушателей.

Вы теряете определенную специфичность (событие соответствует их имени в виде строки), но вы все равно можете запускать мелкомасштабные события и иметь поддержку внешнего класса.

Я не использовал это широко в GWT, поэтому я не могу комментировать аспекты эффективности.

Смежные вопросы