package fr.iutfbleau.projetIHM2022FI2.Permanent.Controller;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashSet;
import java.util.Set;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import java.awt.Color;
import java.awt.GridLayout;

import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
import fr.iutfbleau.projetIHM2022FI2.API.Model;
/**
 * le controller pour le changement de groupe d'un etudiant
 */
public class ActionListenerChangeEtu implements ActionListener {
	// l'etudiant a changer
    private Etudiant etudiant;
	// le model
    private Model model;
		// le groupe d'arrivée
    private Groupe B;
		// les boutons
    private Set<JButton> bout;
		// le panel
    private JPanel myPanel;
		/**
		 * le constructeur
		 * @param m le model
		 * @param e l'etudiant a changer
		 */
    public ActionListenerChangeEtu(Model m, Etudiant e){
        this.model=m;
        this.etudiant=e;
        this.B=null;
        this.bout=null;
        myPanel=null;
    }
		/**
		 * methode invoquée lors d'un clic sur un bouton
		 * @param e l'événement
		 */
    @Override
    public void actionPerformed(ActionEvent e) {
        if(this.bout==null){
            this.bout=new HashSet<>();
            for(Groupe sous:this.model.getGroupePartition()){
                JButton bouton=new JButton(sous.getName());
                bouton.addActionListener(new ControllerGroupeBChangement(sous, this));
                this.bout.add(bouton);
            }
            myPanel = new JPanel(new GridLayout(this.bout.size(), 1));
        }

        
        for(JButton b: this.bout){
            myPanel.add(b);
        }
        
        if(JOptionPane.showConfirmDialog(this.model.getFenetre(), this.myPanel, "Changer dans quel Groupe ?", JOptionPane.OK_CANCEL_OPTION)==JOptionPane.OK_OPTION){
            if(this.B!=null)
                this.model.changeGroupe(this.etudiant, B);
        }
    }
		/**
		 * methode pour changer le groupe d'arrivée
		 * @param b le groupe d'arrivée
		 */
    public void setGroupeB(Groupe b){
        this.B=b;
        for(JButton bouton: this.bout){
            if(bouton.getText()==this.B.getName()){
                bouton.setBackground(Color.GREEN);
            }else{
                bouton.setBackground(bouton.getParent().getBackground());
            }
        }
    }
    
}
