// Original version j.n.magee 11/11/96 // Revised b.s.logan 14/02/2002 import java.awt.*; import java.applet.*; public class Garden extends Applet { Button goButton = new Button(" Go "); Turnstile west; Turnstile east; Counter counter; NumberCanvas counterD = new NumberCanvas("Counter"); NumberCanvas westD = new NumberCanvas("West",Color.green); NumberCanvas eastD = new NumberCanvas("East",Color.green);; public final static int MAX = 20; public void init() { super.init(); // Set up Button Panel p0 = new Panel(); p0.add(goButton); goButton.setFont(new Font("Helvetica", Font.BOLD, 24)); Panel p1= new Panel(); p1.setLayout(new BorderLayout()); p1.add("Center", p0); // Set up Display Panel p2 = new Panel(); counterD.resize(150, 100); westD.resize(100, 100); eastD.resize(100, 100); p2.add(westD); p2.add(counterD); p2.add(eastD); // Arrange Applet display setLayout(new BorderLayout()); add("Center", p2); add("South", p1); } public boolean handleEvent(Event event) { if (((event.id == event.ACTION_EVENT) && event.target == goButton) && ((west == null && east == null) || (!west.isAlive() && !east.isAlive()))) { counter = new Counter(counterD); west = new Turnstile(westD, counter); east = new Turnstile(eastD, counter); west.start(); east.start(); return true; } else return super.handleEvent(event); } } class Counter { int value = 0; NumberCanvas display; Counter(NumberCanvas n) { display = n; display.setvalue(value); } void increment() { value = value + 1; //write[v+1] display.setvalue(value); } } class Turnstile extends Thread { NumberCanvas display; Counter people; Turnstile(NumberCanvas n, Counter c) { display = n; people = c; } public void run() { try{ display.setvalue(0); for (int i=1; i <= Garden.MAX; i++) { Thread.sleep(500); //0.5 second display.setvalue(i); people.increment(); } } catch (InterruptedException e) {} } }