/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package practica1.ui;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import practica1.controller.Controller;
import practica1.controller.event.ControllerPoblacionEvent;
import practica1.controller.listener.ControllerPoblacionListener;
import practica1.logic.LogicPoblacion;
import practica1.logic.event.LogicPoblacionEvent;
import practica1.logic.listener.LogicPoblacionListener;
import practica1.ui.panelPoblacion.PanelPoblacion;
/**
* Componente que permite visualizar en una nueva ventana una población
* @author Miguel González - Ceura
*/
public class VentanaMostrarPoblacion extends JFrame {
private LogicPoblacion poblacion;
/**
* Constructor de la ventana que muestra una nueva población y se pone
* visible por defecto
* @param poblacion LogicPoblacion Población a visualizar
*/
public VentanaMostrarPoblacion(LogicPoblacion poblacion) {
super(poblacion.getExperimentoPadre().getNombreExperimento()
+ " - " + poblacion.getNombrePoblacion());
this.poblacion = poblacion;
init();
initListeners();
}
/**
* Inicializa los componentes Swings
*/
private void init() {
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
setBounds(100, 100, 600, 500);
PanelPoblacion panelPob = new PanelPoblacion(poblacion);
contentPane.add(panelPob, BorderLayout.CENTER);
setVisible(true);
}
/**
* Inicializa los listeners
*/
private void initListeners() {
poblacion.addLogicPoblacionListener(new LogicPoblacionListener() {
/**
* Cuando la población cambia actualizamos el nombre de la ventana
* por si el nombre de la población ha cambiado
*/
@Override
public void poblacionChange(LogicPoblacionEvent event) {
setName(poblacion.getExperimentoPadre().getNombreExperimento()
+ " - " + poblacion.getNombrePoblacion());
}
});
Controller.getInstance().addControllerPoblacionListener(
new ControllerPoblacionListener() {
@Override
public void addedPoblacion(ControllerPoblacionEvent event) {}
@Override
public void removedPoblacion(ControllerPoblacionEvent event) {
//Si se ha borrado la población que estramos mostrando ocultamos
//la ventana
if(event.getPoblacion().equals(poblacion)) {
setVisible(false);
}
}
@Override
public void modifiedPoblacion(ControllerPoblacionEvent event) {}
@Override
public void abiertaPoblacion(ControllerPoblacionEvent event) {}
@Override
public void cerradaPoblacion(ControllerPoblacionEvent event) {}
@Override
public void mostrarPoblacion(ControllerPoblacionEvent event) {}
});
}
}