package client.control.probleme;

import client.view.member.PanelMembre;
import client.view.respoGroup.PanelRespoGroupe;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/** <u><b>Explication générale de la classe :</b></u>
 * <P> Cette classe permet de créer le controleur instancié dans PanelProbleme du bouton Exécuter Problème.
 *
 * @author Dream Team - ING2
 */
public class ControleurBoutonExecuterPb implements ActionListener {

    /**<u><i>Explication générale du constructeur :</i></u>
     * <P> Constructeur de la classe permettant de créer le Controleur du bouton Executer PanelProbleme et de récuperer le Panel Problème
     *
     */
    public ControleurBoutonExecuterPb() {}

    public void actionPerformed(ActionEvent e) {

        Component c = (Component) e.getSource();

        PanelRespoGroupe prg = null;
        PanelMembre pm = null;

        while (c != null) {
            if (c instanceof PanelRespoGroupe) {
                prg = (PanelRespoGroupe) c;
            } else if (c instanceof PanelMembre) {
                pm = (PanelMembre) c;
            }
            c = c.getParent();
        }

        //Pour les responsables de groupe
        if(prg != null){
            prg.getProbleme().getPanCreerPb().getvaluesListDefaultModelFonction().removeAllElements();
            prg.getProbleme().getPanCreerPb().RemoveAllElementsFromTable(prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte());
            prg.getProbleme().getPanModifPb().getvaluesListDefaultModelFonction().removeAllElements();
            prg.getProbleme().getPanModifPb().RemoveAllElementsFromTable(prg.getProbleme().getPanModifPb().getValuesTableDefaultModelContrainte());

            prg.getProbleme().getPanExecPb().getTitreProbleme().setText((String) "<html><u>" + prg.getProbleme().getPanChoixPb().getProblemeBox().getSelectedItem() + "</u></html>");

            prg.getProbleme().getPanCreerPb().setVisible(false);
            prg.getProbleme().getPanConsultPb().setVisible(false);
            prg.getProbleme().getPanModifPb().setVisible(false);
            prg.getProbleme().getPanExecPb().setVisible(true);
            prg.getProbleme().getPanExecPb().CacherLabel();
            prg.getProbleme().getPanExecPb().getMethodes().setSelectedIndex(0);
            
            //On MAJ les résultats
            prg.getProbleme().getPanConsultPb().remplirResultatBox();
            prg.getProbleme().getPanConsultPb().updateUI();
            
        //Pour les membres
        }else if(pm != null){
            pm.getProbleme().getPanCreerPb().getvaluesListDefaultModelFonction().removeAllElements();
            pm.getProbleme().getPanCreerPb().RemoveAllElementsFromTable(pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte());
            pm.getProbleme().getPanModifPb().getvaluesListDefaultModelFonction().removeAllElements();
            pm.getProbleme().getPanModifPb().RemoveAllElementsFromTable(pm.getProbleme().getPanModifPb().getValuesTableDefaultModelContrainte());

            pm.getProbleme().getPanExecPb().getTitreProbleme().setText((String) "<html><u>" + pm.getProbleme().getPanChoixPb().getProblemeBox().getSelectedItem() + "</u></html>");

            pm.getProbleme().getPanCreerPb().setVisible(false);
            pm.getProbleme().getPanConsultPb().setVisible(false);
            pm.getProbleme().getPanModifPb().setVisible(false);
            pm.getProbleme().getPanExecPb().setVisible(true);
            pm.getProbleme().getPanExecPb().CacherLabel();
            pm.getProbleme().getPanExecPb().getMethodes().setSelectedIndex(0);
        }
    }
}
