import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 08.06.2007
  * @author Nicholas Ohs
  */

public class GuiJList extends JFrame {
  // Anfang Variablen
  private String[] Infos = {"Hallo", "Was?", "jaja"};
  private JList lst_1 = new JList(Infos);
  private Color cl_1 = new Color(200, 200, 255);
  private Color cl_2 = new Color(255, 20, 20, 30);
  private JButton bt_1_auslesen = new JButton();
  private JButton bt_alles_auslesen = new JButton();
  private JButton bt_anfuegen = new JButton();
  private JScrollPane jScrollPaneta_Ausgabe = new JScrollPane();
  private JScrollPane jScrollPanelst_1 = new JScrollPane();
  private JTextArea ta_Ausgabe = new JTextArea("");
  private JPanel pn_Ausgabe = new JPanel(null);
  // Ende Variablen

  public GuiJList(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    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);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jScrollPanelst_1.setBounds(50, 16, 80, 100);
    jScrollPanelst_1.setViewportView(lst_1);
    //lst_1.setBounds(50, 16, 50, 100);
    lst_1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    lst_1.setBackground(cl_1);
    lst_1.setBorder(BorderFactory.createLoweredBevelBorder());
    lst_1.setSelectionBackground(cl_2);
    lst_1.setSelectedIndex(1);
    lst_1.setAutoscrolls(true);
    cp.add(jScrollPanelst_1);
    bt_1_auslesen.setBounds(152, 16, 130, 25);
    bt_1_auslesen.setText("eins auslesen");
    cp.add(bt_1_auslesen);
    bt_1_auslesen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        bt_1_auslesenActionPerformed(evt);
      }
    });

    bt_alles_auslesen.setBounds(152, 48, 130, 25);
    bt_alles_auslesen.setText("alles auslesen");
    cp.add(bt_alles_auslesen);
    bt_alles_auslesen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        bt_alles_auslesenActionPerformed(evt);
      }
    });

    bt_anfuegen.setBounds(152, 80, 130, 25);
    bt_anfuegen.setText("anfügen");
    cp.add(bt_anfuegen);
    bt_anfuegen.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        bt_anfuegenActionPerformed(evt);
      }
    });

    pn_Ausgabe.setBounds(8, 120, 273, 145);
    pn_Ausgabe.setBorder(BorderFactory.createTitledBorder("Ausgabe"));
    cp.add(pn_Ausgabe);
    jScrollPaneta_Ausgabe.setBounds(8, 16, 257, 120);
    ta_Ausgabe.setText("");
    jScrollPaneta_Ausgabe.setViewportView(ta_Ausgabe);
    jScrollPaneta_Ausgabe.setBorder(BorderFactory.createLoweredBevelBorder());
    pn_Ausgabe.add(jScrollPaneta_Ausgabe);

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void bt_1_auslesenActionPerformed(ActionEvent evt) {
    ta_Ausgabe.append(lst_1.getSelectedValue()+" in Reihe: "+String.valueOf(lst_1.getSelectedIndex()+1));
  }

  public void bt_alles_auslesenActionPerformed(ActionEvent evt) {
    int i1 = 0;
    lst_1.setSelectedIndex(i1);
    while (i1 < lst_1.getMaxSelectionIndex()+1)
    {
     lst_1.setSelectedIndex(i1);
     ta_Ausgabe.append("*"+lst_1.getSelectedValue()+"* in Reihe: "+String.valueOf(lst_1.getSelectedIndex()+1)+"\n");
     i1++;
     lst_1.setSelectedIndex(i1);

    }

  }

  public void bt_anfuegenActionPerformed(ActionEvent evt) {
     int i1 = 0;
     int i2 = 0;
    lst_1.setSelectedIndex(i1);
    while (i1 < lst_1.getMaxSelectionIndex()+1)
    {
     i1++;
     lst_1.setSelectedIndex(i1);
    }
    String[] d = new String[i1+1];
    lst_1.setSelectedIndex(i2);
    while (i2 < i1)
    {
     d[i2] = String.valueOf(lst_1.getSelectedValue());
     i2++;
     lst_1.setSelectedIndex(i2);
    }
    d[i2] = InputOptionShowInputDialog();
    lst_1.setListData(d);
    lst_1.setAutoscrolls(true);
  }

  public String InputOptionShowInputDialog() {
    return JOptionPane.showInputDialog(this, "Was soll der Liste hinzugefügt werden?", "Etwas hinzufügen", JOptionPane.QUESTION_MESSAGE);
  }

  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new GuiJList("GuiJList");
  }
}

