// Langage JAVA
// Projet 2
//
// Communication entre applets
//
// Christophe Boyanique
// Emmanuel Pinard
// Avril 1999
//
//
// Applet de saisie des parametres de la courbe

import java.lang.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class saisie extends Applet
{
  // Les elements graphiques (prives)
  private Panel p_params;
  private Panel p_send;
  private Button b_send;
  private TextField t_S;
  private TextField t_n;
  private TextField t_tf;
  private TextField t_dt;

  // Parametres de la courbe
  private int S;
  private int n;
  private int tf;
  private int dt;

  // Constructeur
  public saisie()
  {
  }

  public void init()
  {
    // Initialisation des parametres
    S  = 10;
    n  = 400;
    tf = 2000;
    dt = 50;

    // Creation de l'interface graphique
    p_params = new Panel();
    p_params.setLayout(new GridLayout(4, 2));
    t_S  = new TextField(Integer.toString(S), 5);
    t_n  = new TextField(Integer.toString(n), 5);
    t_tf = new TextField(Integer.toString(tf), 5);
    t_dt = new TextField(Integer.toString(dt), 5);

    p_params.add( new Label(" Impulsion initiale (S):") );
    p_params.add( t_S );
    p_params.add( new Label(" Nombre de pas d'espace (n):") );
    p_params.add( t_n );
    p_params.add( new Label(" Nombre d'iterations (tf):") );
    p_params.add( t_tf );
    p_params.add( new Label(" Pas de temps d'affichage (dt):") );
    p_params.add( t_dt );

    p_send = new Panel();
    p_send.setLayout(new BorderLayout());
    b_send = new Button("Envoyer");
    b_send.addActionListener(new evt_adaptateur(evt_adaptateur.SEND, new evt_delegue(), (Object)this));
    p_send.add( "Center", b_send );

    setLayout(new BorderLayout());
    add("Center", p_params);
    add("South", p_send);
  }

  public void start()
  {
  }

  public void stop()
  {
  }

  // Methode qui envoie les parametres a l'autre applet
  // Fonction appellee par le delegue
  void send_params()  // friendly
  {
    Applet  app;
    courbe  app_courbe;
    int     dum;  // Variable temporaire de stockage

    try
    {
      // Recupere le contexte de l'applet courbe de la meme page web
      app = getAppletContext().getApplet("a_courbe");
      // Cast le contexte vers la classe courbe
      app_courbe = (courbe)app;

      // Recupere les parametres
      try { dum  = Integer.parseInt(t_S.getText()); S=dum; }
      // On catche les erreurs au cas ou la chaine de caracteres
      // contiendrait des caracteres non numeriques
      catch (NumberFormatException e)
      { t_S.setText(Integer.toString(S)); }

      try { dum  = Integer.parseInt(t_n.getText()); n=dum; }
      catch (NumberFormatException e)
      { t_n.setText(Integer.toString(n)); }

      try { dum  = Integer.parseInt(t_tf.getText()); tf=dum; }
      catch (NumberFormatException e)
      { t_tf.setText(Integer.toString(tf)); }

      try { dum  = Integer.parseInt(t_dt.getText()); dt=dum; }
      catch (NumberFormatException e)
      { t_dt.setText(Integer.toString(dt)); }

      // Appelle la methode receive_params de la classe courbe pour lui
      // envoyer les parametres
      app_courbe.receive_params(S, n, tf, dt);
    }
    // On catch l'erreur NullPointer au cas ou l'autre applet n'ait pas
    // ete trouvee
    catch (NullPointerException e) { }
  }
}

