import javax.swing.Timer;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;

public class PETRUS
{
    private WOLKE wolke;
    private Timer uhr;
    private Random zufall;
    private JButton startknopf, stopknopf, regenknopf, schneeknopf, hagelknopf;
    private JTextField eingabe;
    
    public PETRUS()
    {
        wolke = new WOLKE();
        uhr = new Timer(100, new ActionListener()
                               {
                                public void actionPerformed(ActionEvent e)
                                {
                                    ticke();
                                }
                               });
        zufall = new Random();
        startknopf = new JButton("Start");
        startknopf.addActionListener(new ActionListener()
            { 
                public void actionPerformed(ActionEvent e)
                {
                    starte();   
                }
            }                         );
        ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(startknopf, "rechts");
        stopknopf = new JButton("Stopp");
        stopknopf.addActionListener(new ActionListener()
            { 
                public void actionPerformed(ActionEvent e)
                {
                    stoppe();   
                }
            }                         );
        ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(stopknopf, "rechts");
        eingabe = new JTextField("20");
        ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(eingabe, "rechts");
        regenknopf = new JButton("Regen erzeugen");
        regenknopf.addActionListener(new ActionListener()
            { 
                public void actionPerformed(ActionEvent e)
                {
                    erzeugeTropfen(holeEingabe());   
                }
            }                         );
        ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(regenknopf, "rechts");
        hagelknopf = new JButton("Hagel erzeugen");
        hagelknopf.addActionListener(new ActionListener()
            { 
                public void actionPerformed(ActionEvent e)
                {
                    erzeugeHagel(holeEingabe());   
                }
            }                         );
        ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(hagelknopf, "rechts");
        schneeknopf = new JButton("Schnee erzeugen");
        schneeknopf.addActionListener(new ActionListener()
            { 
                public void actionPerformed(ActionEvent e)
                {
                    erzeugeFlocken(holeEingabe());   
                }
            }                         );
        ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(schneeknopf, "rechts");
    }
    
    private void ticke()
    {
        wolke.bewege(0.1);
        wolke.zeichne();
    }
    
    public void starte()
    {
        uhr.start();
    }
    
    public void stoppe()
    {
        uhr.stop();
    }
    
 
    public void erzeugeTropfen(int zahl)
    {
        for (int i = 0; i < zahl; i++)
        {
            TROPFEN tr = new TROPFEN(zufall.nextInt(600), zufall.nextInt(200), 5+zufall.nextInt(20), wolke);
            wolke.fuegeHinzu(tr);                           
        }
    }    

    public void erzeugeHagel(int zahl)
    {
        for (int i = 0; i < zahl; i++)
        {
            HAGELKORN hk = new HAGELKORN(zufall.nextInt(600), zufall.nextInt(200));
            wolke.fuegeHinzu(hk);                           
        }
    } 
    
    public void erzeugeFlocken(int zahl)
    {
        for (int i = 0; i < zahl; i++)
        {
            SCHNEEFLOCKE flocke = new SCHNEEFLOCKE(zufall.nextInt(600), zufall.nextInt(200));
            wolke.fuegeHinzu(flocke);
        }
    }

    private int holeEingabe()
    {
        return Integer.parseInt(eingabe.getText());
    }

}
