import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import java.applet.Applet;


public class AppletClient extends Applet
   implements ActionListener {

 // remote interface declaration
 private CompteDistant accesDistant;
 private Button Depot, Retrait;
 private Label Solde;
 private TextField saisieMontant;
 private float MontantSolde;
 
 //constructeur
 public AppletClient(){
  connexionServeur();
  demandeSolde();
  creeInterfaceGraphique();
 }
 
 public void connexionServeur(){
 // recherche de nom dans les registres
   try {
     accesDistant=(CompteDistant) 
     Naming.lookup("//cuisuna.unige.ch/gestionCompteDistant");
   }
   catch (Exception e) {
     System.out.println("Exeception "+ e.getMessage());
   }
 }
 public void demandeSolde(){
   try {
     MontantSolde=accesDistant.litSolde();
   }
   catch (RemoteException e) {
     System.out.println("Exception "+ e.getMessage());
   }
 }
 
 public void creeInterfaceGraphique(){
   setLayout( new BorderLayout());
   Panel p=new Panel();
   p.setLayout( new FlowLayout(FlowLayout.LEFT));
   
   Solde=new Label(" Solde:  ");
   Solde.setText("  Solde: CHF "+MontantSolde);
   add("North",Solde);

   p.add(new Label("montant : "));
   saisieMontant=new TextField(3);
   p.add(saisieMontant);
   add("Center", p);
   
   p=new Panel();
   Depot= new Button("Depot");
   p.add(Depot);
   Depot.addActionListener(this);
   Retrait= new Button("Retrait");
   p.add(Retrait);
   Retrait.addActionListener(this);
   add("South",p);    
 }
 
public void actionPerformed(ActionEvent e) {
  String arg = e.getActionCommand();
  float solde, montant;
  try {
    montant = (new Float(saisieMontant.getText()).floatValue());
    }   
  catch (NumberFormatException ex) {
     montant=0;
   }

  if ("Depot".equals(arg)) {
       try {
       solde= accesDistant.depot(montant);
       Solde.setText("  Solde: CHF "+solde);
       }
       catch (RemoteException re) {
            System.out.println("Exception "+ re.getMessage());
       }
  }
  else if ("Retrait".equals(arg)) {
       try {
          solde= accesDistant.retrait(montant);
          Solde.setText("  Solde: CHF "+solde);
       }
       catch (RemoteException re) {
            System.out.println("Exception "+ re.getMessage());
       }
  }
 }
 
 public static void main(String args[]) {
   try {
        Frame f = new Frame("Compte Client");
        AppletClient appletClient = new AppletClient();
        appletClient.init();
        appletClient.start();

        f.add("Center", appletClient);
        f.setSize(300, 300);
        f.show();
      }
    catch (Exception e) {
      System.out.println("Exception "+ e.getMessage());
    }
 }
}