Выявление нестера в GWTP при доступе к первой странице - PullRequest
1 голос
/ 09 августа 2011

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

Я пытаюсь использовать функцию вложенного докладчика.Но у меня есть сомнения, если я правильно понимаю его намерение ...

Итак, мое приложение должно иметь несколько списков элементов в 2 видах фреймов.Считайте их папками и файлами.

Я разработал MainPage представление и презентатор, в нем всего несколько панелей макета.Я хотел бы реализовать свои списки элементов (представленных в виде пользовательских виджетов) в качестве отдельных докладчиков.Например, один, если они называются ItemsListPresenter.

Я создал слот в MainPagePresenter, реализовал метод ItemsListPresenter.revealInParent() для вставки докладчика в этот слот.

Но как мне открыть ItemsListPresenter?Он onBind() даже не вызывается.

Я знаю, что для этого мне нужно вызвать метод PlaceManager.Мой вопрос заключается в том, как этот вызов должен быть выполнен, чтобы соответствовать передовой практике.

Было бы нормально, если бы PlaceManager вставили в мой MainPagePresenter и вызвали его метод непосредственно в onBind() методе?

Заранее спасибо.

1 Ответ

3 голосов
/ 10 августа 2011

Вы также должны реализовать метод setInSlot () вашего MainPageView, например:

@Override
public void setInSlot(Object slot, Widget content) {
    if (slot == MainPagePresenter.TYPE_SetMainContent) {
       mainContentPanel.clear();
       if (content != null) {
          mainContentPanel.add(content);
       }

    } else {
      super.setInSlot(slot, content);
    }
}

где MainPagePresenter.TYPE_SetMainContent - это ваш слот контента, а mainContentPanel - это панель MainView, в которой вы хотите показать вложенный презентатор. Также ваш главный докладчик не должен быть местом, только ваши вложенные докладчики являются местами.

Вы можете использовать методы в PlaceManager для программного переключения отображаемого в данный момент вложенного докладчика (вы можете отображать только один за раз). Вы можете использовать джин, чтобы добавить PlaceManager туда, где он вам нужен. Или вы можете переключаться с помощью гиперссылок в меню, как это:

<g:InlineHyperlink targetHistoryToken="{nameTokens.getFistItemsListPage}">
     First items list
</g:InlineHyperlink>
<g:InlineHyperlink targetHistoryToken="{nameTokens.getSecondItemsListPage}">
     Second items list
</g:InlineHyperlink>

Если вы хотите отобразить несколько подчиненных одновременно, вы должны использовать виджеты докладчиков вместо вложенных докладчиков.

...