package client.view.member;

//------------------------------------Importations des différentes bibliothèques---------------------------------//

import client.Application;
import client.ApplicationHelper;
import client.control.Command;
import client.control.membre.EcouteurQuitterGroupe;
import client.control.membre.EcouteurRejoindreGroupe;
import client.model.group.Groupe;
import client.view.member.button.ButtonQuitterGroupe;
import client.view.member.button.ButtonRejoindreGroupe;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.border.TitledBorder;

//-----------------------------------Fin Importations des différentes bibliothèques------------------------------//







//-------------------------------------------------Début de la classe------------------------------------------------//

/**<u><b>Explication générale de la classe :</b></u>
 * <P> Cette classe permet de créer le panel de la gestion des membres.
 *
 * @author Dream Team - ING2
 */
public class PanelGestionMembre extends JPanel implements ActionListener {

    //Declaration des variables
    private JLabel titreUser;
    private JLabel quitterGroup;
    private JComboBox groupJoinBox;
    private JComboBox groupDeleteBox;
    private TitledBorder titleInfo;

    /**<u><i>Explication de la méthode :</i></u>
     * <P>Constructeur permettant de créer le panel contenant l'ensemble des onglets.
     * 
     */
    public PanelGestionMembre() {

        //Titre du Panel
        titleInfo = new TitledBorder("Gestion Membre");
        titleInfo.setTitleColor(Color.BLUE);
        this.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.BLUE));
        this.setBorder(BorderFactory.createTitledBorder(titleInfo));

        this.setBackground(new Color(234, 232, 233));

        //Rejoindre un groupe
        titreUser = new JLabel("Rejoindre un groupe :");
        titreUser.setBounds(50, 70, 150, 15);
        add(titreUser);

        groupJoinBox = new JComboBox();
        groupJoinBox.setBounds(50, 90, 250, 20);
        remplirJoinBoxGroupe();
        add(groupJoinBox);
        
        //Membre en attente
        quitterGroup = new JLabel("Quitter un groupe :");
        quitterGroup.setBounds(50, 260, 135, 15);
        add(quitterGroup);

        //Box des groupes
        groupDeleteBox = new JComboBox();
        remplirDeleteBoxGroupe();
        groupDeleteBox.setBounds(50, 280, 250, 20);
        add(groupDeleteBox);

        //Bouton rejoindre
        ButtonRejoindreGroupe brg = new ButtonRejoindreGroupe(this);
        brg.addActionListener(new EcouteurRejoindreGroupe());
        add(brg);

        //Bouton quitter
        ButtonQuitterGroupe bqg = new ButtonQuitterGroupe(this);
        bqg.addActionListener(new EcouteurQuitterGroupe());
        add(bqg);
    }

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de récupérer la JComboBox "supprimer groupe"
     * 
     * @return le panel des infos du membre
     * 
     */
    public JComboBox getGroupDeleteBox() {
        return groupDeleteBox;
    }

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de récupérer la JComboBox "rejoindre groupe"
     * 
     * @return le panel des infos du membre
     * 
     */
    public JComboBox getGroupJoinBox() {
        return groupJoinBox;
    }

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de remplir la JComboBox "quitter groupe"
     * 
     */
    public final void remplirDeleteBoxGroupe() {
        groupDeleteBox.removeAllItems();
        groupDeleteBox.addItem("-------------------------------------------------------");
        Map<Integer,Groupe> arrayUsersOfGroup = ApplicationHelper.GroupsOfUser(Application.idSelect);

        for(Iterator<Groupe> j = arrayUsersOfGroup.values().iterator();j.hasNext();){
                groupDeleteBox.addItem(j.next().getNomGroupe());
        }
    }

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de remplir la JComboBox "rejoindre groupe"
     * 
     */
    public final void remplirJoinBoxGroupe() {
        groupJoinBox.removeAllItems();
        groupJoinBox.addItem("-------------------------------------------------------");
        ArrayList<Groupe> arrayUsersOfGroup = ApplicationHelper.NoGroupsOfUser(Application.idSelect);
        
        for(int j=0;j<arrayUsersOfGroup.size();j++){
            groupJoinBox.addItem(arrayUsersOfGroup.get(j).getNomGroupe());
        }
    }
    
    /**
	 * <u><i>Explication de la méthode :</i></u>
	 * <P>
	 * Cette méthode permet de gérer les évènements liés à la souris
	 * 
	 * @param e Evènements de la souris
	 * 
	 */
    public void actionPerformed(ActionEvent e) {
        Command c = (Command)e.getSource();
        c.execute();
    }

}

//-------------------------------------------------Fin de la classe-------------------------------------------------//
