import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class BuchListe extends JDialog 
{
  	private Object[] tabelle;
  	private String parameter;
  	private JFrame parent;

  	//GUI spezifisches
  	JList list_B;
  	DefaultListModel listModel;
  	JButton b_OK;
  	JButton b_Ende;

  	//Konstruktor
  	public BuchListe(JFrame parent, String parameter) 
  	{
    		super (parent);

		this.parent = parent;
    		this.parameter=parameter;

    		this.setSize(450,380);
    		this.getContentPane().setLayout(null);
    		this.setBackground(SystemColor.activeCaptionBorder);
    		this.setTitle("Buch Listenfenster");
		this.setDefaultCloseOperation(HIDE_ON_CLOSE);

    		fuelleList();
    		this.getContentPane().add(list_B);
		list_B.setBounds(20,20,400,250);

    		b_OK = new JButton();
    		this.getContentPane().add(b_OK);
    		b_OK.setText("OK");
    		b_OK.setBounds(125,300,100,24);

    		b_Ende = new JButton();
    		this.getContentPane().add(b_Ende);
    		b_Ende.setText("Ende");
    		b_Ende.setBounds(245,300,100,24);

    		if(parameter == "bearbeiten") 
		{
      		b_OK.addActionListener(
      			new ActionListener() {
      				public void actionPerformed(ActionEvent ae) {setVisible(false); aufrufbearbBuch(); } 
      			}
      		);
    		}
    		else if(parameter == "löschen")
		{
      		b_OK.addActionListener(
      			new ActionListener() {
      				public void actionPerformed(ActionEvent ae) {setVisible(false); aufrufloeschenDialog(); } 
      			}
      		);
    		}
		b_OK.setText(parameter);
    		b_Ende.addActionListener(
    		new ActionListener() {
    			public void actionPerformed(ActionEvent ae) {setVisible(false);} 
    		}
    		);

    		//Realisiert den Doppelklick auf einzelne Zeilen  
		list_B.addMouseListener(new MouseKlasse());
  	}// Konstruktor

  	class MouseKlasse extends MouseAdapter
  	{
    		public void mouseClicked(MouseEvent ae) 
    		{
        	if (ae.getClickCount() == 2) 
  	   		{
  	    		mouseklickVerarbeiten();
        	}
    		}
  	};

  	public void mouseklickVerarbeiten()
  	{
	  	if(parameter=="bearbeiten") 
	  	{
	    		setVisible(false); 
			aufrufbearbBuch();
	  	}// if
	  	else if(parameter=="löschen") 
	  	{
	    		setVisible(false); 
			aufrufloeschenDialog();
	  	}// else
  	}// mouseklickVerarbeiten

  	// Operation fuelleList() wird durch Konstruktor
  	// aufgerufen und fuellt das Listenfeld
  	private void fuelleList()
  	{
		Vector listenInhalt = new Vector();
		tabelle = BuecherVerwaltung.getAll();
		for(int i = 0; i < tabelle.length; i++)
		{
			listenInhalt.addElement(((Buch)tabelle[i]).getName() +"      " + ((Buch)tabelle[i]).getPreis());
		}
		list_B = new JList(listenInhalt);
		// Es kann höchstens ein Listeneintrag selektiert werden.
		list_B.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  	}// fuelleList

  	// Operation aufrufbearbBuch() wird durch Button OK 
  	// aufgerufen wenn Fenster im Bearbeiten-Modus
  	private void aufrufbearbBuch()
  	{
    	int zeile;
    	if((zeile = list_B.getSelectedIndex()) != -1) 
		{
      		(new BuchErfassung(parent, (Buch)tabelle[zeile])).setVisible(true);
    	}
  	}

  	//Operation aufruflöscheBuch() wird durch Button OK aufgerufen, wenn Fenster im Löschen-Modus
  	private void aufrufloeschenDialog() 
  	{
    	int zeile;
    	if( (zeile = list_B.getSelectedIndex() ) != -1) 
		{
      		(new BuchLoeschen(parent, (Buch)tabelle[zeile])).setVisible(true);
    	}
  	}
}