import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Cronometrador implements ActionListener{
    // Una matriz de Reloj con sus JTextField asociados y botones
    JTextField tf[]=new JTextField[20];
    Cronometro c[]=new Cronometro[20];
    JButton b[][]=new JButton[20][2];
    
    public static void main(String args[]){
        new Cronometrador();
    }
    Cronometrador(){
        // La ventana que muestra el programa
        JFrame ventana=new JFrame("Probando");
        ventana.setSize(600,500);
        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // El panel que contiene los elementos
        JPanel panel=new JPanel();
        panel.setLayout(new GridLayout(20,3));
        for (int i=0;i<20;i++){
            tf[i]=new JTextField(10);
            c[i]=new Cronometro(tf[i]);
            panel.add(tf[i]);
            // El boton de marcha
            b[i][0]=new JButton("Empieza "+i);
            b[i][0].addActionListener(this);
            panel.add(b[i][0]);
            // El boton de paro
            b[i][1]=new JButton("Acaba "+i);
            b[i][1].addActionListener(this);
            b[i][1].setEnabled(false);
            panel.add(b[i][1]);
        }
        ventana.add(panel);
        ventana.setVisible(true);
    }
    
    public void actionPerformed(ActionEvent e){
        // Obtengo la etiqueta del botón
        String textoPulsado=e.getActionCommand();
        // Lo rompo a cachos con split
        String cacho[]=textoPulsado.split(" ");
        // Si en Marcha, que comienze el correspondiente cronometro
        int i=Integer.parseInt(cacho[1]);
        if(cacho[0].equals("Empieza")){
            c[i].start();
            b[i][0].setEnabled(false);
            b[i][1].setEnabled(true);
        }else{
            c[i].sigue_contando=false;
            b[i][1].setEnabled(false);
            try{Thread.sleep(100);}catch(Exception eee){}// Esto es para frenarlo un poco
            // ¿Soy el mejor?
            if(quienMejor()==i){
                pinta(i);
            }
            
        }
        
    }

    public int quienMejor(){
        // devuelve el índice del menor tiempo de la matriz de Cronometros
        double menorTiempoPorAhora=999999999;
        int mejorPorAhora=-1;
        for(int i=0;i<20;i++){
            if (c[i].tiempo_total()>0 && c[i].tiempo_total()<menorTiempoPorAhora){
                mejorPorAhora=i; 
                menorTiempoPorAhora=c[i].tiempo_total();
            }
        }
        return mejorPorAhora;
    }
    
    public void pinta(int n){
        for(int i=0;i<20;i++){
            if(i!=n) c[i].t.setBackground(Color.white);
            else c[i].t.setBackground(Color.green);
        }
    }
}