This commit is contained in:
NonoL3Robot
2022-03-11 13:25:56 +01:00
parent 23c3897bd7
commit 32c2685d87
11 changed files with 127 additions and 55 deletions
+8 -3
View File
@@ -15,20 +15,25 @@ import lecteur_pdf.menuBar.menu.MenuOptions;
import javax.swing.*; import javax.swing.*;
/** /**
* Barre de menu contenant l'ensemble des menus de l'application * Barre de menu contenant l'ensemble des {@link lecteur_pdf.menuBar.menu
* menu} de l'application
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see JMenuBar
*/ */
public class MenuBar extends JMenuBar { public class MenuBar extends JMenuBar {
/** /**
* Créé une nouvelle barre de menu avec l'ensemble des menus de * Créé une nouvelle barre de menu avec l'ensemble des
* {@link lecteur_pdf.menuBar.menu menu} de
* l'application * l'application
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public MenuBar(Fenetre parent) { public MenuBar(Fenetre parent) {
add(new MenuFichier(parent)); add(new MenuFichier(parent));
@@ -12,8 +12,8 @@ import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import javax.swing.*; import javax.swing.*;
/** /**
* Classe abstraite qui défini les éléments de * Classe abstraite qui défini les
* {@link lecteur_pdf.menuBar.menu menu} * {@link lecteur_pdf.menuBar.menuItems menuItems}
* qui nécessitent d'accéder à leur {@link Fenetre fenêtre} parente * qui nécessitent d'accéder à leur {@link Fenetre fenêtre} parente
* *
* @author Léo Franch * @author Léo Franch
@@ -27,10 +27,12 @@ import lecteur_pdf.GestionMode;
public class PagePrecedente extends MenuItem { public class PagePrecedente extends MenuItem {
/** /**
* Créé un nouvel élément de Menu PagePrecedente * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* MenuItem * l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public PagePrecedente(Fenetre parent) { public PagePrecedente(Fenetre parent) {
super(parent, "Page précédente"); super(parent, "Page précédente");
@@ -11,21 +11,27 @@ import lecteur_pdf.GestionFenetre;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
/** /**
* Élément de Menu Page Suivante qui permet d'afficher la page suivante du * Élément de {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* document courant (ou les pages suivantes si le mode Synchronisé est activé) * qui permet d'afficher la page suivante du document courant (ou les pages
* suivantes si le
* {@link lecteur_pdf.menuBar.menuItems.ModeSynchronise mode Synchronisé} est
* activé)
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see MenuItem
*/ */
public class PageSuivante extends MenuItem { public class PageSuivante extends MenuItem {
/** /**
* Créé un nouvel Élément de Menu "Page Suivante" * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* MenuItem * l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public PageSuivante(Fenetre parent) { public PageSuivante(Fenetre parent) {
super(parent, "Page suivante"); super(parent, "Page suivante");
@@ -9,7 +9,9 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.Fenetre; import lecteur_pdf.Fenetre;
/** /**
* Élément de Menu PleinEcran qui permet d'afficher la page la fenêtre courante en plein écran * Élément de {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* qui permet d'afficher la page de la {@link Fenetre fenêtre} courante en
* plein écran
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
@@ -19,9 +21,12 @@ import lecteur_pdf.Fenetre;
public class PleinEcran extends MenuItem { public class PleinEcran extends MenuItem {
/** /**
* Créé un nouvel élément de Menu PleinEcran * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public PleinEcran(Fenetre parent) { public PleinEcran(Fenetre parent) {
super(parent, "Mode Plein Écran"); super(parent, "Mode Plein Écran");
@@ -9,23 +9,27 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.Fenetre; import lecteur_pdf.Fenetre;
/** /**
* Élément de Menu Pleine Largeur qui permet d'afficher le document courant * Élément de {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* de manière bord à bord (la taille horizontale du document coincide avec * qui permet d'afficher le document courant de manière bord à bord (la
* celle de la fenêtre) * taille horizontale du document coincide avec celle de la
* {@link Fenetre fenêtre})
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see MenuItem
*/ */
public class PleineLargeur extends MenuItem { public class PleineLargeur extends MenuItem {
/** /**
* Créé un nouvel élément de Menu "Pleine Largeur" * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* MenuItem * l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public PleineLargeur(Fenetre parent) { public PleineLargeur(Fenetre parent) {
super(parent, "Pleine Largeur"); super(parent, "Pleine Largeur");
+15 -6
View File
@@ -12,20 +12,25 @@ import lecteur_pdf.Popup;
import javax.swing.*; import javax.swing.*;
/** /**
* Élément de Menu Quitter qui permet de fermer la fenêtre courante, ferme * Élément de {@link lecteur_pdf.menuBar.menu.MenuFichier MenuFichier} qui
* l'application s'il s'agit de la dernière fenêtre fermée * permet de fermer la {@link Fenetre fenêtre} courante et ferme
* l'application s'il s'agit de la dernière {@link Fenetre fenêtre} fermée
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see MenuItem
*/ */
public class Quitter extends MenuItem { public class Quitter extends MenuItem {
/** /**
* Créé un nouvel élément de Menu "Quitter" * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuFichier MenuFichier}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public Quitter(Fenetre parent) { public Quitter(Fenetre parent) {
super(parent, "Quitter"); super(parent, "Quitter");
@@ -34,7 +39,11 @@ public class Quitter extends MenuItem {
@Override @Override
protected void action() { protected void action() {
final String TITRE = "Quitter"; final String TITRE = "Quitter";
final String MESSAGE = "Êtes-vous sûr de vouloir quitter l'application ?"; final String MESSAGE
if (Popup.OuiNonPopup(parent, TITRE, MESSAGE) == JOptionPane.YES_OPTION) parent.quitter(); = "Êtes-vous sûr de vouloir quitter l'application ?";
if (Popup.OuiNonPopup(parent, TITRE, MESSAGE)
== JOptionPane.YES_OPTION) {
parent.quitter();
}
} }
} }
@@ -9,19 +9,24 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.Fenetre; import lecteur_pdf.Fenetre;
/** /**
* Élément de Menu Zoom 100% qui permet de mettre le Zoom par défaut * Élément de {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* qui permet de mettre le zoom par défaut
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see MenuItem
*/ */
public class ZoomDefaut extends MenuItem { public class ZoomDefaut extends MenuItem {
/** /**
* Créé un nouvel élément de Menu "Zoom 100%" * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public ZoomDefaut(Fenetre parent) { public ZoomDefaut(Fenetre parent) {
super(parent, "Zoom 100%"); super(parent, "Zoom 100%");
@@ -9,19 +9,24 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.Fenetre; import lecteur_pdf.Fenetre;
/** /**
* Élément de Menu Zoom 50% qui permet de dézoomer * Élément de {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* qui permet de dézoomer
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see MenuItem
*/ */
public class ZoomMoins extends MenuItem { public class ZoomMoins extends MenuItem {
/** /**
* Créé un nouvel élément de Menu "Zoom 50%" * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public ZoomMoins(Fenetre parent) { public ZoomMoins(Fenetre parent) {
super(parent, "Zoom 50%"); super(parent, "Zoom 50%");
@@ -9,19 +9,24 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.Fenetre; import lecteur_pdf.Fenetre;
/** /**
* Élément de Menu Zoom 150% qui permet de zoomer * Élément de {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* qui permet de zoomer
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see MenuItem
*/ */
public class ZoomPlus extends MenuItem { public class ZoomPlus extends MenuItem {
/** /**
* Créé un nouvel élément de Menu "Zoom 150%" * Créé un nouvel élément de
* {@link lecteur_pdf.menuBar.menu.MenuAffichage MenuAffichage}
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la {@link Fenetre fenêtre} qui possède
* l'instance de ce
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}
*/ */
public ZoomPlus(Fenetre parent) { public ZoomPlus(Fenetre parent) {
super(parent, "Zoom 150%"); super(parent, "Zoom 150%");
+44 -18
View File
@@ -14,29 +14,44 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
/** /**
* Classe qui représente un document PDF ouvert, elle permet de créer des images des pages * Classe qui représente un document PDF ouvert, elle permet de créer des
* images des pages
* *
* @author Léo Franch * @author Léo Franch
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see org.apache.pdfbox.pdmodel.PDDocument
* @see org.apache.pdfbox.rendering.PDFRenderer
* @see java.awt.image.BufferedImage
*/ */
public class DocumentPdf { public class DocumentPdf {
/** Le document PDF chargé avec PdfBox */ /**
* Le {@link org.apache.pdfbox.pdmodel.PDDocument document PDF} chargé
* avec PdfBox
*/
private final PDDocument document; private final PDDocument document;
/** L'outil de rendus de PdfBox */ /**
* L'outil de {@link org.apache.pdfbox.rendering.PDFRenderer rendus} de
* PdfBox
*/
private PDFRenderer renderer; private PDFRenderer renderer;
/** La largeur par défaut de la page courante */ /**
* La largeur par défaut de la page courante
*/
private int minWidth; private int minWidth;
/** La longueur par défaut de la page courante */ /**
* La longueur par défaut de la page courante
*/
private int minHeight; private int minHeight;
/** /**
* Charge un nouveau document PDF * Charge un nouveau
* {@link org.apache.pdfbox.pdmodel.PDDocument document PDF}
* *
* @param file Le fichier PDF à charger * @param file Le fichier PDF à charger
* @throws IOException Si le document passé en argument est illisible * @throws IOException Si le document passé en argument est illisible
@@ -48,34 +63,44 @@ public class DocumentPdf {
minHeight = -1; minHeight = -1;
} }
/** @return La largeur par défaut de la page courante */ /**
* @return La largeur par défaut de la page courante
*/
public int getMinWidth() { public int getMinWidth() {
return minWidth; return minWidth;
} }
/** @return La longueur par défaut de la page courante */ /**
* @return La longueur par défaut de la page courante
*/
public int getMinHeight() { public int getMinHeight() {
return minHeight; return minHeight;
} }
/** @return Le nombre de pages du document */ /**
* @return Le nombre de pages du document
*/
public int getNbPages() { public int getNbPages() {
return document.getNumberOfPages(); return document.getNumberOfPages();
} }
/** /**
* Créé une image de la page voulue * Créé une {@link java.awt.image.BufferedImage image} de la page voulue
* *
* @param pageIndex Numéro de la page désirée (compris entre 0 et le * @param pageIndex Numéro de la page désirée (compris entre 0 et le
* nombre maximal de pages) * nombre maximal de pages)
* @param scale Taille de la page (La qualité de l'image est amélioré * @param scale Taille de la page (La qualité de l'image est amélioré
* suivant cette valeur) * suivant cette valeur)
* @return Une image de la page demandée * @return Une {@link java.awt.image.BufferedImage image} de la page
* @throws IOException Si l'image de rendu n'as pas pu être créée * demandée
* @throws IOException Si l'image de rendu n'as pas pu être
* créée
* @throws IllegalArgumentException Si le numero de page est invalide * @throws IllegalArgumentException Si le numero de page est invalide
* (n'est pas compris entre 0 et le nombre maximal de pages) * (n'est pas compris entre 0 et le
* nombre maximal de pages)
*/ */
public BufferedImage renderPage(int pageIndex, float scale) throws IOException { public BufferedImage renderPage(int pageIndex, float scale) throws
IOException {
if (pageIndex < 0 || pageIndex >= this.getNbPages()) { if (pageIndex < 0 || pageIndex >= this.getNbPages()) {
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
@@ -99,6 +124,7 @@ public class DocumentPdf {
document.close(); document.close();
minWidth = -1; minWidth = -1;
minHeight = -1; minHeight = -1;
} catch (IOException ignored) {} } catch (IOException ignored) {
}
} }
} }