package practica1.actions;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.KeyStroke;
import practica1.Practica1;
import practica1.controller.Controller;
import practica1.language.Language;
import practica1.language.LanguageEvent;
import practica1.language.LanguageListener;
import practica1.logic.LogicExperimento;
import practica1.logic.LogicPoblacion;
import practica1.ui.dialog.DialogNuevaPoblacion;
import practica1.ui.dialog.DialogNuevoExperimento;
/**
* Clase que implementa la acción de crear una nueva población en un experimento
* @author Miguel González - Ceura
*/
public class ActionNuevaPoblacion extends AbstractAction implements LanguageListener {
private LogicExperimento experimento;
/**
* Constructor de la clase
*/
public ActionNuevaPoblacion() {
super(Language.getI().getP("NUEVA_POBLACION"), null);
Language.getI().addLanguageListener(this);
experimento = null;
putValue(SHORT_DESCRIPTION, Language.getI().getP("NUEVA_POBLACION"));
putValue(NAME, Language.getI().getP("NUEVA_POBLACION"));
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P,
InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_P));
putValue(SELECTED_KEY, Boolean.TRUE);
}
/**
* Constructor de la clase que asocia la acciñon a un experimento
* @param experimento LogicExperimento Experimento al que se asocia la acción
*/
public ActionNuevaPoblacion(LogicExperimento experimento) {
super(Language.getI().getP("NUEVA_POBLACION"), null);
Language.getI().addLanguageListener(this);
this.experimento = experimento;
putValue(SHORT_DESCRIPTION, Language.getI().getP("NUEVA_POBLACION"));
putValue(NAME, Language.getI().getP("NUEVA_POBLACION"));
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P,
InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_P));
putValue(SELECTED_KEY, Boolean.TRUE);
}
/**
* Cuando sucede la acción nos encargamos de crear una nueva población
* al experimento seleccionado, o bien si la acción está asociada directamente
* al experimento
* @param e ActionEvent Evento prtoducido
*/
@Override
public void actionPerformed(ActionEvent e) {
LogicExperimento ex;
if(experimento != null) {
ex = experimento;
} else {
ex = Controller.getInstance().getExperimentoSeleccionado();
}
DialogNuevaPoblacion dialog = new DialogNuevaPoblacion(
Practica1.getInstance(), ex);
dialog.setVisible(true);
if(dialog.getAction() == DialogNuevoExperimento.ACEPTAR) {
String nombrePoblacion = dialog.getNombrePoblacion();
LogicPoblacion p = new LogicPoblacion(
nombrePoblacion, ex);
p.setModified(true);
Controller.getInstance().addPoblacion(p);
}
}
/**
* Al cambiar el idioma actualizamos el nombre y la descripción
* @param evt LanguageEvent
*/
@Override
public void idiomaChange(LanguageEvent evt) {
putValue(SHORT_DESCRIPTION, Language.getI().getP("NUEVA_POBLACION"));
putValue(NAME, Language.getI().getP("NUEVA_POBLACION"));
}
}