package client.control.probleme;

import client.Application;
import client.ApplicationHelper;
import client.model.user.Droits;
import client.view.admin.PanelAdmin;
import client.view.member.PanelMembre;
import client.view.respoGroup.PanelRespoGroupe;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/** <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 Creer Problème
 *
 * @author Dream Team - ING2
 */
public class ControleurBoutonCreerProb 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 Creer PanelProbleme et de récuperer le Panel Problème
     *
     */
    public ControleurBoutonCreerProb() {}

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode est l'ecouteur du bouton Creer PanelProbleme. Si l'utlisateur clique dessus, il active le Panel
     * panCreerPb. (Panel Creer Problème).
     *
     */
    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();
        }

        System.out.println("Panel Respo groupe : "+prg+"\nPanel Membre : "+pm);

        //On recupère l'idGroup en fonction du user
        int idGroup;

        if(prg !=null)
            idGroup = Application.getInstance().getIdGroupe(prg.getAccueil().getNomGroupe());
        else
            idGroup = Application.getInstance().getIdGroupe(pm.getAccueil().getNomGroupe());

        //On test si ce role possède le droit de créer un problème
        if (ApplicationHelper.ARoleCanInGroup(Application.idSelect, idGroup, Droits.CREER_PROBLEME)) {

            if (prg != null) {
                prg.getProbleme().getPanCreerPb().getvaluesListDefaultModelFonction().removeAllElements();

                prg.getProbleme().getPanModifPb().getvaluesListDefaultModelFonction().removeAllElements();

                prg.getProbleme().getPanConsultPb().setVisible(false);
                prg.getProbleme().getPanModifPb().setVisible(false);
                prg.getProbleme().getPanCreerPb().setVisible(true);
                
            } else if (pm != null) {
                pm.getProbleme().getPanCreerPb().getvaluesListDefaultModelFonction().removeAllElements();

                pm.getProbleme().getPanModifPb().getvaluesListDefaultModelFonction().removeAllElements();

                pm.getProbleme().getPanConsultPb().setVisible(false);
                pm.getProbleme().getPanModifPb().setVisible(false);
                pm.getProbleme().getPanCreerPb().setVisible(true);
            }
        }else{
            JOptionPane.showMessageDialog(PanelAdmin.getInstance(), "Vous n'avez pas les droits pour créer un problème", "Erreur", JOptionPane.ERROR_MESSAGE);
        }
    }
}
