Intento seguir el patrón MVP (específicamente, visión pasiva) en una aplicación java swing ui.Vista del modelo Presentador y vistas compuestas
El diseño básico de la aplicación recuerda al control del asistente. La pantalla se divide en dos partes principales:
- una vista activa.
- una barra de navegación estática, con botones de navegación.
El usuario puede usar botones para cambiar la vista activa, pero la barra siempre se muestra.
Modelando este escenario, tengo un montón de descriptores diffirent, cada uno con su propio presentador, ver la interfaz y ver la implementación (usando JPanel). Luego tengo un presentador de Shell, visualizo Intefrace y veo la implementación, usando un JFrame. La idea es que el shell se cargue primero y siempre se muestre, mostrando la barra de navegación inferior y dejando un espacio para la vista activa. El presentador Shell permitirán ajustar la pantalla activa en ese momento, algo parecido a esto:
interface View {
}
class Presenter {
View view;
public Presenter(View view) {
this.view = view;
}
public View getView() {
return view;
}
}
interface ShellView extends View {
void setActiveView(View activeView);
}
class ShellPresenter extends Presenter {
private ShellView shellView;
public void setActivePresenter(Presenter activePresenter) {
shellView.setActiveView(activePresenter.getView());
}
}
class ShellFrame implements ShellView {
private JFrame frame;
private JPanel activePanel;
private JPanel navigationBar;
public ShellFrame() {
Container c = frame.getContentPane();
c.add(activePanel);
c.add(navigationBar);
}
public setActiveView(View activeView) {
???
}
}
El problema está en el método SetActiveView: No estoy seguro de cómo configurar el ActiveView a la activePanel, cuando la interfaz de Vista es general y como tal, no sabe nada sobre JPanels. Obviamente, tampoco me gustaría que mis presentadores supieran sobre JPanels.
¿Alguna vez descubrió cómo hacer esto? Ninguna de estas respuestas es particularmente buena. Acabo de publicar este hilo: http://stackoverflow.com/questions/17836421/how-dumb-can-mvp-views-really-be – durron597