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


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.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;
		// panel 
    private JPanel pan;
		// l'étudiant sélectionné
    private Etudiant concerner;
		// model
    private Model model;
		// tru si le groupe est une partition
    private boolean partition;

			/**
		 * Constructeur de l'affichage des étudiants
		 * @param g le groupe
		 * @param m le model
		 * @param e l'étudiant sélectionné
		 */
    public FenetreEtudiant(Groupe g, Etudiant e, Model m){
        this.pan=new JPanel();
        this.model=m;
        if(g!=null){
            this.etu=g.getEtudiants(); 
        }else{
            this.etu=new LinkedHashSet<>();
        }
        this.concerner=e;
        if(g.getPointPoint().getType()==TypeGroupe.PARTITION)
            this.partition=true;
        else{
            this.partition=false;
        }
        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, 30, 0));
            PanelEtudiant p=new PanelEtudiant(this.concerner, this.partition);
            p.addActionChangeListener(new ActionListenerChangeEtu(this.model, this.concerner));
            this.pan.add(p);
            for(Etudiant e: this.etu){
                if(this.concerner.getId() != e.getId()){
                    this.pan.add(p);
                    p=new PanelEtudiant(e,false);
                } 
            }
        }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;
    }
}
