import java.applet.*; import java.awt.*; import java.util.*; import Account; import CheckingAccount; import SavingsAccount; import CDAccount; import LoanAccount; import Exceptions; import BankControls; import AccountControls; import ErrorDialog; import TransferDialog; import NewAccountDialog; public class Bank extends Applet { // Vector with the current accounts public BankAccounts accounts=new BankAccounts(); AccountControls accountControls; BankControls bankControls; TextArea output; Frame parent; // dialog windows TransferDialog transferDlg; ErrorDialog errorDlg; NewAccountDialog newaccountDlg; boolean error=false, transfer=false, newacct=false; // Initialization method public void init () { setLayout(new BorderLayout(5,5)); // create and shows the account controls accountControls= new AccountControls(); add("North",accountControls); // create the output area output=new TextArea(5,30); add("Center",output); parent=new Frame(); // create empty frame to enclose dialogs // create and shows the banking controls (add/delete account etc.) bankControls= new BankControls(); add("South",bankControls); // show controls accountControls.show(); bankControls.show(); } // private, border drawing method public void paint(Graphics g) { Rectangle r=bounds(); g.setColor(Color.darkGray); g.draw3DRect(r.x+2, r.y+2, r.width-4, r.height-4, true); super.paint(g); } // main event loop public boolean handleEvent(Event event) { if(event.id==Event.ACTION_EVENT) { if(event.target==accountControls.submit) { // a new operation has been requested for current account // release dialog windows (if active) if(error) { errorDlg.dispose(); error=false; } if(transfer) { transferDlg.dispose(); transfer=false; } if(newacct) { newaccountDlg.dispose(); newacct=false; } if(accounts.isEmpty()) { errorDlg= new ErrorDialog(parent, "No accounts have been defined"); errorDlg.show(); error=true; return true; } else { // perform requested operation (deposit/withdraw or transfer) // on the account String item=new String(accountControls.accountOperation.getSelectedItem()); Account acct=null; Double doubleNo=new Double(0.0); if(item.equals(new String("Transfer"))) { // transfer operation requested transferDlg= new TransferDialog(parent, accounts, output); transferDlg.show(); transfer=true; } // end of Transfer else if(item.equals(new String("Deposit"))) { // deposit operation requested try { acct=accounts.getAccount(accountControls.accountChoice.getSelectedItem()); } catch (Exception e) { Error("Account does not exist!"); } try { doubleNo=new Double(accountControls.ammount.getText()); acct.Deposit(doubleNo.doubleValue()); } catch (Exception e) { Error("Invalid deposit request"); } return true; } // end of Deposit else if(item.equals(new String("Withdraw"))) { // withdraw operation requested try { acct=accounts.getAccount(accountControls.accountChoice.getSelectedItem()); } catch (Exception e) { Error("Account does not exist!"); } try { doubleNo=new Double(accountControls.ammount.getText()); acct.Withdraw(doubleNo.doubleValue()); } catch (Exception e) { Error("Invalid witdraw request"); } return true; } // end of Withdraw else if(item.equals(new String("Balance"))) { // balance operation requested try { acct=accounts.getAccount(accountControls.accountChoice.getSelectedItem()); } catch (Exception e) { Error("Account does not exist!"); } acct.Output(); return true; } // end of Balance } // end of "else" statement (ie. there ARE defined accounts) return true; } // end of submit request operation else if(event.target==bankControls.newAccount) { // request for creation of a new account newaccountDlg=new NewAccountDialog(parent, this, output); newaccountDlg.show(); newacct=true; return true; } else if(event.target==bankControls.advanceOneDay) { // request for day advance accounts.AdvanceDate(); return true; } else if(event.target==bankControls.advanceOneMonth) { // request for month advance for(int i=0;i<30;i++) accounts.AdvanceDate(); return true; } } // end of event loop return false; } public void Error(String message) { output.appendText(message); } }