Files
LecteurPdfDoubleAffichage/src/lecteur_pdf/menu/Menu.java
T
2021-12-07 20:43:08 +01:00

284 lines
8.8 KiB
Java

/*
* Keymapping.java, 20/11/2021
* IUT Rodez 2021-2021, INFO2
* pas de copyright, aucun droits
*/
package lecteur_pdf.menu;
import lecteur_pdf.affichage.Fenetre;
import org.apache.pdfbox.pdmodel.PDDocument;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
/**
* Classe pour afficher le Menu "Fichier" avec ses options
*
* @author Léo FRANCH
* @author Tristan NOGARET
* @author Lucàs VABRE
* @author Noé VILLENEUVE
* @version 1.0
*/
public class Menu extends JMenuBar {
/**
* La Fenêtre mère de la barre des menus
*/
private final Fenetre fenetre;
/**
* Liste contenant les différents menus
*/
private final ArrayList<JMenu> menuList = new ArrayList<>();
/**
* Liste contenant les différents sous menus
*/
private final ArrayList<JMenuItem> itemList = new ArrayList<>();
/**
* Constructeur du menu
*
* @param fenetre La Fenêtre mère de la barre des menus
*/
public Menu(Fenetre fenetre) {
this.fenetre = fenetre;
createMenuFichier();
createMenuOptions();
createMenuAffichage();
}
/**
* Créé le menu Fichier et ses sous-menus
*/
private void createMenuFichier() {
// Créer le Menu Fichier
JMenu Fichier = new JMenu("Fichier");
// Créer les items Ouvrir, Fermer et Quitter
JMenuItem Ouvrir = new JMenuItem("Ouvrir");
JMenuItem Fermer = new JMenuItem("Fermer");
JMenuItem Quitter = new JMenuItem("Quitter");
// Ajoute des Listener aux JMenuItem
Ouvrir.addActionListener(this::actionPerformed);
Fermer.addActionListener(this::actionPerformed);
Quitter.addActionListener(this::actionPerformed);
// Définis les raccourcis
KeyStroke raccourciOuvrir
= KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK);
Ouvrir.setAccelerator(raccourciOuvrir);
KeyStroke raccourciFermer
= KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
Fermer.setAccelerator(raccourciFermer);
KeyStroke raccourciQuitter
= KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
Quitter.setAccelerator(raccourciQuitter);
// Ajouter les éléments au menu "Fichier"
Fichier.add(Ouvrir);
Fichier.add(Fermer);
Fichier.add(Quitter);
// Ajoute le menu "Fichier" dans la liste des menus
menuList.add(Fichier);
// Ajoute Ouvrir, Fermer et Quitter dans la liste des sous menu
itemList.add(Ouvrir);
itemList.add(Fermer);
itemList.add(Quitter);
// Ajoute le menu à la barre de menu
this.add(Fichier);
}
/**
* Créé le menu Options et ses sous-menus
*/
private void createMenuOptions() {
// Créer le Menu
JMenu Options = new JMenu("Options");
// Créer l'item Préférences
JMenuItem Preferences = new JMenuItem("Préférences");
// Ajoute des Listener aux JMenuItem
Preferences.addActionListener(this::actionPerformed);
// Définis les raccourcis
KeyStroke raccourciPreferences
= KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK);
Preferences.setAccelerator(raccourciPreferences);
// Ajouter les éléments au menu "Options"
Options.add(Preferences);
// Ajoute le menu "Affichage" dans la liste des menus
menuList.add(Options);
// Ajoute Preferences dans la liste des sous menu
itemList.add(Preferences);
// Ajoute le menu à la barre de menu
this.add(Options);
}
/**
* Créé le menu Affichage et ses sous-menus
*/
private void createMenuAffichage() {
// Créer le Menu Affichage
JMenu Affichage = new JMenu("Affichage");
// Créer les items de zoom
JMenuItem ZoomPlus = new JMenuItem("Zoom +");
JMenuItem ZoomNeutre = new JMenuItem("Zoom 0");
JMenuItem ZoomMinus = new JMenuItem("Zoom -");
// Ajoute des Listener aux JMenuItem
ZoomPlus.addActionListener(this::actionPerformed);
ZoomNeutre.addActionListener(this::actionPerformed);
ZoomMinus.addActionListener(this::actionPerformed);
// Définis les raccourcis
KeyStroke raccourciZoomPlus
= KeyStroke.getKeyStroke(KeyEvent. VK_PLUS, KeyEvent.CTRL_DOWN_MASK);
ZoomPlus.setAccelerator(raccourciZoomPlus);
KeyStroke raccourciZoomNeutre
= KeyStroke.getKeyStroke(KeyEvent. VK_0, KeyEvent.CTRL_DOWN_MASK);
ZoomNeutre.setAccelerator(raccourciZoomNeutre);
KeyStroke raccourciZoomMinus
= KeyStroke.getKeyStroke(KeyEvent. VK_MINUS, KeyEvent.CTRL_DOWN_MASK);
ZoomMinus.setAccelerator(raccourciZoomMinus);
// Ajouter les éléments au menu "Affichage"
Affichage.add(ZoomPlus);
Affichage.add(ZoomNeutre);
Affichage.add(ZoomMinus);
// Ajoute le menu "Affichage" dans la liste des menus
menuList.add(Affichage);
// Ajoute des zoom dans la liste des sous menu
itemList.add(ZoomPlus);
itemList.add(ZoomNeutre);
itemList.add(ZoomMinus);
// Ajoute le menu à la barre de menu
this.add(Affichage);
}
/**
* Méthode qui gère les actions des sous-menus
*
* @param ae un action event
*/
public void actionPerformed(ActionEvent ae) {
String choice = ae.getActionCommand();
String messageErrCorrompu = "Une erreur s'est produite dans le chargement de votre document, il a peut-être été corrompu. ";
switch (choice) {
case "Ouvrir" -> {
try {
File fichier = SelectionnerFichier.ouvrirFichier();
fenetre.chargerPDF(fichier);
}catch (IOException e) {
JOptionPane.showMessageDialog(fenetre,messageErrCorrompu);
}
}
case "Fermer" -> popupfermer(fenetre);
case "Quitter" -> popupquitter(fenetre);
case "Zoom +" -> {
try {
fenetre.rechargerPDF(2.0f);
} catch (IOException e) {
JOptionPane.showMessageDialog(fenetre,messageErrCorrompu);
}
}
case "Zoom 0" -> {
try {
fenetre.rechargerPDF(1.0f);
} catch (IOException e) {
JOptionPane.showMessageDialog(fenetre,messageErrCorrompu);
}
}
case "Zoom -" -> {
try {
fenetre.rechargerPDF(0.5f);
} catch (IOException e) {
JOptionPane.showMessageDialog(fenetre,messageErrCorrompu);
}
}
}
}
/**
* @return la liste des JMenuItem
*/
public ArrayList<JMenuItem> getMenuItems() {
return itemList;
}
/**
* Methode qui renvoie le sous menu demandé
*
* @param index Indice du sous menu
* @return Le sous menu demandé
*/
public JMenuItem getMenuItem(int index) {
return itemList.get(index);
}
public void popupfermer(Fenetre fenetre){
if (fenetre.documentPDF ==null){JOptionPane.showMessageDialog(fenetre,"vous n'avez aucun document pdf ouvert !");}
else {
JDialog jd = new JDialog(fenetre);
jd.setLayout(new FlowLayout());
jd.setBounds(500, 300, 400, 100);
JLabel jlabel = new JLabel("Etes vous sûr de vouloir fermer le Document PDF? ");
JButton oui = new JButton("oui");
oui.addActionListener(e -> {
fenetre.documentPDF.removeAll();
fenetre.documentPDF.revalidate();
fenetre.documentPDF.repaint();
jd.setVisible(false);
});
JButton non = new JButton("non");
non.addActionListener(e -> jd.setVisible(false));
jd.add(jlabel);
jd.add(oui);
jd.add(non);
jd.setVisible(true);
}
}
private void popupquitter(Fenetre fenetre) {
JDialog jd = new JDialog(fenetre);
jd.setLayout(new FlowLayout());
jd.setBounds(500,300,400,100);
JLabel jlabel = new JLabel("Etes vous sûr de vouloir quitter la fenêtre ? ");
JButton oui = new JButton("oui");
oui.addActionListener(e -> {
System.exit(0);
jd.setVisible(false);
});
JButton non = new JButton("non");
non.addActionListener(e -> jd.setVisible(false));
jd.add(jlabel);
jd.add(oui);
jd.add(non);
jd.setVisible(true);
}
}