import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import mk.nds.adt.*; //alternativ kann die beiliegende Klasse BinTree vom Typ Tier verwendet werden


/**
 *
 * Beschreibung: Lösung zu Aufgabe 7
 *
 * @version 2.0 vom 29.09.2025
 * @author Ylva Brandt 
 */

public class VorlageAufgabe7 extends JFrame {
  // Anfang Attribute
  BinTree tierbaum = new BinTree();
  BinTree neuerBaum = new BinTree();
  
  private JButton bInorder = new JButton();
  private JTextArea jTextArea1 = new JTextArea("");
  private JScrollPane jTextArea1ScrollPane = new JScrollPane(jTextArea1);
  private JButton bSuche = new JButton();
  private JTextField jTextField1 = new JTextField();
  private JButton bSortierenachGewicht = new JButton();
  // Ende Attribute
  
  public VorlageAufgabe7() { 
    // Frame-Initialisierung
    super();
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 582; 
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setTitle("Aufgabe7");
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    bSortierenachGewicht.setBounds(120, 17, 185, 25);
    bSortierenachGewicht.setText("sortiere nach Gewicht");
    bSortierenachGewicht.setMargin(new Insets(2, 2, 2, 2));
    bSortierenachGewicht.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        bSortierenachGewicht_ActionPerformed(evt);
      }
    });
    cp.add(bSortierenachGewicht);
    jTextField1.setBounds(8, 152, 193, 33);
    cp.add(jTextField1);
    bSuche.setBounds(11, 105, 75, 25);
    bSuche.setText("suche");
    bSuche.setMargin(new Insets(2, 2, 2, 2));
    bSuche.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        bSuche_ActionPerformed(evt);
      }
    });
    cp.add(bSuche);
    jTextArea1ScrollPane.setBounds(376, 24, 177, 209);
    cp.add(jTextArea1ScrollPane);
    bInorder.setBounds(11, 18, 75, 25);
    bInorder.setText("inorder");
    bInorder.setMargin(new Insets(2, 2, 2, 2));
    bInorder.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
        bInorder_ActionPerformed(evt);
      }
    });
    cp.add(bInorder);
    
    // Ende Komponenten
    
    setVisible(true);

    tierbaum.setItem(new Tier("Mucki", "Fuchs", 5.2));
    tierbaum.setLeft(new BinTree(new Tier("Hedwig", "Eule", 1.9)));
    tierbaum.setRight(new BinTree(new Tier("Roy", "Tiger", 217.5)));
    tierbaum.getLeft().setLeft(new BinTree(new Tier("Emil", "Ente", 1.3)));
    tierbaum.getLeft().setRight(new BinTree(new Tier("Isi", "Koala", 8.4)));
    tierbaum.getRight().setLeft(new BinTree(new Tier("Nala", "Elefant", 4056.3)));
    tierbaum.getRight().setRight(new BinTree(new Tier("Susi", "Lama", 150.4)));
    tierbaum.getLeft().getLeft().setRight(new BinTree(new Tier("Gerda", "Giraffe", 900.8)));
    tierbaum.getRight().getLeft().setRight(new BinTree(new Tier("Otto", "Waschbär", 6.2)));
    
    
  } // end of public 
  
  // Anfang Methoden
  
  public static void main(String[] args) {
    new VorlageAufgabe7();
     
  } // end of main
  
  public void bInorder_ActionPerformed(ActionEvent evt) {
    String aus = inorder(tierbaum);
    jTextArea1.setText(aus);
  } 
  
  public String inorder(BinTree b){
    String ausgabe = "";
    if (!b.isEmpty()) {
      ausgabe = ausgabe + inorder(b.getLeft());
      ausgabe = ausgabe + (Tier)b.getItem() + "\n";
      ausgabe = ausgabe + inorder(b.getRight());
    }
    return ausgabe;
  }
  
  //zu Aufgabe 7a
  public void bSuche_ActionPerformed(ActionEvent evt) {

  }
  
  public BinTree suche(String name, BinTree b){
    return null;//Platzhalter für die Implementierung
  }
  
  //zu Aufgabe 7c
  public void bSortierenachGewicht_ActionPerformed(ActionEvent evt) {
    sortiereNeu(tierbaum);
    String aus = inorder(neuerBaum);
    jTextArea1.setText(aus);
  }
  
  public void sortiereNeu(BinTree alt){
    
  }
  
  public void einfuegen(Tier neu, BinTree b){
    
  }

} // end of class VorlageAufgabe7
