import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *  Classe Control
 *
 * @author     Antonio Terreno
 * @created    21 giugno 2002
 */
public class ContoCorrenteControl extends JPanel implements ActionListener {


        /**
         *Costruttore della classe ContoCorrenteControl
         *
         * @param  cc  Conto Corrente
         * @param  cv  Conto Corrente Vista
         */
        public ContoCorrenteControl(ContoCorrente[] cc, ContoCorrenteInterfaceView cv) {
                super(new FlowLayout());
                conto = cc;
                contoVista = cv;

                buttonLogout = new JButton("Logout");
                buttonLogout.setEnabled(false);
                buttonLogout.addActionListener(this);

                buttonLogin = new JButton("Login");
                buttonLogin.addActionListener(this);

                button25 = new JButton("Preleva 25");
                button25.setEnabled(false);
                button25.addActionListener(this);

                button50 = new JButton("Preleva 50");
                button50.setEnabled(false);
                button50.addActionListener(this);

                buttonPreleva = new JButton("Preleva");
                buttonPreleva.setEnabled(false);
                buttonPreleva.addActionListener(this);

                button100 = new JButton("Preleva 100");
                button100.setEnabled(false);
                button100.addActionListener(this);

                button150 = new JButton("Preleva 150");
                button150.setEnabled(false);
                button150.addActionListener(this);

                buttonVersa = new JButton("Versa");
                buttonVersa.setEnabled(false);
                buttonVersa.addActionListener(this);

                add(button25);
                add(button50);
                add(button100);
                add(button150);
                add(buttonVersa);
                add(buttonPreleva);
                add(buttonLogout);
                add(buttonLogin);

        }


        /**
         *  Setta a true/false i bottoni dell'oggetto ContoCorrenteControl
         *
         * @param  value  Il nuovo valore dei bottoni
         */
        public void setButtons(boolean value) {
                button25.setEnabled(value);
                button50.setEnabled(value);
                button100.setEnabled(value);
                button150.setEnabled(value);
                buttonLogout.setEnabled(value);
                buttonPreleva.setEnabled(value);
                buttonVersa.setEnabled(value);
                contoVista.setFields(value);
        }


        /**
         *  Cattura l'azione
         *
         * @param  event  Evento Azione
         */
        public void actionPerformed(ActionEvent event) {
                Object source = event.getSource();
                if (source == buttonLogin) {
                        try {
                                buttonLogin.setEnabled(false);
                                setButtons(true);
                                loginCC = contoVista.getTextCC();
                                contoVista.displaySaldo(loginCC);
                        } catch (RuntimeException err) {
                                contoVista.setError(err.getMessage());
                        }
                } else if (source == buttonLogout) {
                        buttonLogin.setEnabled(true);
                        setButtons(false);
                } else if (source == button25) {
                        try {
                                ContoCorrente.preleva(25, loginCC);
                                contoVista.displaySaldo(loginCC);
                        } catch (MovimentoErrato me) {
                                contoVista.setError(me.getErr());
                        }
                } else if (source == button50) {
                        try {
                                ContoCorrente.preleva(50, loginCC);
                                contoVista.displaySaldo(loginCC);
                        } catch (MovimentoErrato me) {
                                contoVista.setError(me.getErr());
                        }
                } else if (source == button100) {
                        try {
                                ContoCorrente.preleva(100, loginCC);
                                contoVista.displaySaldo(loginCC);
                        } catch (MovimentoErrato me) {
                                contoVista.setError(me.getErr());
                        }
                } else if (source == button150) {
                        try {
                                ContoCorrente.preleva(150, loginCC);
                                contoVista.displaySaldo(loginCC);
                        } catch (MovimentoErrato me) {
                                contoVista.setError(me.getErr());
                        }
                } else if (source == buttonPreleva) {
                        int valore = contoVista.getTextPrelievo();
                        try {
                                ContoCorrente.preleva(valore, loginCC);
                                contoVista.displaySaldo(loginCC);
                        } catch (MovimentoErrato me) {
                                contoVista.setError(me.getErr());
                        }
                } else if (source == buttonVersa) {
                        int valore = contoVista.getTextVersamento();
                        try {
                                ContoCorrente.deposita(valore, loginCC);
                                contoVista.displaySaldo(loginCC);
                        } catch (MovimentoErrato me) {
                                contoVista.setError(me.getErr());
                        }
                }
                contoVista.updateView();
        }

        private ContoCorrente[] conto;
        private ContoCorrenteInterfaceView contoVista;

        private JButton button25;
        private JButton button50;
        private JButton button100;
        private JButton button150;
        private JButton buttonLogin;
        private JButton buttonLogout;
        private JButton buttonPreleva;
        private JButton buttonVersa;

        private int loginCC;
        private String loginName;

}