package client.view.connexion;

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

import client.control.menu.EcouteurMenu;
import client.control.menu.ThemeManager;
import client.control.MediatorButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

//-----------------------------------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 la frame initiale avec le login en 1er panel.
 *
 * @author Dream Team - ING2
 */
public class Fenetre extends JFrame {

    //Déclarations des variables
    private static Fenetre f = null;

    protected JMenuBar menuBar;
    protected JMenu fichier, aide, question;
    public JMenuItem fermer;

    private PanelConnexion connexion;
    private PanelConnexionCreerUser pcu;

    /**<u><i>Explication de la méthode :</i></u>
     * <P> Cette méthode permet de créer une unique instance de la fenêtre
     * 
     * @return une unique instance de la fenêtre
     * 
     */
    public static Fenetre getInstance(){
        if(f == null)
            f = new Fenetre();
        return f;
    }
    
   /**<u><i>Explication de la méthode :</i></u>
    * <P>Constructeur permettant de créer la fenêtre.
    * 
    */
    private Fenetre() {

        MediatorButton mb = MediatorButton.getInstance();

        this.setTitle("Connexion");
        this.setBounds(220, 150, 900, 550);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setLayout(null);

        //Menu
        menuBar = new JMenuBar();

        //Items du menu
        fichier = new JMenu("Fichier");
        aide = new JMenu("Aide");
        question = new JMenu("?");
        fermer = new JMenuItem("Fermer");

        /* Option to select the UI skin */
        JMenu skinsMenu = new JMenu("Thèmes");

        JMenuItem[] themes = new JMenuItem[ThemeManager.INSTALLED_THEMES.length];

        for(int i=0;i< themes.length;i++){
        	themes[i] = new JMenuItem(ThemeManager.INSTALLED_THEMES[i]);
        	themes[i].setActionCommand(ThemeManager.INSTALLED_THEMES[i]);
        	themes[i].addActionListener(ThemeManager.getInstance());
        	skinsMenu.add(themes[i]);
        }

        /* End of UI feature */

        //On ajoute les items au menu
        fichier.add(fermer);

        //On ajoute le tout au menu
        menuBar.add(fichier);
        menuBar.add(skinsMenu);
        menuBar.add(aide);
        menuBar.add(question);
        setJMenuBar(menuBar);

        //Listener
        EcouteurMenu menuListener = new EcouteurMenu(this);

        fermer.addActionListener(menuListener);

        //Panel pour la connexion
        connexion = PanelConnexion.getInstance();
        connexion.setLayout(null);
        connexion.setBounds(0, 0, 900, 550);
        connexion.setVisible(true);

        //Panel pour créer un utilisateur non inscrit
        pcu = PanelConnexionCreerUser.getInstance();
        pcu.setLayout(null);
        pcu.setBounds(0, 0, 900, 550);
        pcu.setVisible(false);

        //On ajoute les panels
        add(pcu);
        add(connexion);

        this.setVisible(true);
    }

}

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