gwt-platform

Nested presenters with GWTP


I have content slots in my mainpresenter, how can i put, when app load, put the home presenter in one slot and the menu slot in the another ?

or isn't possible?

thanks in advance.


Solution

  • Yes you can ! In the following example code, I assume that your HomePresenter is a place and extends Presenter, and your MenuPresenter extends PresenterWidget.
    In your 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);
    }
    

    In your HomePresenter :

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

    Then in 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);
        }
    }