package chatapp.View;


import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

import chatapp.Controller.ChatApp;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.MenuItem;
import javafx.scene.text.Text;
import javafx.stage.Stage;
/**
 *  <p>
 *      Classe representant la page d'accueil. Elle est composé d'un menu en haut a gauche.
 *      Au centre un petit message "Bienvenue" suivi du pseudo de l'utilisateur est affiché.
 *      </p>
 */
public class View_Menu {

    public Text pseudonyme;
    public MenuItem utilsActifsButton;
    public MenuItem demarrerSessionButton;
    public MenuItem changerPseudoButton;
    @FXML // ResourceBundle that was given to the FXMLLoader
    private ResourceBundle resources;
    private ChatApp chatapp;
    @FXML // URL location of the FXML file that was given to the FXMLLoader
    private URL location;

    @FXML // This method is called by the FXMLLoader when initialization is complete
    void initialize() {
        this.chatapp = ChatApp.getInstance();
        this.pseudonyme.setText(this.chatapp.getMe().getPseudo());
    }

    /**
     * <p>Handler permettant d'aller a la scene View_Utilisateurs pour afficher la liste des utilisateurs actifs</p>
     * @param actionEvent L'utilisateur a choisit l'option afficher utilisateurs actifs dans le menu
     */
    public void afficherUtilsActifs(ActionEvent actionEvent) {
        Stage stage = (Stage) pseudonyme.getScene().getWindow();
        Parent root = null;
        try {
            root = FXMLLoader.load(getClass().getResource("/fenetres/View_Utilisateurs.fxml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    /**
     * <p>Handler permettant d'aller a la scene Demarrer_Session pour choisir un utilisateur avec qui clavarder
     * @param actionEvent L'utilisateur a choisit l'option de demarrer une session de clavardage dans le menu
     */
    public void demarrerSession(ActionEvent actionEvent) {
        Stage stage = (Stage) pseudonyme.getScene().getWindow();
        Parent root = null;
        try {
            root = FXMLLoader.load(getClass().getResource("/fenetres/View_Demarrer_Session.fxml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    /**
     * <p>Handler permettant d'aller a la scene View_ChangementPseudo pour changer son pseudonyme
     * @param actionEvent L'utilisateur a choisit l'option changer de pseudo
     */
    public void changerPseudo(ActionEvent actionEvent) {
        Stage stage = (Stage) pseudonyme.getScene().getWindow();
        Parent root = null;
        try {
            root = FXMLLoader.load(getClass().getResource("/fenetres/View_ChangementPseudo.fxml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    /**
     * <p>Handler permettant de se deconnecter et fermer l'application
     * @param actionEvent L'utilisateur a choisit l'option Deconnexion dans le menu
     */
    public void deconnexion(ActionEvent actionEvent) {
        try {
            chatapp.deconnexion();
            /*chatapp.getMain().stop();
            Platform.exit();
            System.exit(0);*/
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
