package fr.iutfbleau.projetIHM2022FI2.MP.ROOT.View;


import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import java.awt.*;
import java.util.LinkedHashSet;
import java.util.Set;

import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe;
import fr.iutfbleau.projetIHM2022FI2.MP.ROOT.Controller.ActionListChange;
import fr.iutfbleau.projetIHM2022FI2.MP.ROOT.Controller.ActionListenerSuprEtu;
import fr.iutfbleau.projetIHM2022FI2.Permanent.Controller.ActionListenerChangeEtu;
import fr.iutfbleau.projetIHM2022FI2.API.Model;

/**
 * Affichage des édudiants d'un groupe
 *
 */
public class FenetreEtudiant{
		//liste des étudiants
    private Set<Etudiant> etu;
		// model
    private Model m;
		// panel
    private JPanel pan;
		// le type de groupe
    private TypeGroupe type;

		/**
		 * Constructeur de l'affichage des étudiants
		 * @param g le groupe
		 * @param m le model
		 */
    public FenetreEtudiant(Groupe g, Model m){
        this.pan=new JPanel();
        this.m=m;
        if(g!=null){
            this.type=g.getPointPoint().getType();
            this.etu=g.getEtudiants(); 
        }else{
            this.type=null;
            this.etu=new LinkedHashSet<>();
        }
        this.draw();
    }
		/**
		 * Gère l'affichage des étudiants
		 */
    private void draw(){
        if(this.etu.size()!=0){
            this.pan.setLayout(new GridLayout(this.etu.size()+1, 1, 10, 0));
            JPanel bouton=new JPanel(new GridLayout(1, 2));
            JButton boutChange=new JButton("Changement");
            boutChange.addActionListener(new ActionListChange(this.m));
            JButton boutFind=new JButton("Find Etu");
            boutFind.addActionListener(new ActionListChange(this.m));
            bouton.add(boutChange);
            bouton.add(boutFind);
            this.pan.add(bouton);
            
            for(Etudiant e: this.etu){
                PanelEtudiant p;
                if(type!=null && type==TypeGroupe.PARTITION){
                    p=new PanelEtudiant(e, true);
                }else{
                    p=new PanelEtudiant(e, false);
                }
                p.addActionDeleteListener(new ActionListenerSuprEtu(m, e));
                p.addActionChangeListener(new ActionListenerChangeEtu(m, e));
                this.pan.add(p);
            }
        }else{
            this.pan.setLayout(new FlowLayout());
            this.pan.add(new JLabel("Il n'y a pas d'étudiant"));
        }
    }
		/**	
		 * rafraichit l'affichage.
		*/
    public void refresh(){
        this.pan.removeAll();
        this.draw();
        this.pan.revalidate();
    }
		/**
		 * premet d'obtenir le panel de l'affichage
		 * @return le panel de l'affichage
		 */
    public JPanel getPan() {
        return pan;
    }
		/**
		 * permet d'afficher la liste des demandes de changement
		 */
    public void listChange(){
        this.m.listChange();
    }
}
