Вложенные презентаторы с GWTP - PullRequest
11 голосов
/ 28 сентября 2011

В моем главном представителе есть слоты с контентом, как я могу поставить, когда при загрузке приложения, домашний докладчик помещается в один слот, а слот меню - в другой?

или невозможно?

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

Ответы [ 2 ]

16 голосов
/ 28 сентября 2011

Да, вы можете! В следующем примере кода я предполагаю, что ваш HomePresenter является местом и расширяет Presenter, а ваш MenuPresenter расширяет PresenterWidget.
В вашем MainPresenter:

@ContentSlot public static final Type<RevealContentHandler<?>> MAIN_SLOT = new Type<RevealContentHandler<?>>();  
@ContentSlot public static final Type<RevealContentHandler<?>> MENU_SLOT = new Type<RevealContentHandler<?>>();

@Override
protected void onReveal() {
    super.onReveal();
    setInSlot(MENU_SLOT, menuPresenter);
}

В вашем HomePresenter:

@Override
protected void revealInParent() {
    RevealContentEvent.fire(this, MainPresenter.MAIN_SLOT, this);
}

Затем в MainView:

@UiField Panel mainContainer;
@UiField Panel menuContainer;

@Override
public void setInSlot(Object slot, Widget content) {
    if (slot == MainPresenter.MAIN_SLOT) {
        mainContainer.clear();
        mainContainer.add(content);
    } else if (slot == MainPresenter.MENU_SLOT) {
        menuContainer.clear();
        menuContainer.add(content);
    } else {
        super.setInSlot(slot, content);
    }
}
1 голос
/ 25 февраля 2016

Для пользователей GWTP 1.5+ обратите внимание на то, что в слоты было внесено много новых изменений и раскрыты докладчики.Теперь рассматриваемый случай может быть выполнен с использованием NestedSlot для содержимого страницы и PermanentSlot для меню, которое вы хотите отобразить на всех своих страницах.

К счастью, эти изменения хорошо документированы.См. документация по слотам GWTP для объяснения новых типов слотов с примерами их использования.

...