GWT - соединить два модуля через EventBus - PullRequest
1 голос
/ 13 июня 2011

Мы используем MVP с пользовательским EventBus для навигации по представлениям. Один из наших модулей GWT загружает электронную книгу в виде. У нас есть кнопка с именем «Развернуть», которая при нажатии загружает электронную книгу в расширенном режиме, тем самым скрывая верхний и нижний колонтитулы и т. Д.

Допустим, представление (UiBinder) с кнопкой «Развернуть» называется «ShowEbookView». После нажатия кнопки «Развернуть» ClickEvent захватывается и запускается на EventBus. Логика onExpand(final ExpandEvent expandEvent) записана в том же классе ShowExpandedMod.

Все в порядке, но у нас есть кнопка с именем «Всплывающее окно» в расширенном режиме, которая при нажатии должна открыть книгу на новой странице! Нам нужно абстрагировать класс «ShowExpandedMod», чтобы он мог работать с EbookId и использоваться на новой странице.

Мы создали новый модуль с классом EntryPoint, HTML-страницей и страницей UiBinder для этого нового всплывающего окна. Я не уверен, как теперь перейти к абстракции и использовать EventBus в разных модулях для загрузки одного и того же контента ... (с возможностью повторного использования курса)

Я объяснил в моих силах, но, возможно, не очень ясно! Пожалуйста, дайте мне знать, если вы хотите получить более подробную информацию.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

Когда вы открываете новое окно в браузере, вы в основном получаете новый экземпляр вашего приложения GWT.Вы не можете использовать EventBus в разных окнах браузера, т. Е. В разных экземплярах модуля GWT.

Что вы можете сделать:

  1. Добавить аргумент в URL-адрес страницы всплывающего окна.Это легко сделать с помощью «жетонов истории» (идентификаторов фрагментов), например http://yourdomain.com/popout.html#theIdOfTheDocument.Затем вы можете получить токен с помощью History.getToken()

  2. Использование DOM для связи между окнами браузера: window.open() в javascript открывает новое окно и возвращает ссылку на DOM нового окна.Затем вы можете получить доступ к свойствам и функциям нового окна.Это все javascript, для того, чтобы эта работа работала в GWT, вам нужно обернуть ее в JSNI.

1 голос
/ 04 марта 2012

Попробуйте и используйте MVP4G , в частности - взгляните на их многомодульную функцию (которая использует возможности разделения кода GWT).

Это должно сделатьтакие вещи, как множественные EventBus и межмодульные события, запускают намного проще.

...