Я создаю приложение GWT с использованием шаблона MVP. У меня есть индексная страница, на которой используется DockLayoutPanel. У меня есть представление и ведущий для каждого раздела dockLayoutPanel (например, NorthView и NorthPresenter). У меня четыре кнопки на центральной панели (NorthBtn, EastBtn, WestBtn, SouthBtn). onClick любой из кнопок, которые пользовательский интерфейс должен изменить в соответствующем разделе dockLayoutPanel.
Класс точки входа:
@Override
public void onModuleLoad() {
RPCServiceAsync rpcService = GWT.create(RPCService.class);
HandlerManager eventBus = new HandlerManager(null);
AppController appViewer = new AppController(rpcService, eventBus);
appViewer.go(RootLayoutPanel.get());
}
Класс AppController имеет логику для управления историей и логики обработки событий. (Из статьи Google - чтобы обрабатывать логику, которая не является специфической для какого-либо докладчика и вместо этого находится на уровне приложения, мы представим компонент AppController.)
Например, onClick на EastBtn в центральной панели я добавляю новый токен истории, «восток», и вызывается метод onValueChange (). Создаются соответствующие презентатор и представление, скажем, EastView и EastPresenter:
- Как я могу обновить существующую панель EastPanel с помощью вновь созданной панели (поскольку у меня нет дескриптора старой панели)?
- Если пользователь добавил страницу в закладки после нажатия кнопки и повторно посетит страницу со ссылкой, отмеченной закладкой, поток достигнет метода onValueChange и создаст EastView и EastPanel. Но как можно воссоздать остальную часть страницы и обновить EastPanel?