嵌套的演示者使用GWTP

caa*_*os0 11 gwt-platform

我的mainpresenter中有内容插槽,如何在应用程序加载时将主播放器放在一个插槽中,将菜单插槽放在另一个插槽中?

或者不可能?

提前致谢.

Mik*_*zic 16

是的你可以 !在下面的示例代码中,我假设您的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);
}
Run Code Online (Sandbox Code Playgroud)

在您的HomePresenter中:

@Override
protected void revealInParent() {
    RevealContentEvent.fire(this, MainPresenter.MAIN_SLOT, this);
}
Run Code Online (Sandbox Code Playgroud)

然后在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);
    }
}
Run Code Online (Sandbox Code Playgroud)