package Übungen;

import java.awt.EventQueue;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.util.ArrayList;

public class Stopuhr extends JFrame {

    JPanel contentPane;
    JLabel zeige_zeit;
    JButton start_zeit, stop_zeit_1;
    JTextArea zeige_alleZeiten;

    Timer timer, print_alleZeiten;
    boolean aktiv;
    long startzeit;

    int speichere_alle_zeiten_index = 0; 
    ArrayList<String> speichere_alle_zeiten = new ArrayList<>();

    public Stopuhr() {
        this.setTitle("Stopuhr");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 498, 630);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        zeite_elemente();
        start_programm();
        
        
        this.setVisible(true);
    }

    public void start_programm() {
        aktiv = false;
        timer = new Timer(100, e -> update_zeit());  
        print_alleZeiten = new Timer(100, e -> print_next_time()); 
        start_zeit.addActionListener(e -> start_stopuhr());
        stop_zeit_1.addActionListener(e -> stop_stopuhr());
    }

    public void start_stopuhr() {
        if (!aktiv) {
            timer.start();
            startzeit = System.currentTimeMillis(); // Milisekunden
            aktiv = true;
            speichere_alle_zeiten_index = 0;  
         
        }else 
        	  print_alleZeiten.start();  
        
        	
    }

    public void stop_stopuhr() {
        if (aktiv) {
            timer.stop();
            print_alleZeiten.stop(); 
            start_zeit.setEnabled(false);
            aktiv = false;

        } else {
            zeige_alleZeiten.setText("");
            zeige_zeit.setText("Zeit: 0.0 s");
            start_zeit.setEnabled(true);
            speichere_alle_zeiten.clear(); 
        }
    }

    public void update_zeit() {
        double rest = (System.currentTimeMillis() - startzeit) / 1000.0;
        String formatiere_zahl = String.format("Zeit: %.1f s", rest);
        speichere_alle_zeiten.add(formatiere_zahl);
        zeige_zeit.setText(formatiere_zahl);
    }

	public void print_next_time() {

		zeige_alleZeiten.append(speichere_alle_zeiten_index + 1 + ".: " + speichere_alle_zeiten.get(speichere_alle_zeiten_index) + "\n");
		speichere_alle_zeiten_index++;

	}

    public static void main(String[] args) {
        new Stopuhr();
    }

    public ArrayList<String> getalleZeiten() {
        return speichere_alle_zeiten;
    }

    public void zeite_elemente() {
        zeige_zeit = new JLabel("Zeit: 0.0 s");
        zeige_zeit.setFont(new Font("Tahoma", Font.BOLD, 16));
        zeige_zeit.setBounds(10, 11, 450, 42);
        contentPane.add(zeige_zeit);
        start_zeit = new JButton("Start/Lap");
        start_zeit.setBounds(10, 484, 190, 54);
        contentPane.add(start_zeit);

        stop_zeit_1 = new JButton("Stop/Löschen");
        stop_zeit_1.setBounds(252, 484, 190, 54);
        contentPane.add(stop_zeit_1);

        zeige_alleZeiten = new JTextArea();
        zeige_alleZeiten.setFont(new Font("Arial", Font.BOLD, 15));
        zeige_alleZeiten.setBounds(10, 53, 417, 376);
        contentPane.add(zeige_alleZeiten);
    }
}