package client.view.benchmarks;

//------------------------------------Importations des différentes bibliothèques---------------------------------//

import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

import client.Application;
import client.control.benchmark.EcouteurLancerBenchmarks;
import client.model.problem.Methode;
import client.model.problem.Probleme;

//-----------------------------------Fin Importations des différentes bibliothèques------------------------------//







//-------------------------------------------------Début de la classe------------------------------------------------//

/**<u><b>Explication générale de la classe :</b></u>
 * <P>Cette classe permet de créer le panel résultat d'un benchmark.
 *
 * @author Dream Team - ING2
 */
public class PanelChoixBenchmark extends JPanel {

    //Déclarations des variables.
    private JLabel titreProblemeBench, titreMethodeBench;
    private TitledBorder titleInfo;
    private String[] testMethodeBox = {
    		Character.toString((char)0x2022) + Methode.METHODE_PAS_FIXE,
    		Character.toString((char)0x2022) + Methode.METHODE_PAS_OPTIMAL,
    		Character.toString((char)0x2022) + Methode.METHODE_NEWTON,
    		Character.toString((char)0x2022) + Methode.METHODE_PROJECTION,
    		Character.toString((char)0x2022) + Methode.METHODE_LAGRANGE,
    		Character.toString((char)0x2022) + Methode.METHODE_PENALISATION,
    		Character.toString((char)0x2022) + Methode.METHODE_RECUIT_SIMULE,
    		Character.toString((char)0x2022) + Methode.METHODE_ALGO_EVOLUTIONNAIRE,
    		Character.toString((char)0x2022) + Methode.METHODE_TABOU};
    private JComboBox problemeBox;
    private JList listOfResultat;
    private JButton lancerBenchmarks;

   /**<u><i>Explication de la méthode :</i></u>
    * <P> Constructeur permettant de créer le panel des choix de méthodes/problèmes.
    * 
    */
    public PanelChoixBenchmark(){

        //Déclarations des variables.
        titleInfo = new TitledBorder("Problèmes - Benchmarks");
        titleInfo.setTitleColor(Color.BLUE);
        this.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.BLUE));
        this.setBorder(BorderFactory.createTitledBorder(titleInfo));

        //Problème
        titreProblemeBench = new JLabel("Problème :");
        titreProblemeBench.setBounds(50, 50, 550, 15);
        add(titreProblemeBench);

        problemeBox = new JComboBox();
        remplirProblemeBox();
        problemeBox.setBounds(50, 70, 250, 20);
        add(problemeBox);

        //Méthodes
        titreMethodeBench = new JLabel("Methode(s) :");
        titreMethodeBench.setBounds(50, 150, 550, 15);
        add(titreMethodeBench);

        listOfResultat = new JList(testMethodeBox);
        listOfResultat.setBackground(new Color(234, 232, 233));
        listOfResultat.setBounds(50, 170, 300, 230);
        listOfResultat.setAutoscrolls(true);
        add(listOfResultat);

        //Bouton pour lancer le benchmark
        lancerBenchmarks = new JButton("Lancer Benchmark");
        lancerBenchmarks.setBounds(100, 410, 150, 25);
        lancerBenchmarks.addActionListener(new EcouteurLancerBenchmarks());
        add(lancerBenchmarks);

        this.setBackground(new Color(234, 232, 233));
    }    
    
    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de remplir la JComboBox des problèmes
     * 
     */
    public final void remplirProblemeBox(){
    	problemeBox.removeAllItems();
    	problemeBox.addItem("--------------------------------------------");
        for(Probleme problem : Application.getInstance().getProblemes()){
        	problemeBox.addItem(problem.getNomProbleme());
        }
    }
    
    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de récupérer la JComboBox des problèmes
     * 
     * @return la JComboBox des problèmes
     * 
     */
	public JComboBox getProblemeBox() {
		return problemeBox;
	}

	/**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de récupérer la liste des résultats
     * 
     * @return la liste des résultats
     * 
     */
	public JList getListOfResultat() {
		return listOfResultat;
	}

}

//-------------------------------------------------Fin de la classe-------------------------------------------------//
