mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-05-14 01:21:50 +00:00
284 lines
8.8 KiB
Java
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);
|
|
|
|
}
|
|
} |