// für Practical 3 (PSE), Institut für Informatik der Universität München
// 19.12.2002

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JCheckBox;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;

public class Pizzeneingabe extends JFrame implements ActionListener{

    private Auflagenart[] auflagenarten;
    private BasisPizzaart[] basisarten;
    
    private Container schreibflaeche;
    private JPanel fussleiste;
    private JButton stornoKnopf;
    private JButton inKorbKnopf;
    private JButton fertigKnopf;
    private JTextField kundenEingabe;
    private Textausgabezone basisText;
    private JComboBox basisWahl;
    private Textausgabezone auflagenText;
    private JComboBox auflagenWahl;
    private JRadioButton grossKnopf;
    private JRadioButton kleinKnopf;
    private JCheckBox calzoneKnopf;
    private Textausgabezone textFuerPosten;
    private Textausgabezone textFuerKorb;

    // hier werden noch Instanzenvariablen für den Programmablauf gebraucht

    public Pizzeneingabe(Auflagenart[] auflagenarten,
			 BasisPizzaart[] basisarten){
	// Parameterübergabe
	this.auflagenarten = auflagenarten;
	this.basisarten = basisarten;

	

	// Grundsätzliches zum Fenster
	final int FENSTERBREITE = 700;
	final int FENSTERHOEHE = 700;
	setSize(FENSTERBREITE, FENSTERHOEHE);
	addWindowListener(new Beschliesser());
	schreibflaeche = getContentPane();

	// die Knöpfe unten
	fussleiste = new JPanel();
	fussleiste.setLayout(new GridLayout(1,3));
	stornoKnopf = new JButton("aktuelle Pizza stornieren");
	inKorbKnopf = new JButton("Pizza in den Warenkorb");
	fertigKnopf = new JButton("Bestellung abschließen");
	stornoKnopf.addActionListener(this);
	inKorbKnopf.addActionListener(this);
	fertigKnopf.addActionListener(this);
	fussleiste.add(stornoKnopf);
	fussleiste.add(inKorbKnopf);
	fussleiste.add(fertigKnopf);
	schreibflaeche.add(fussleiste, "South");
	
	JPanel mitte = new JPanel();
	mitte.setLayout(new GridLayout(7,1));

	// Kundennummer
	JPanel kundenFeld = new JPanel();
	JLabel kundenLabel = new JLabel("Bitte geben Sie zuerst Ihre"
					+" Kundennummer an:");
	kundenEingabe = new JTextField(20);
	kundenEingabe.addActionListener(this);
	kundenFeld.add(kundenLabel);
	kundenFeld.add(kundenEingabe);
	mitte.add(kundenFeld);

	// Wahl der BasisPizza
	JPanel basisFeld = new JPanel();
	JLabel basisLabel = new JLabel("Bitte wählen Sie Ihre Pizza:");
	basisFeld.add(basisLabel);	
	basisWahl = new JComboBox(basisarten);
	basisWahl.addActionListener(this);
	basisFeld.add(basisWahl);
	basisText = new Textausgabezone(4,40);
	basisFeld.add(basisText);
	mitte.add(basisFeld);
	
	// Wahl der zusätzlichen Auflagen
	JPanel auflagenFeld = new JPanel();
	JLabel auflagenLabel = new JLabel("Möchten Sie weitere Zutaten?");
	auflagenFeld.add(auflagenLabel);	
	auflagenWahl = new JComboBox(auflagenarten);
	auflagenWahl.addActionListener(this);
	auflagenFeld.add(auflagenWahl);
	auflagenText = new Textausgabezone(4,40);
	auflagenFeld.add(auflagenText);
	mitte.add(auflagenFeld);

	// Wahl der Größe
	JPanel groessenFeld = new JPanel();
	JLabel groessenLabel = new JLabel("Welche Größe?");
	groessenFeld.add(groessenLabel);
	grossKnopf = new JRadioButton("JUMBO");
	kleinKnopf = new JRadioButton("SINGLE",true);
	grossKnopf.addActionListener(this);
	kleinKnopf.addActionListener(this);
	ButtonGroup groessenKnoepfe = new ButtonGroup();
	groessenKnoepfe.add(grossKnopf);
	groessenKnoepfe.add(kleinKnopf);
	JPanel groessen = new JPanel();
	groessen.setLayout(new GridLayout(1,2));
	groessen.add(grossKnopf);
	groessen.add(kleinKnopf);
	groessenFeld.add(groessen);
	mitte.add(groessenFeld);

	// Wahl, ob Calzone
	JPanel calzoneFeld = new JPanel();
	JLabel calzoneLabel =
	    new JLabel("Möchten Sie Ihre Pizza als Calzone?");
	calzoneFeld.add(calzoneLabel);
	calzoneKnopf = new JCheckBox("als Calzone");
	calzoneKnopf.addActionListener(this);
	calzoneFeld.add(calzoneKnopf);
	mitte.add(calzoneFeld);

	// Anzahl
	// fehlt leider

	// Ausgabezone für Bestellposten
	JPanel zoneFuerPosten = new JPanel();
	JLabel postenLabel = new JLabel("aktueller Bestellposten");
	zoneFuerPosten.add(postenLabel);
	textFuerPosten = new Textausgabezone(2,40);
	zoneFuerPosten.add(new JScrollPane(textFuerPosten));
	mitte.add(zoneFuerPosten);
	
	// Ausgabezone für den Warenkorb
	JPanel zoneFuerKorb = new JPanel();
	JLabel korbLabel = new JLabel("aktueller Warenkorb");
	zoneFuerKorb.add(korbLabel);
	textFuerKorb = new Textausgabezone(4,40);
	zoneFuerKorb.add(new JScrollPane(textFuerKorb));
	mitte.add(zoneFuerKorb);
	
	schreibflaeche.add(mitte, "Center");

	// hier müssen noch einige Variablen für den Programmablauf
	// passend gesetzt werden 
    }

    public void actionPerformed(ActionEvent ereignis){
	
	// hier muß die Logik des Programmablaufs hinein
	
    }
}


// Nur zum Schließen des Fensters
class Beschliesser extends WindowAdapter{
    public void windowClosing(WindowEvent vergisses){
	System.exit(0);
    }
}

// kleine Hilfe für die Ausgabe
class Textausgabezone extends JTextArea{

    public Textausgabezone(int x, int y){
	super(x,y);
	setLineWrap(true);
	setWrapStyleWord(true);
	setEditable(false);
    }

    public void loesche(){
	setText("");
    }
}
