/*
 * SelectionnerFichier.java, 18/11/2021
 * IUT Rodez 2021-2021, INFO2
 * pas de copyright, aucun droits
 */

package lecteur_pdf_swing;

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileSystemView;
import java.io.File;

/**
 * Classe qui permet d'ouvrir une fenêtre pour sélectionner le fichier pdf à
 * ouvrir
 * @author Léo FRANCH
 * @author Tristan NOGARET
 * @author Lucàs VABRE
 * @author Noé VILLENEUVE
 * @version 1.0
 */
public class SelectionnerFichier {

    /**
     * Méthode qui créée une fenêtre pour que l'utilisateur choisisse un
     * fichier PDF
     * @return le fichier choisi par l'utilisateur
     */
    public static File ouvrirFichier() {

        final String TITRE = "Sélectionnez un PDF";
        final String DESCRIPTION = "PDF files (*.pdf)";
        final String EXTENSION = "pdf";
        final String BOUTON_OK = "Ouvrir";
        final String BOUTON_ANNULER = "Annuler";
        final String INDICE_BOUTON_OK = "Ouvre le fichier sélectionné";
        final String INDICE_BOUTON_ANNULER = "Annule la sélection";

        /* Crée une fenêtre de sélection de fichier */
        JFileChooser fileChooser = new JFileChooser(
            FileSystemView.getFileSystemView().getDefaultDirectory());
        fileChooser.setDialogTitle(TITRE);

        /* Options du JFileChooser */
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.setMultiSelectionEnabled(false);
        fileChooser.setAcceptAllFileFilterUsed(false);

        /* Définit le texte et les tooltips des boutons */
        fileChooser.setApproveButtonText(BOUTON_OK);
        fileChooser.setApproveButtonToolTipText(INDICE_BOUTON_OK);
        UIManager.put("FileChooser.cancelButtonText", BOUTON_ANNULER);
        UIManager.put("FileChooser.cancelButtonToolTipText",
                      INDICE_BOUTON_ANNULER);
        SwingUtilities.updateComponentTreeUI(fileChooser);

        /* Filtre uniquement les fichiers PDF */
        FileNameExtensionFilter filter = new FileNameExtensionFilter(
            DESCRIPTION, EXTENSION);
        fileChooser.addChoosableFileFilter(filter);


        /* Renvoie un File lorsque l'utilisateur appuie sur le bouton Ouvrir */
        int returnValue = fileChooser.showOpenDialog(null);
        if (returnValue == JFileChooser.APPROVE_OPTION) {
            return new File(fileChooser.getSelectedFile().getAbsolutePath());
        }

        return null;
    }
}
