import DialogoCurso;
import java.awt.*;

public class DialogoVotacion extends DialogoCurso implements Runnable
{
  int limite = 30;
  int tiempo;

  protected Label etqMensaje, etqTiempo;
  Thread hilo = null;

  public DialogoVotacion( String titulo, ReceptorEventos jefe )
  {
     super(titulo,jefe);
  }

  public void creaControles()
  {
     super.creaControles();
     etqMensaje = new Label("",Label.LEFT);
     etqTiempo =  new Label("",Label.CENTER);

     PanelCurso panCen = new PanelCurso(PanelCurso.BORDE_HUNDIDO,3);
     panCen.setLayout( new GridLayout(4,1) );
     panCen.add( new Label("Se pide su voto para la siguiente cuestion:") );
     panCen.add(etqMensaje);
     panCen.add( new Label("Si no pulsa ningun boton, se supondra que vota SI") );

     PanelCurso panRes = new PanelCurso(PanelCurso.BORDE_RESALTADO,2);
     panRes.setLayout( new BorderLayout() );
     panRes.add("Center",etqTiempo);
     panCen.add(panRes);

     PanelCurso panBot = new PanelCurso(PanelCurso.SIN_BORDE,3);
     panBot.setLayout( new FlowLayout() );
     panBot.add( new Button("Voto SI") );
     panBot.add( new Button("Voto NO") );

     PanelCurso panGen = new PanelCurso(PanelCurso.SIN_BORDE,5);
     panGen.setLayout( new BorderLayout() );
     panGen.add("Center",panCen);
     panGen.add("South",panBot);

     setLayout( new BorderLayout() );
     add("Center",panGen);
  }

  public void mostrar( Rectangle r, String[] args )
  {
     if((hilo!=null) && (hilo.isAlive())) hilo.suspend(); 

     etqMensaje.setText(args[0]);
     tiempo = limite;
     hilo = new Thread(this);
     hilo.start();

     super.mostrar(r,args);
  }

  public void run()
  {
     do {
       etqTiempo.setText("Quedan "+tiempo+" segundos.");
       tiempo--;
       try {
         hilo.sleep(1000);
       } catch( Exception e ) {
         System.out.println(e);
       }
     } while(tiempo>=0);

     String[] args = {"SI"}; 
     jefe.nuevoEvento(this,ReceptorEventos.INT_VOTO,args);
     hide();
  }

  public boolean action( Event evt, Object what )
  {
     if (evt.target instanceof Button) {
        if((hilo!=null) && hilo.isAlive()) hilo.stop();
        String[] args = {(what.equals("Voto SI")) ? "SI" : "NO"}; 
        jefe.nuevoEvento(this,ReceptorEventos.INT_VOTO,args);
        hide();
        return(true);
     }
     return( super.action(evt,what) );
  }
}
