// ATM Simulation - applet

ATM Simulation - applet


/*
 * Example ATM simulation - file ATMApplet.java
 *
 * This file contains the main program for the ATM simulation - applet version
 *
 * Copyright (c) 1997 - Russell C. Bjork
 *
 */
 
import java.applet.Applet;
import java.awt.*;
import atm.ATM;
import atm.Bank;
import atm.util.Money;

public class ATMApplet extends Applet implements Runnable
  {
    // Applet initialization.
    // Create the ATM and simulated bank, plus the GUI - using this as its
    // container, plus a thread to run the simulation (which executes the run()
    // method of this class.)
    
    public void init()
      { 
        _theBank = new Bank();
        _theATM = new ATM(ATM_NUMBER, ATM_LOCATION, _theBank, this);
        
        // If we are running in a frame we can get to, then set its title bar
        // to our title
        
        Component c = this;
        while (c.getParent() != null) c = c.getParent();
        if (c instanceof Frame)
          { ((Frame) c).setTitle("ATM number " + ATM_NUMBER + " at " + ATM_LOCATION);
            ((Frame) c).setResizable(false);
          }
          
        _theThread = new Thread(this);
        _theThread.start();
      }
    
    // stop() and start() are called as the applet is scrolled on and off the
    // screen.  Simply suspend and resume the thread.
    
    public void start()
      { _theThread.resume();
      }
      
    public void stop()
      { _theThread.suspend();
      }
   
 
    // This method is run by the thread.  Since there is no provision for an
    // applet to terminate itself, we let the operator turn the machine on and
    // off as often as desired.
    
    public void run()
      {
        while (true)
          { Money initialCash = _theATM.startupOperation();
            _theATM.serviceCustomers(initialCash);
          }
      }

    private Bank _theBank;
    private ATM _theATM;
    private Thread _theThread;
    
    // Private constants
    
    private static final int ATM_NUMBER = 42;
    private static final String ATM_LOCATION = "GORDON COLLEGE";      
  }

//