//------------// Introduction to Programming Using Java: An Object-Oriented Approach//	Arnow/Weiss//------------import java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;public class TowerApplet extends Applet                              implements ActionListener {    public void init() {        setBackground(new Color(200,255,255));        this.setLayout(new BorderLayout(20,2));        td = new TowerDisplay();        add("Center",td);        startButton = new Button("start");        startButton.addActionListener(this);        pauseButton = new Button("pause");        pauseButton.addActionListener(this);        Panel pb = new Panel();        pb.setLayout(new BorderLayout(2,2));        pb.add("North",startButton);        pb.add("South",pauseButton);        numDisks = new TextField(" 7");        numDisks.setFont(new Font("Courier",Font.BOLD,10));        Label numDisksLabel = new Label(" Number of disks:",Label.RIGHT);        Label stepDelayLabel = new Label("Delay (millisecs):",Label.RIGHT);        numDisksLabel.setFont(new                              Font("Courier",Font.BOLD,10));        stepDelayLabel.setFont(new                              Font("Courier",Font.BOLD,10));        Panel pn = new Panel();        pn.setLayout(new BorderLayout(2,2));        pn.add("East",numDisks);        pn.add("West",numDisksLabel);        stepDelay = new TextField("1000");        stepDelay.addActionListener(this);        stepDelay.setFont(new                           Font("Courier",Font.BOLD,10));        Panel ps = new Panel();        ps.setLayout(new BorderLayout(2,2));        ps.add("East",stepDelay);        ps.add("West",stepDelayLabel);        Panel pp = new Panel();        pp.setLayout(new BorderLayout(2,2));        pp.add("North",pn);        pp.add("South",ps);        Panel p = new Panel();        p.setLayout(new                     FlowLayout(FlowLayout.CENTER,50,20));        p.add(pb);        p.add(pp);        p.setBackground(new Color(255,200,200));        add("South",p);    }    public void actionPerformed(ActionEvent ae) {        String whichButton = ae.getActionCommand();        if (whichButton.equals("start"))           handleStart();        else if (whichButton.equals("restart"))           handleRestart();        else if (whichButton.equals("pause"))           handlePause();        else if (whichButton.equals("resume"))           handleResume();        else           handleKeyboard();    }    private void handleStart() {        int nDisks =                Integer.parseInt(numDisks.getText().trim());        handleKeyboard();        towersTicker = new TowersOfHanoiThread(td, nDisks);        towersTicker.start();        startButton.setLabel("restart");        pauseButton.setLabel("pause");    }    private void handleRestart() {        towersTicker.ourStop();        handleStart();    }    private void handlePause() {        towersTicker.ourSuspend();        pauseButton.setLabel("resume");    }    private void handleResume() {        towersTicker.ourResume();        pauseButton.setLabel("pause");    }    private void handleKeyboard() {        int sDelay =               Integer.parseInt(stepDelay.getText().trim());        td.setDelay(sDelay);    }    private   Button                  startButton,                                           pauseButton;    private   TextField               numDisks, stepDelay;    private   TowerDisplay            td;    private   TowersOfHanoiThread     towersTicker = null;    private   int                     source = 1;    private   int                     target = 3;}