2011-02-02 19 views
6

En un proyecto existente estamos utilizando MVP (hecho a mano) razonablemente bien. Se entiende y hace principalmente lo que necesitamos. Para un nuevo proyecto que estoy viendo usando el marco MVP integrado en GWT 2.1 (Actividades y Lugares).GWT 2.1 MVP (Actividades/Lugares) y Pantallas con pestañas

Nuestras aplicaciones son principalmente pantallas con pestañas con cada pestaña unida a un widget de vista única.

He intentado utilizar Actividades y lugares sin éxito para este tipo de visualización. Parte del problema es que el ejemplo del artículo Hello World terminó dejándome persiguiendo, demasiados conceptos nuevos para que mi cerebro los digerir.

Hello World sample IMO no es una introducción suficiente y no trata muchos de los casos de uso del mundo real. Esperaba que alguien me indicara las aplicaciones de muestra que usan MVP para pantallas con pestañas. Thomas Broyer tiene excelentes publicaciones en su blog, pero me han dejado un poco perplejo.

Anteriormente he utilizado un AppController para manejar cambios de pestañas y presentadores individuales para cada pestaña. La nueva arquitectura en GWT 2.1 me deja más confundido de lo que debería.

Respuesta

1

Estoy utilizando el marco gwt Actividades/Lugares para una pantalla con pestañas, y funciona muy bien, PERO: decidí abandonar el widget TabLayoutPanel que habíamos estado usando y crear mi propia barra de navegación (que se parece a pestañas) y una panel de contenido. El efecto es el mismo, parece idéntico, pero la implementación es mucho más limpia.

Creo que el problema está en tratar de mezclar Actividades/Lugares, que tiene su propia idea de navegación, con un TabPanel, que tiene otra idea de navegación. Al principio traté de unirlos, anulando el comportamiento de los botones de tabulación para activar un PlaceController, que a su vez cambiaba las pestañas, pero ... estaba desordenado. Con el panel de navegación/contenido independiente, el PlaceController podría hacer todo lo que quisiera. Solo tiene que cambiar manualmente las vistas, en lugar de dejar que un TabPanel lo haga por usted.

1

También me enfrenté a este problema pero me las arreglé para hacerlo funcionar usando una actividad por pestaña y cada actividad usando un presentador (o más) para mostrar los componentes de la pestaña.

En cuanto a la solución encontrada por Riley Lark, yo, en cambio, opté por usar un patrón Decorator y, por lo tanto, guardo el TabbedPanel original. Cómo ? Cada actividad se inyecta (GIN) un presentador que contiene un decorador para TabbedPanel.

Así, por ejemplo:

  • Tab1Activity se inyecta con Tab1Presenter, que, a su vez, obtiene inyectado con Tab1Decorator que decora la TabbedPanel con un Tab1ContentPanel (este panel contiene todos los widgets que se mostrarán en la pestaña tab1)

  • Tab2Activity se inyecta con Tab2Presenter, que, a su vez, obtiene inyectado con Tab2Decorator que decora la misma TabbedPanel con un Tab2ContentPanel (este panel contiene todos los widgets que se muestran en la ficha Sep2)

Parece complejo pero, después de crear el primer decorador, realmente valió la pena y pude mantener el TabbedPanel y aprovechar la administración de historial de URL implícita en el marco.

+0

No hay TabbedPanel en GWT - hay TabPanel, que solo funciona en modo peculiar, y TabLayoutPanel, que no es aceptado por el ActivityManager. He intentado este enfoque y no funciona. Por favor, muestre el código o elabore más. – Saad

Cuestiones relacionadas