import java.util.ResourceBundle;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;

public class EventHandle implements ActionListener {
  //Data manipulation variables 
  private int which;
  private String mess, first = null;
  protected DataModel dataModel;
  protected String returned;
  //Data Model
  protected static BankApp frame;
  protected ResourceBundle messages=null;

  public EventHandle(BankApp frame, ResourceBundle messages) {
    this.frame = frame;
    this.messages = messages;
    this.dataModel = dataModel;
    frame.view.addActionListener(this);
    frame.add.addActionListener(this);
    frame.update.addActionListener(this);
    frame.OK.addActionListener(this);
    frame.cancel.addActionListener(this);
    dataModel = new DataModel(frame, messages);
  }

  public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
//View customer data
    if(source == frame.view) {
      frame.clearMessages();
      String vbutton = messages.getString("ViewButton");
      frame.messlab5.setText(" " + vbutton); 
      mess = new String(messages.getString("EnterCustIDMess"));
      returned = JOptionPane.showInputDialog(frame, mess);
      if(returned != null) {
        which = 3;
        dataModel.createCustInf(which, returned);
      }
    }
//Add new customer
    if(source == frame.add){
      frame.clearMessages();
      String abutton = messages.getString("AddButton");
      frame.messlab5.setText(" " + abutton);
      which = 1;
      dataModel.createCustInf(which, returned);
    }
//Update customer data
    if(source == frame.update){
      frame.clearMessages();
      String ubutton = messages.getString("UpdateButton");
      frame.messlab5.setText(" " + ubutton);
      mess = new String(messages.getString("EnterCustIDMess"));
      returned = JOptionPane.showInputDialog(frame, mess); 
      if(returned != null) {
        which = 2;
        dataModel.createCustInf(which, returned);
      }
    }
//Process data
    if(source == frame.OK) {
      if(which == 3) { //view data
	frame.resetPanelTwo();
      } else if((which == 1) || (which == 2)) { //add or update data
       //Test data and write to database
        int complete = dataModel.checkData(returned, which);
      //If data okay, clear Panel 2
        if(complete == 0) {
          if(which == 1) {
            JOptionPane.showMessageDialog(frame, dataModel.custID, 
			"Customer ID", JOptionPane.PLAIN_MESSAGE);
          }
     	  frame.resetPanelTwo();
        }
      //If errors, redisplay data to user 
      //and leave error messages on display
        if(complete == 1) {
          frame.createEditableFields(dataModel.first, dataModel.last, dataModel.mid, 
		dataModel.str, dataModel.cty, dataModel.st, dataModel.zp, 
		dataModel.tel, dataModel.mail);
        }
      }
    }
//Clear data on cancel button press
    if(source == frame.cancel) {
      frame.resetPanelTwo();
    }
  } 
}
