package visualisationListe;
import java.applet.Applet;
import java.awt.Button;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;

@SuppressWarnings("serial")
/**
 * Cette classe crée une Applet destinée à proposer à l'utilisateur deux boutons, un pour
 * demander l'ajout, un pour demander l'enlèvement, et une zone de saisie pour qu'il indique la 
 * valeur qu'il veut ajouter ou enlever
 */
public class Gestion extends Applet{
	TextField zoneDeSaisie;
	Button ajouter;
	Button enlever;
	int nouvelleValeur; boolean valeurConnue;
	MontreListe leDessin;
	
/**
 * appelée lors de l'initialisation de l'applet, cette méthode prépare les boutons et la zone de saisie
 */
	public void init(){
		ajouter=new Button("Ajouter une valeur");
		add(ajouter);
		enlever=new Button("Enlever une valeur");
		add(enlever); 
		zoneDeSaisie = new TextField(5);
		zoneDeSaisie.setFont(new Font("Times", Font.BOLD, 40));
		valeurConnue=false;
		add(zoneDeSaisie);
		setLayout(new GridLayout(3, 1));
		}
	
/**
 * appelée au lancement de l'applet par le navigateur, cette méthode attend que l'autre applet
 * soit initialisée et lancée, puis associe à chaque bouton un réacteur qui transmettra les
 * demandes de l'utilisateur à l'autre applet
 */
	public void start(){
		while (leDessin==null) leDessin=(MontreListe) (getAppletContext().getApplet("Dessin"));
		while (!leDessin.isActive()) System.out.println("On attend...");
		ajouter.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if (!valeurConnue) return;
				leDessin.ajoute(nouvelleValeur);
				zoneDeSaisie.setText("0");
				valeurConnue=false;
				}
			});
		enlever.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				if (!valeurConnue) return;
				leDessin.enleve(nouvelleValeur);
				zoneDeSaisie.setText("0");
				valeurConnue=false;
				}
			});
		zoneDeSaisie.addTextListener(new TextListener(){
			public void textValueChanged(TextEvent e){
				try{
					nouvelleValeur = Integer.parseInt(((TextField)e.getSource()).getText());
					valeurConnue=true;
				}
				catch(Exception ex){
					((TextField)(e.getSource())).setText("0");
					valeurConnue=false;
					}
				}
			});
		}
	}