/** Handelsdialog ist eine Klasse um das Kaufen und Verkaufen von Waren innerhalb eines
 *  geordneten Dialogs möglich zu machen.
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;


class HandelsDialog extends JDialog implements ActionListener {

	long verkaufsAnzahl=0;
	JTextField zuverkaufen; 
	JTextField geldAnzeige;
	JTextField anzahlAnzeige;
	JTextField preisAnzeige;
	long warenAnzahlAlt = 0;
  long warenAnzahl = 0;
	long preis = 0;
  long geld = 0;
  
  
/** Mit der Methode getInput kann das Resultat der Transaktion abgefragt werden.
 *  Käufe geben einen positiven, Verkäufe eine negativen Wert an. Wenn keine Transaktion
 *  gestartet wurde gibt getInput den Wert 0 zurück.
 */
	public long getInput() {
		long dummy = warenAnzahl - warenAnzahlAlt;
		warenAnzahlAlt = warenAnzahl;
		return dummy;
	}
	
	
	public void zeigeDialog(Ware w, long anz, long g) {
		warenAnzahl = w.gibAnzahl();
		warenAnzahlAlt = warenAnzahl;
    verkaufsAnzahl = anz;
		preis = w.gibPreis();
		geld = g;		
	  zuverkaufen.setText(String.valueOf(anz));
	  geldAnzeige.setText(String.valueOf(g));
	  anzahlAnzeige.setText(w.gibAnzahlString());
	  preisAnzeige.setText(w.gibPreisString());
	  setVisible(true);
  }
	
/** Dem Handelsdialog soll der Frame eigner mit übergeben werden. Dazu kommt ein 6 Felder 
 *  bla
 */	
 

	public HandelsDialog (JFrame eigner, String t, Ware w, long v, long g) {
		super(eigner, true);
				
		String titel = t;
		warenAnzahl = w.gibAnzahl();
		warenAnzahlAlt = warenAnzahl;
		verkaufsAnzahl = v;
		preis = w.gibPreis();
		geld = g;

		Border linie = BorderFactory.createLineBorder(Color.black);
		Border boxBorder = BorderFactory.createTitledBorder(linie,titel);

		JButton v1000 = new JButton("-1000");
		v1000.addActionListener(this);
		JButton v100 = new JButton("-100");
		v100.addActionListener(this);
		JButton v10 = new JButton("-10");
		v10.addActionListener(this);
		JButton v1 = new JButton("-1");
		v1.addActionListener(this);
		
		JPanel verkaufen = new JPanel(new GridLayout(4,1));
		verkaufen.add(v1000);
		verkaufen.add(v100);
		verkaufen.add(v10);
		verkaufen.add(v1);
		
		JPanel anzeige = new JPanel(new GridLayout(4,2));
		// anzeige.setBorder(linie);
		anzeige.add(new JLabel(" zu verkaufen "));
  	zuverkaufen = new JTextField(String.valueOf(verkaufsAnzahl));
  	zuverkaufen.setEditable(false);
		anzeige.add(zuverkaufen);
		
		anzeige.add(new JLabel(" "+w.gibName()+" kostet "));
	  preisAnzeige = new JTextField(String.valueOf(preis));
	  preisAnzeige.setEditable(false);
		anzeige.add(preisAnzeige);
		
		anzeige.add(new JLabel(" Sie haben "));
	  anzahlAnzeige = new JTextField(w.gibAnzahlString());
	  anzahlAnzeige.setEditable(false);
		anzeige.add(anzahlAnzeige);

		anzeige.add(new JLabel(" Geld "));
	  geldAnzeige = new JTextField(String.valueOf(geld));
	  geldAnzeige.setEditable(false);
		anzeige.add(geldAnzeige);

		
		JButton k1000 = new JButton("+1000");
		k1000.addActionListener(this);
		JButton k100 = new JButton("+100");
		k100.addActionListener(this);
		JButton k10 = new JButton("+10");
		k10.addActionListener(this);
		JButton k1 = new JButton("+1");
		k1.addActionListener(this);
		
		JPanel kaufen = new JPanel(new GridLayout(4,1));
		kaufen.add(k1000);
		kaufen.add(k100);
		kaufen.add(k10);
		kaufen.add(k1);
		
		JPanel rahmen = new JPanel(new BorderLayout(20,20));
		rahmen.setBorder(boxBorder);
		rahmen.add("West",verkaufen);
		rahmen.add("Center",anzeige);
		rahmen.add("East",kaufen);

		JPanel buttons = new JPanel(new FlowLayout());
		JButton cancel = new JButton("Abbrechen");
		cancel.addActionListener(this);
		JButton ok = new JButton("Ok");
		ok.addActionListener(this);
		buttons.add(ok);
		buttons.add(cancel);
		
		JPanel gesamt = new JPanel(new BorderLayout());
		gesamt.add("North",rahmen);
		gesamt.add("South",buttons);
		
		getContentPane().add(gesamt);
		setLocation(300,200);
		pack();
	}
	
	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		int anz = 0;
		
		if ((cmd == "Ok")|(cmd == "Abbrechen")) {
			 setVisible(false);
			 if (cmd == "Abbrechen") warenAnzahlAlt = warenAnzahl;
		}
		else {
			anz = Integer.parseInt(cmd.substring(1,cmd.length()));
			if (cmd.startsWith("+")) {
				if (verkaufsAnzahl >= anz) {
				  geld = geld - (preis*anz);
				  geldAnzeige.setText(String.valueOf(geld));
				  warenAnzahl = warenAnzahl + anz;
				  anzahlAnzeige.setText(String.valueOf(warenAnzahl));
				  verkaufsAnzahl = verkaufsAnzahl - anz;
				  zuverkaufen.setText(String.valueOf(verkaufsAnzahl));
				}
				else {
				  geld = geld - (preis*verkaufsAnzahl);
				  geldAnzeige.setText(String.valueOf(geld));
				  warenAnzahl = warenAnzahl + verkaufsAnzahl;
				  anzahlAnzeige.setText(String.valueOf(warenAnzahl));
				  verkaufsAnzahl = 0;
				  zuverkaufen.setText(String.valueOf(verkaufsAnzahl));					
				}
			}
			else {
				if (warenAnzahl >= anz) {
					geld = geld + (preis*anz);
					geldAnzeige.setText(String.valueOf(geld));
					warenAnzahl = warenAnzahl - anz;
					anzahlAnzeige.setText(String.valueOf(warenAnzahl));
					verkaufsAnzahl = verkaufsAnzahl + anz;
					zuverkaufen.setText(String.valueOf(verkaufsAnzahl));
				}
				else {
					geld = geld + (preis*warenAnzahl);
					geldAnzeige.setText(String.valueOf(geld));
					warenAnzahl = 0;
					anzahlAnzeige.setText(String.valueOf(warenAnzahl));
					verkaufsAnzahl = verkaufsAnzahl + warenAnzahl;
					zuverkaufen.setText(String.valueOf(verkaufsAnzahl));					
				}
			}
		}
  }
}
