import java.awt.*;
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*;

/**
 * Genera una ventana para grabar archivos de audio. El boton
 * Detener funciona también como "cancelar"
 */
public class DialogoRec implements ActionListener
{ 
 private JDialog dialogo;
 private JFrame owner;
 private JPanel panel;
 private JButton botonRec;
 private JButton botonStop;
 private JLabel instrucciones;
 private SimpleAudioRecorder recorder;
 private boolean recorded;
 
 private final int width = 230;
 private final int height = 90;
 
 /**
  * Genera los componentes graficos de la ventana de grabacion y asigna
  * Listeners a los botones corespondientes
  * @param f El marco del cual depende este Dialogo. Será el campo de JPostItFrame
  * @param sar El objeto SimpleAudioRecorder para generar la grabacion
  */
 public DialogoRec(JFrame f, SimpleAudioRecorder sar)
 { recorder = sar;
   owner = f;
   botonRec = new JButton("Grabar");
   botonStop = new JButton("Detener");
   instrucciones = new JLabel("Oprima el boton para grabar y detener");
   panel = new JPanel();
   panel.add(instrucciones);
   panel.add(botonRec);
   panel.add(botonStop);
   recorded = false;
   
   botonRec.addActionListener(this);
   botonStop.addActionListener(this);
   
   dialogo = new JDialog(owner, "Grabacion de mensaje de Voz", true);
   dialogo.setSize(width, height);
   dialogo.setDefaultCloseOperation(dialogo.EXIT_ON_CLOSE);
   dialogo.getContentPane().add(panel);
   dialogo.setVisible(true);   
 
}

/**
 * Escucha los botones de Grabacion y Detener.
 * En este metodo se llama efectivamente los metodos start y stopRecording del
 * objeto SimpleAudioRecorder
 * @param a El ActionEvent asociado.
 */
public void actionPerformed(ActionEvent a)
{
 if (a.getSource() == botonRec)
 { recorded = true;
   recorder.start(); }
  if (a.getSource() == botonStop)
 { recorder.stopRecording();
   dialogo.dispose(); }
}

/**
 * Permite saber el estado de la grabacion
 * @return Verdadero si se ha realizado una grabacion 
 */
public boolean isRecorded()
{ return recorded; }

}//end class