// AppletClient.java

import java.rmi.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.rmi.server.*;

public class AppletClient extends Applet 
  implements ActionListener, CountClientInterface { 
  Count remCount;
  TextField tfCnt;
  Button bStart;
  String bslabel = "Start";

  public void init() { 
    try { 
      setLayout(new GridLayout(3,1));
      add(new Label("Count:"));
      tfCnt = new TextField(7);
      tfCnt.setEditable(false);
      add(tfCnt);
      bStart = new Button(bslabel); 
      bStart.addActionListener(this);
      add(bStart);
      UnicastRemoteObject.exportObject(this);
      showStatus("Binding remote object");
      remCount = (Count) Naming.lookup("Count001");
      showStatus("Registering with remote object");
      remCount.addClient(this);
      tfCnt.setText(Integer.toString(remCount.get()));
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
  
  public void paint() {
    try {
      tfCnt.setText(Integer.toString(remCount.get()));
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
  
  public void actionPerformed (ActionEvent ev) {
    try {
      showStatus("Incrementing...");
      for (int i = 0 ; i < 1000 ; i++ ) 
	remCount.increment();
      showStatus("Done");
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
  
  public void update(int val) throws RemoteException {
    showStatus("Update");
    tfCnt.setText(Integer.toString(val));
  }
}