package client.view.Probleme;

import java.awt.Color;

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

import client.Application;
import client.control.probleme.ControleurBoutonConsulter;
import client.control.probleme.ControleurBoutonExecuterPb;
import client.control.probleme.ControleurBoutonModifier;
import client.control.probleme.ControleurBoutonSupprimerProbleme;
import client.control.probleme.ControleurComboBox;
import client.model.problem.Probleme;



/** <u><b>Explication générale de la classe :</b></u>
 * <P>Cette classe permet de créer le panel affichant à l'utilisateur le choix des différents problèmes, ainsi que la
 * création d'un problème.
 *
 * @author Dream Team - ING2
 */
public class PanelChoixProbleme extends JPanel {

    //Déclaration des variables
    private JComboBox problemeBox;
    private JButton b1 = new JButton ("Consulter");
    private JButton b2 = new JButton ("Modifier");
    private JButton b3 = new JButton ("Supprimer");
    private JButton executer = new JButton ("Executer");
    private JLabel titreProbleme;

    /**<u><i>Explication générale du constructeur :</i></u>
     * <P> Constructeur de la classe permettant de créer un panel Choix Problème
     *
     */

    public PanelChoixProbleme(){

        titreProbleme = new JLabel("Selectionner Problème :");
        titreProbleme.setBounds(10, 50, 140, 15);
        add(titreProbleme);

        problemeBox = new JComboBox();
        remplirProblemeBox();
        problemeBox.setBounds(10, 70, 200, 20);
        add(problemeBox);

        b1.setBounds(50, 170, 130, 25);
        b1.setVisible(false);
        add(b1);

        executer.setBounds(50, 220, 130, 25);
        executer.setVisible(false);
        add(executer);

        b2.setBounds(50, 270, 130, 25);
        b2.setVisible(false);
        add(b2);

        b3.setBounds(50, 320, 130, 25);
        b3.setVisible(false);
        add(b3);

        TitledBorder titleInfo = new TitledBorder("Problèmes");
        titleInfo.setTitleColor(Color.BLUE);
        this.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.BLUE));
        this.setBorder(BorderFactory.createTitledBorder(titleInfo));
        
        this.setBackground(new Color(234, 232, 233));
        this.setLayout(null);
        
        //Listener
        b1.addActionListener(new ControleurBoutonConsulter());
        b2.addActionListener(new ControleurBoutonModifier());
        b3.addActionListener(new ControleurBoutonSupprimerProbleme());
        problemeBox.addActionListener(new ControleurComboBox(problemeBox));
        executer.addActionListener(new ControleurBoutonExecuterPb());
    }

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode retourne le bouton Consulter.
     * 
     * @return le bouton consulter
     */
    public JButton getB1() {
        return b1;
    }

     /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode retourne le bouton Modifier.
     * <P>
     * @return le bouton modifier
     */

    public JButton getB2() {
        return b2;
    }

     /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode retourne le bouton Supprimer.
     * <P>
     * @return le bouton supprimer
     */

    public JButton getB3() {
        return b3;
    }


    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode retourne la JcomboBox contenant les Problèmes.
     * <P>
     * @return la JcomboBox contenant les Problèmes
     */
    public JComboBox getProblemeBox() {
        return problemeBox;
    }

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode retourne le bouton exécuter
     * 
     * @return le bouton exécuter
     * 
     */
    public JButton getExecuter() {
        return executer;
    }
    
    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de remplir la box des problèmes
     * 
     */
    public final void remplirProblemeBox(){
        problemeBox.addItem("--------------------------------------------");
        for(Probleme problem : Application.getInstance().getProblemes()){
        	problemeBox.addItem(problem.getNomProbleme());
        }
        problemeBox.addItem("--------------------------------------------");
        problemeBox.addItem("Créer un problème");
    }

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de supprimer les éléments dans la box des problèmes
     * 
     */
    public final void deleteItemOfGroupBox(int size){
        for(int i=size-1; i>=0; i--){
            problemeBox.removeItemAt(i);
        }
    }

}
