package practica1.actions;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
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.manejoExperimento.ExperimentoInvalidoException;
import practica1.manejoExperimento.ManejoExperimento;
import practica1.ui.dialog.DialogNuevoExperimento;
/**
* Clase que implementa la acción de crear un nuevo excperimento
* @author Miguel González - Ceura
*/
public class ActionNuevoExperimento extends AbstractAction implements LanguageListener {
/**
* Constructor de la clase
*/
public ActionNuevoExperimento() {
super(Language.getI().getP("NUEVO_EXPERIMENTO"), null);
Language.getI().addLanguageListener(this);
putValue(SHORT_DESCRIPTION, Language.getI().getP("NUEVO_EXPERIMENTO"));
putValue(NAME, Language.getI().getP("NUEVO_EXPERIMENTO"));
putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK));
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_N));
putValue(SELECTED_KEY, Boolean.TRUE);
}
/**
* Cuando sucede la acción nos encargamos de crear un nuevo experimento,
* para ello se muestra una nueva ventana modal para preguntar por los
* datos del mismo
* @param e ActionEvent Evento producido
*/
@Override
public void actionPerformed(ActionEvent e) {
DialogNuevoExperimento dialog = new DialogNuevoExperimento(
Practica1.getInstance());
dialog.setVisible(true);
if(dialog.getAction() == DialogNuevoExperimento.ACEPTAR) {
String rutaFichero = dialog.getRutaExperimento() + "/" +
dialog.getNombreExperimento();
File fichExp = new File(rutaFichero);
String nombreExp = dialog.getNombreExperimento();
String tipoBacteria = dialog.getTipoBacteria();
String nombreInvestigador = dialog.getNombreInvestigador();
String proyectoInvestigacion = dialog.getProyectoInvestigacion();
LogicExperimento nuevoExp = new
LogicExperimento(fichExp, nombreExp, tipoBacteria,
nombreInvestigador, proyectoInvestigacion);
try {
//Guardamos el experimento
ManejoExperimento.guardarExperimento(nuevoExp);
//Lo agregamos al modelo
Controller.getInstance().addExperimento(nuevoExp);
} catch (ExperimentoInvalidoException ex) {
Practica1.log.error(Language.getI().getP("ERROR"), ex);
JOptionPane.showMessageDialog(Practica1.getInstance(),
Language.getI().getP("PROBLEMA_CREAR_EXPERIMENTO"),
Language.getI().getP("ERROR"),
JOptionPane.ERROR_MESSAGE);
}
}
}
/**
* 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("NUEVO_EXPERIMENTO"));
putValue(NAME, Language.getI().getP("NUEVO_EXPERIMENTO"));
}
}