// this software (where software means whole sources, compiled classes and 
// documentation) is hereby distributed by Stefan Schumacher <stefan@net-tex.de>
// under BSD Licence
//
// Magdeburg, Germany, 2003-06-25 
//
// Viel Spass am Gerät
//
// Java GUI Kram
import java.awt.*;
import java.applet.*;
import javax.swing.*;

// als Applet
public class gui extends Applet
{
    private baum meinBaum = new baum();

    // Eingabefeld
    private TextField Textfeld;
    // Buttons
    private Button hinzufuegen, loescheBaum;

    // TextArea
    public static JTextArea textArea;

    //Label
    private Label label = new Label();

    // Panels
    private Panel oben = new Panel();
    private Panel mitte = new Panel();

    // zeigt die Schritte/Funktionen an, wird aus baum.java aufgerufen, daher public
    public static String aktionen = new String();

    // initialisiert den Grafikkram und einen Beispielbaum
    // mit 1 - 10, siehe Übung 16/A79
    public void init()
    {
        // Panels füllen
        oben.add (loescheBaum = new Button("loesche Baum"));
        oben.add (Textfeld = new TextField("",3));
        oben.add (hinzufuegen = new Button("hinzufuegen"));
        mitte.add (label = new Label("Belegaufgabe Rot-Schwarz Baum von Stefan Schumacher <stefan@net-tex.de>"));
        mitte.add (textArea = new JTextArea(20,55));

        setLayout(new java.awt.BorderLayout());
        // Panels initiieren
        add(oben, BorderLayout.NORTH);
        add(mitte, BorderLayout.SOUTH);

        //Baum von 1-10
        meinBaum.knotenEinfuegen(1);
        meinBaum.knotenEinfuegen(2);
        meinBaum.knotenEinfuegen(3);
        meinBaum.knotenEinfuegen(4);
        meinBaum.knotenEinfuegen(5);
        meinBaum.knotenEinfuegen(6);
        meinBaum.knotenEinfuegen(7);
        meinBaum.knotenEinfuegen(8);
        meinBaum.knotenEinfuegen(9);
        meinBaum.knotenEinfuegen(10);
    }// init


    //             _
    //  _ __  __ _| |___ _ _  
    // | '  \/ _` | / -_) ' \ 
    // |_|_|_\__,_|_\___|_||_|

    public void paint(Graphics g)
    {
        meinBaum.maleBaum(g, getSize().width, getSize().height);
    }

    //                  _   _ _    _                    
    //  _____ _____ _ _| |_| (_)__| |_ ___ _ _  ___ _ _ 
    // / -_) V / -_) ' \  _| | (_-<  _/ -_) ' \/ -_) '_|
    // \___|\_/\___|_||_\__|_|_/__/\__\___|_||_\___|_|  

     public boolean action(Event e, Object arg)
     {
        // Buttonabfrage
        if (arg.toString() == "hinzufuegen")
        {
            // neuWert aus Testfeld saugen und casten
            int neuWert = (new Integer(Textfeld.getText())).intValue();
            if (neuWert > 0)
            {
                aktionen+="\n ";
                aktionen+=neuWert;
                aktionen+=" hinzufuegen ";


                // Knoten einfügen
                meinBaum.knotenEinfuegen(neuWert);
                repaint();
                textArea.setText(aktionen);
                return true;
            }

            return true;
        }
        else if (arg.toString() == "loesche Baum")
        {
            meinBaum.loescheBaum();
            // Applet neu aufziehen
            repaint();
            return true;
        }
        return false;
    }//event
}// class