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;
import javax.swing.JFileChooser;

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

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode est l'ecouteur du bouton Ajouter qui en fonction du panel visible ajoute
     * le choix de l'utilisateur à la JList Contrainte
     * <P>
     * 
     */
    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) {
            if (prg.getProbleme().getPanCreerPb().isVisible()) {
                JFileChooser choix = new JFileChooser();
                int retour = choix.showOpenDialog(prg.getProbleme());
                if (retour == JFileChooser.APPROVE_OPTION) {

                	prg.getProbleme().getPanCreerPb().setI(prg.getProbleme().getPanCreerPb().getI() + 1);
                	
                	//On ajoute la dérivé ou la contraintes
                	if(prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().getRowCount()==0){
                		Object[] test = {"Dérivé : ", (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test);
                	}else{
                		Object[] test2 = {"Contrainte : "+prg.getProbleme().getPanCreerPb().getI(), (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test2);
                	}
                }

                //Pas plus de 10 contraintes + dérivée
                if (prg.getProbleme().getPanCreerPb().getI() == 10) {
                    prg.getProbleme().getPanCreerPb().getAjouter().setEnabled(false);
                } else {
                    prg.getProbleme().getPanCreerPb().getAjouter().setEnabled(true);
                }

            }

            if (prg.getProbleme().getPanModifPb().isVisible()) {
                JFileChooser choix = new JFileChooser();
                int retour = choix.showOpenDialog(prg.getProbleme());


                if (retour == JFileChooser.APPROVE_OPTION) {
                	
                	prg.getProbleme().getPanCreerPb().setI(prg.getProbleme().getPanCreerPb().getI() + 1);

                	//On ajoute la dérivé ou la contraintes
                    if(prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().getRowCount()==0){
                		Object[] test = {"Dérivé : ", (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test);
                	}else{
                		Object[] test2 = {"Contrainte : "+prg.getProbleme().getPanCreerPb().getI(), (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		prg.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test2);
                	}
                    
                }
                
                //Pas plus de 10 contraintes + dérivée
                if (prg.getProbleme().getPanModifPb().getI() == 10) {
                    prg.getProbleme().getPanModifPb().getAjouter().setVisible(false);
                } else {
                    prg.getProbleme().getPanModifPb().getAjouter().setVisible(true);
                }

            }
        //Pour les membres
        } else if (pm != null) {
            if (pm.getProbleme().getPanCreerPb().isVisible()) {
                JFileChooser choix = new JFileChooser();
                int retour = choix.showOpenDialog(pm.getProbleme());
                if (retour == JFileChooser.APPROVE_OPTION) {
                	pm.getProbleme().getPanCreerPb().setI(pm.getProbleme().getPanCreerPb().getI() + 1);
                	
                	//On ajoute la dérivé ou la contraintes
                	if(pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().getRowCount()==0){
                		Object[] test = {"Dérivé : ", (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test);
                	}else{
                		Object[] test2 = {"Contrainte : "+pm.getProbleme().getPanCreerPb().getI(), (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test2);
                	}
                	
                }
                
                //Pas plus de 10 contraintes + dérivée
                if (pm.getProbleme().getPanCreerPb().getI() == 10) {
                    pm.getProbleme().getPanCreerPb().getAjouter().setEnabled(false);
                } else {
                    pm.getProbleme().getPanCreerPb().getAjouter().setEnabled(true);
                }

            }

            if (pm.getProbleme().getPanModifPb().isVisible()) {
                JFileChooser choix = new JFileChooser();
                int retour = choix.showOpenDialog(pm.getProbleme());


                if (retour == JFileChooser.APPROVE_OPTION) {

                	pm.getProbleme().getPanCreerPb().setI(pm.getProbleme().getPanCreerPb().getI() + 1);
                	
                	//On ajoute la dérivé ou la contraintes
                	if(pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().getRowCount()==0){
                		Object[] test = {"Dérivé : ", (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test);
                	}else{
                		Object[] test2 = {"Contrainte : "+pm.getProbleme().getPanCreerPb().getI(), (Character.toString((char) 0x2022) + " " + choix.getSelectedFile().getName()), "", ""};
                		pm.getProbleme().getPanCreerPb().getValuesTableDefaultModelContrainte().addRow(test2);
                	}
                	
                }
                
                //Pas plus de 10 contraintes + dérivée
                if (pm.getProbleme().getPanModifPb().getI() == 10) {
                    pm.getProbleme().getPanModifPb().getAjouter().setVisible(false);
                } else {
                    pm.getProbleme().getPanModifPb().getAjouter().setVisible(true);
                }

            }
        }
    }
}
