import java.awt.event.*;
import java.awt.*;
import java.io.*;
import javax.swing.*;

/**
 * Clase HandlerObjetoEvento
 * Permite importar un bloque "Evento" al programa.
 * @author Patricio A. Castillo Pizarro - Eric C. Maldonado Olguin
 * @version 1.0 - Jun 26th, 2007
 */
class HandlerObjetoEvento implements ActionListener
{
    private EditorPanel panel;
    private ObjetoEvento evento;
    private String tipoEvento;
   
    
    /**
     * Constructor.
     * @param p Panel en que se encuentra el programa grafico a compilar
     */
    public HandlerObjetoEvento(EditorPanel p)
    {
        panel = p;
    }
    
     public void actionPerformed(ActionEvent e) {
        tipoEvento = e.getActionCommand();
        evento = new ObjetoEvento (400,200);
        
        //Setea los parametros del bloque de acuerdo al menu desde el que fue creado.
        if(tipoEvento.equals("Avanzar") ||
                tipoEvento.equals("Retroceder") ||
                tipoEvento.equals("CambiarDireccion") ||
                tipoEvento.equals("Detener")) {
            evento.nombreObjeto = tipoEvento;
            evento.outs = "OUT_A+OUT_C";
        }
        if(tipoEvento.equals("Esperar")) {
            evento.nombreObjeto = tipoEvento;
            evento.time = 100;
        }
        if(tipoEvento.equals("PotenciaMotores")) {
            evento.nombreObjeto = tipoEvento;
            evento.power = 7;
            evento.outs = "OUT_A+OUT_C";
        }
        if(tipoEvento.equals("EnviarMSG")) {
            evento.nombreObjeto = tipoEvento;
            evento.message = 0;
        }
        if(tipoEvento.equals("LimpiarMSG")) {
            evento.nombreObjeto = tipoEvento;
        }
        if(tipoEvento.equals("NQCPersonal")) {
            evento.nombreObjeto = tipoEvento;
            evento.nqc = "//Codigo Personal\n";
        }
        if(tipoEvento.equals("EmitirSonido")) {
            evento.nombreObjeto = tipoEvento;
            evento.sound = "SOUND_CLICK";
        }
        if(tipoEvento.equals("EmitirTono")) {
            evento.nombreObjeto = tipoEvento;
            evento.frecuency = 440;
            evento.time = 100;
        }
        if(tipoEvento.equals("NuevaVariable")) {
            evento.nombreObjeto = tipoEvento;
            //Primero se verifica que no exista previamente la variable
            String name = new String("a0");
            int t = 1;
            while (panel.checkName(name)){
                name = "a" + String.valueOf(t);
                t++;
            }
            evento.name = name;
            evento.value = "0";
        }
        if(tipoEvento.equals("ModificarVariable")) {
            evento.nombreObjeto = tipoEvento;
            evento.name = "a";
            evento.value = "0";
        }
        
        panel.incorpore (evento);
    }
}
//Fin clase HandlerObjetoEvento
