EventHandling в GWT с LayoutPanels - PullRequest
2 голосов
/ 13 июля 2010

У меня есть несколько вопросов относительно GWT (2.1) с MVP и событиями.

Получил DockLayoutPanel с некоторыми компонентами.Компонент Tree на западе и SimplePanel в центре.У каждого компонента есть презентатор и представление.Проблема в том, что я хочу обработать события компонентов в их классе презентатора, но теперь они могут быть перехвачены только в контейнере, который является DockLayoutPanelPresenter.Я хочу обработать события дерева в TreePresenter.Я думаю, что TreePresenter должен обрабатывать свои события SelectedItem, и он может поместить его в шину событий, чтобы мои другие компоненты могли реагировать на него.

Кто-нибудь еще сталкивался с этим?Размещен в списке групп GWT, но не получил ответа.Я думаю, что это важная тема для разделения компонентов.

1 Ответ

0 голосов
/ 28 мая 2011

В этом случае, когда в разных регионах страницы есть докладчик, вы можете использовать подход, предложенный Дэвидом Чендлером из команды GWT:

http://groups.google.com/group/google-web-toolkit/browse_thread/thread/2812e1b15a2a98a6/8c82d629b7a48e56?lnk=gst&q=EastActivityMapper#8c82d629b7a48e56

Вам следует прочитатьпост, но в итоге вы бы сделали что-то вроде этого:

WestActivityMapper westActivityMapper = new WestActivityMapper(); 
WestActivityManager westActivityManager = new WestActivityManager(westActivityMapper, eventBus); 
westActivityManager.setDisplay(westPanel); 

EastActivityMapper EastActivityMapper = new EastActivityMapper(); 
EastActivityManager eastActivityManager = new  EastActivityManager(eastActivityMapper, eventBus); 
EastActivityManager.setDisplay(eastPanel);

dockLayoutPanel.addWest(westWidget, 50); 
dockLayoutPanel.addEast(eastWidget, 50); 
RootLayoutPanel.get().add(dockLayoutPanel); 

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

Мы используем этот подход для отображения списка элементов на нашей западной закрепленной панели (не дерева, но достаточно близко), которая затем обновляет то, что отображается в теле нашего приложения.Когда пользователь выбирает элемент из списка, мы запускаем новое событие Place и включаем идентификатор элемента списка в качестве Place Token, чтобы пользователь мог использовать кнопку возврата.Однако вы также можете использовать EventBus, как вы указали.

...