2011-09-28 13 views
11

I miei spazi di contenuti sono nel mio mainpresenter, come posso inserire, quando l'app carica, mettere il presentatore di casa in uno slot e lo slot di menu nell'altro?Presentatori annidati con GWTP

o non è possibile?

grazie in anticipo.

risposta

16

Sì, è possibile! Nel seguente codice di esempio, presumo che il tuo HomePresenter sia un luogo ed estenda Presenter, e il tuo MenuPresenter estende PresenterWidget.
Nel vostro 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); 
} 

Nel vostro HomePresenter:

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

Poi nel 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); 
    } 
} 
+0

@ Mikael, la tua risposta aiuta davvero. Ma ho una domanda. Qui quello che fai è add-remove-add-remove .. content (Widget) a mainContainer (Panel). Non è un sovraccarico? Non possiamo fare qualcosa come hide-show of content (Widget)? – RAS

+1

@RAS In realtà, non vedo come farlo in altro modo. Il metodo setInSlot() ha a che fare con la composizione di un'interfaccia utente con relatori separati, quindi ad un certo punto sarà necessario iniettare un widget in un pannello. Inoltre, la cancellazione di un pannello non significa che il widget contenuto viene scartato, ma può essere reiniettato successivamente. –

+1

@ MikaelCouzic, grazie per la tua risposta. Ho capito il tuo punto. – RAS

1

Per gli utenti di GWTP 1.5+, notare che un sacco di nuovi cambiamenti hanno stato introdotto nelle slot e presentatori rivelatori. Il caso in questione può ora essere realizzato utilizzando un NestedSlot per il contenuto della pagina e un PermanentSlot per un menu che si desidera visualizzare su tutte le pagine.

Fortunatamente, queste modifiche sono ben documentate. Vedere lo GWTP slot documentation per una spiegazione sui nuovi tipi di slot con esempi su come usarli.

+0

Leggere ora la documentazione per due giorni ma non riesco ancora a rispondere [questa domanda piuttosto semplice] (http://stackoverflow.com/questions/35729549/how-to-use-gwtp-for-a-listview-widget) ^^ – displayname