package client.control.probleme;

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

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

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode est l'écouteur du bouton Supprimer. Il supprimer les contraintes ajouter par l'utilisateur
     * en fonction du panel où il se trouve.
     *
     */
    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 groupes
        if (prg != null) {

            if (prg.getProbleme().getPanCreerPb().isVisible()) {
                if (prg.getProbleme().getPanCreerPb().getI() != 0 && prg.getProbleme().getPanCreerPb().isSelectedRow(prg.getProbleme().getPanCreerPb().getTableContrainte())) {
                    prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().removeRow(prg.getProbleme().getPanCreerPb().getTableContrainte().getSelectedRow());
                    prg.getProbleme().getPanCreerPb().setI(prg.getProbleme().getPanCreerPb().getI() - 1);

                    if (prg.getProbleme().getPanCreerPb().getI() < 10) {
                        prg.getProbleme().getPanCreerPb().getAjouter().setEnabled(true);
                    }

                }
            }

            if (prg.getProbleme().getPanModifPb().isVisible()) {
                if (prg.getProbleme().getPanModifPb().getI() != 0 && prg.getProbleme().getPanModifPb().isSelectedRow(prg.getProbleme().getPanModifPb().getTableContrainte())) {
                    prg.getProbleme().getPanModifPb().getValuesTableDefaultModelContrainte().removeRow(prg.getProbleme().getPanModifPb().getTableContrainte().getSelectedRow());
                    prg.getProbleme().getPanModifPb().setI(prg.getProbleme().getPanModifPb().getI() - 1);

                   if (prg.getProbleme().getPanModifPb().getI() < 10) {
                        prg.getProbleme().getPanModifPb().getAjouter().setEnabled(true);
                    }
                }
            }
        // Pour les membres
        }else if (pm != null) {

            if (pm.getProbleme().getPanCreerPb().isVisible()) {
                if (pm.getProbleme().getPanCreerPb().getI() != 0 && pm.getProbleme().getPanCreerPb().isSelectedRow(pm.getProbleme().getPanCreerPb().getTableContrainte())) {
                    pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().removeRow(pm.getProbleme().getPanCreerPb().getTableContrainte().getSelectedRow());
                    pm.getProbleme().getPanCreerPb().setI(pm.getProbleme().getPanCreerPb().getI() - 1);

                    if (pm.getProbleme().getPanCreerPb().getI() < 10) {
                        pm.getProbleme().getPanCreerPb().getAjouter().setEnabled(true);
                    }

                }
            }

            if (pm.getProbleme().getPanModifPb().isVisible()) {
                if (pm.getProbleme().getPanModifPb().getI() != 0 && pm.getProbleme().getPanModifPb().isSelectedRow(pm.getProbleme().getPanModifPb().getTableContrainte())) {
                    pm.getProbleme().getPanModifPb().getValuesTableDefaultModelContrainte().removeRow(pm.getProbleme().getPanModifPb().getTableContrainte().getSelectedRow());
                    pm.getProbleme().getPanModifPb().setI(pm.getProbleme().getPanModifPb().getI() - 1);

                   if (pm.getProbleme().getPanModifPb().getI() < 10) {
                        pm.getProbleme().getPanModifPb().getAjouter().setEnabled(true);
                    }
                }
            }
        }
    }
}
