2011-09-28 20 views
11

Tengo espacios de contenido en mi mainpresenter, ¿cómo puedo poner, cuando la aplicación carga, poner el presentador de inicio en una ranura y la ranura de menú en la otra?Presentadores anidados con GWTP

o no es posible?

gracias de antemano.

Respuesta

16

¡Sí, puedes! En el siguiente código de ejemplo, asumo que su HomePresenter es un lugar y extiende Presenter, y su MenuPresenter extiende PresenterWidget.
En su 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); 
} 

En su HomePresenter:

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

Luego, en 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, su respuesta realmente ayuda. Pero tengo una pregunta. Aquí lo que hace es agregar-eliminar-agregar-eliminar .. contenido (Widget) a mainContainer (Panel). ¿No es esto una sobrecarga? ¿No podemos hacer algo como ocultar-mostrar contenido (Widget)? – RAS

+1

@RAS En realidad, no veo cómo hacerlo de ninguna otra manera. El método setInSlot() tiene que ver con la composición de una interfaz de usuario con presentadores por separado, por lo que en algún momento tendrá que inyectar un widget en un panel. Además, borrar un panel no significa que el widget contenido se descarta, se puede reinyectar más tarde. –

+1

@MikaelCouzic, gracias por su respuesta. Entendí tu punto. – RAS

1

Para los usuarios de GWTP 1.5+, tenga en cuenta que muchos de los nuevos cambios tienen sido presentado a las máquinas tragamonedas y presentadores reveladores. El caso en cuestión ahora se puede lograr utilizando un NestedSlot para el contenido de la página y un PermanentSlot para un menú que desee que se muestre en todas sus páginas.

Afortunadamente, estos cambios están bien documentados. Consulte el GWTP slot documentation para obtener una explicación sobre los nuevos tipos de tragamonedas con ejemplos sobre cómo usarlos.

+0

Leyendo la documentación ahora durante dos días pero todavía no puedo responder [esta pregunta bastante simple] (http://stackoverflow.com/questions/35729549/how-to-use-gwtp-for-a-listview-widget) ^^ – displayname