У меня есть слоты содержания в моем mainpresenter, как я могу добавить, когда приложение загружается, помещать домашний презентатор в один слот и слот меню в другой?
или невозможно?
заблаговременно.
У меня есть слоты содержания в моем mainpresenter, как я могу добавить, когда приложение загружается, помещать домашний презентатор в один слот и слот меню в другой?
или невозможно?
заблаговременно.
Да, вы можете! В следующем примере кода я предполагаю, что ваш 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);
}
}
Для пользователей GWTP 1.5+ обратите внимание, что в слоты появилось много новых изменений и раскрытия докладчиков. Теперь рассматриваемый случай может быть выполнен с использованием NestedSlot для содержимого страницы и PermanentSlot для меню, которое вы хотите отображать на всех ваших страницах.
К счастью, эти изменения хорошо документированы. См. документацию в формате GWTP для объяснения новых типов слотов с примерами о том, как их использовать.