import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class ToDo extends Frame{


  TextField Eingabe;
  List Liste;
  Button Bhinzu;
  Button Bweg;
  Button Bersetzen;
  Button BEnde;



  private void file_write() {
      try {
        BufferedWriter out = new BufferedWriter(new FileWriter("todo.txt"));

        for (int i = 0; i < Liste.getItemCount(); i++) {
          out.write(Liste.getItem(i));
          out.newLine();
         }
         out.close();
        }


      catch (IOException err) {
        System.out.println("Fehler: \n" + err);
      }
    }



  private void file_read() {
      try {
        BufferedReader in = new BufferedReader(new FileReader("todo.txt"));
        String zeile;
        while ((zeile = in.readLine()) != null) {
          Liste.add(zeile);
        }
        in.close();
      }
      catch (FileNotFoundException err) {
      }
      catch (IOException err) {
        System.out.println("Fehler: \n" + err);
      }
    }


  public ToDo() {
    setTitle("ToDo-Liste");

    addWindowListener(new WindowAdapter() {
       public void windowClosing(WindowEvent e) {
         file_write();
         System.exit(0);
       }
    });

    Eingabe = new TextField();
    Liste = new List(10);
    Bhinzu = new Button("hinzufügen");
    Bweg = new Button("löschen");
    Bersetzen = new Button("ersetzen");
    BEnde = new Button("Ende");

    setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();

    c.gridx = 0;
    c.gridy = 0;
    c.gridheight = 1;
    c.gridwidth = 10;
    c.fill = GridBagConstraints.HORIZONTAL;
    c.insets = new Insets(5,5,5,5);
    add( Eingabe, c);

    c.gridx = 8;
    c.gridy = 1;
    c.gridheight = 1;
    c.gridwidth = 3;
    add(Bhinzu, c);

    c.gridx = 8;
    c.gridy = 3;
    c.gridheight = 1;
    c.gridwidth = 3;
    add(Bweg, c);

    c.gridx = 8;
    c.gridy = 5;
    c.gridheight = 1;
    c.gridwidth = 3;
    add(Bersetzen, c);

    c.gridx = 8;
    c.gridy = 7;
    c.gridheight = 1;
    c.gridwidth = 3;
    add(BEnde, c);

    c.gridx = 0;
    c.gridy = 1;
    c.gridheight = 9;
    c.gridwidth = 7;
    c.fill = GridBagConstraints.BOTH;
    add(Liste, c);

       BEnde.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         file_write();
         System.exit(0);
       }
    });

       Bhinzu.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         Liste.add(Eingabe.getText());
       }
    });


       Bweg.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         int row = Liste.getSelectedIndex(); //ausgewählte Zeile ermitteln
         if (row >= 0) {
            Liste.remove(row);
            Eingabe.requestFocus();

         }
       }
    });


      Bersetzen.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
         int row = Liste.getSelectedIndex(); //ausgewählte Zeile ermitteln
         if (row >= 0) {
            Liste.replaceItem(Eingabe.getText(), row);
            Eingabe.setText("");
            Eingabe.requestFocus();

         }
       }
    });

    file_read();




    pack();
    setVisible(true);



  }

  public static void main (String args[]) {
    new ToDo();
  }
}

