Снижение детализации пользовательских виджетов GWT - PullRequest
5 голосов
/ 31 мая 2009

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 31 мая 2009

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

2 голосов
/ 12 июня 2009

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

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

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

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