package client.control.probleme;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import client.Application;
import client.model.problem.Resultat;
import client.view.Probleme.PanelConsulterProbleme;

/** <u><b>Explication générale de la classe :</b></u>
 * <P>Cette classe permet de créer le controleur de la JComboBox des résultats
 *
 * @author Dream Team - ING2
 */
public class EcouteurBoxResultat implements ItemListener {

	//Déclaration des variables
	PanelConsulterProbleme pcb;

	/**<u><i>Explication générale de la méthode :</i></u> 
	 * <P> Cette méthode est un constructeur On récupère une référence du panel
	 * 
	 */
	public EcouteurBoxResultat(PanelConsulterProbleme pcb) {
		this.pcb = pcb;
	}

	/**
	 * <u><i>Explication générale de la méthode :</i></u> 
	 * <P> Cette méthode permet de gérer les évènements liés à la box
	 * 
	 * @param e Evènement de la box
	 * 
	 */
	public void itemStateChanged(ItemEvent e) {

		for (Resultat result : Application.getInstance().getResultats()) {

			if (e.getItem().toString().equals(
					result.getNomResultat())) {

				pcb.getPanres().getResultat().setText(
						"" + result.getNomResultat());
				pcb.getPanres().getProbleme().setText(
						"" + result.getNomProbleme());
				pcb.getPanres().getMethode().setText(
						"" + result.getNomMethode());
				pcb.getPanres().getComplexite().setText(
						"" + result.getComplexite());
				pcb.getPanres().getDate().setText("" + result.getDate());
				pcb.getPanres().getEpsilon().setText("" + result.getEpsilon());
				pcb.getPanres().getErrAbsolue().setText(
						"" + result.getErrAbsolue());
				pcb.getPanres().getMaxIteration().setText(
						"" + result.getMaxIteration());
				pcb.getPanres().getPas().setText("" + result.getPas());
				pcb.getPanres().getPointDeDepart().setText(
						"" + result.getPointDeDepart());
				pcb.getPanres().getPointValOptim().setText(
						"" + result.getPointValOptim());
				pcb.getPanres().getValeurResultat().setText(
						"" + result.getValeurResultat());

				//On MAJ le panel
				pcb.getPanres().updateUI();
				pcb.getScrollRes().setVisible(true);
				pcb.getScrollRes().updateUI();

			} else {
				//On n'affiche pas le panel des résultats si on a les "----"
				pcb.getScrollRes().setVisible(false);
			}
		}
	}
}
