Ajout commentaires et refactor

This commit is contained in:
LucasV-IUT
2022-03-09 22:35:44 +01:00
parent dd7a7aa796
commit 24b95c1264
26 changed files with 229 additions and 191 deletions
+2 -1
View File
@@ -122,7 +122,8 @@ public class Fenetre extends JFrame {
/* Si la liste des fenêtres n'est pas pleine alors on réactive le /* Si la liste des fenêtres n'est pas pleine alors on réactive le
bouton pour créer une nouvelle fenêtre */ bouton pour créer une nouvelle fenêtre */
if (GestionFenetre.FENETRE_LIST.size() < GestionFenetre.NB_MAX_PDF) GestionMode.activerBtnNouvelleFenetre(); if (GestionFenetre.FENETRE_LIST.size() < GestionFenetre.NB_MAX_PDF)
GestionMode.activerBtnNouvelleFenetre();
/* S'il n'y a plus de fenêtres ouvertes on quitte l'application */ /* S'il n'y a plus de fenêtres ouvertes on quitte l'application */
if (GestionFenetre.FENETRE_LIST.size() == 0) System.exit(0); if (GestionFenetre.FENETRE_LIST.size() == 0) System.exit(0);
+2 -6
View File
@@ -51,9 +51,7 @@ public class GestionFenetre {
* (mode Synchronisé) * (mode Synchronisé)
*/ */
public static void nextPages() { public static void nextPages() {
for (Fenetre ihm : FENETRE_LIST) { for (Fenetre ihm : FENETRE_LIST) ihm.getPdfPanel().nextPage();
ihm.getPdfPanel().nextPage();
}
} }
/** /**
@@ -61,9 +59,7 @@ public class GestionFenetre {
* (mode Synchronisé) * (mode Synchronisé)
*/ */
public static void previousPages() { public static void previousPages() {
for (Fenetre ihm : FENETRE_LIST) { for (Fenetre ihm : FENETRE_LIST) ihm.getPdfPanel().previousPage();
ihm.getPdfPanel().previousPage();
}
} }
/** /**
+16 -4
View File
@@ -10,7 +10,7 @@ import javax.swing.*;
import java.awt.*; import java.awt.*;
/** /**
* TODO * Classe outils permettant de creer des fenêtre Popups
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -19,6 +19,14 @@ import java.awt.*;
*/ */
public class Popup { public class Popup {
/**
* Crée une nouvelle fenêtre comportant un message et deux bouttons : Oui et Non
*
* @param parent La fenêtre parente de référence
* @param titre Titre de la fenêtre
* @param message Message affiché dans la fenêtre
* @return JOptionPane.YES_OPTION si oui est cliqué, JOptionPane.NO_OPTION si non est cliqué
*/
public static int OuiNonPopup(Component parent, String titre, String message) { public static int OuiNonPopup(Component parent, String titre, String message) {
JOptionPane d = new JOptionPane(); JOptionPane d = new JOptionPane();
String[] choix = {"Oui", "Non"}; String[] choix = {"Oui", "Non"};
@@ -26,12 +34,16 @@ public class Popup {
null, choix, choix[0]); null, choix, choix[0]);
} }
/**
* Crée une nouvelle fenêtre comportant un message d'erreur avec un boutton OK
*
* @param parent La fenêtre parente de référence
* @param titre Titre de la fenêtre
* @param message Message d'erreur
*/
public static void errorPopup(Component parent, String titre, String message) { public static void errorPopup(Component parent, String titre, String message) {
JOptionPane d = new JOptionPane(); JOptionPane d = new JOptionPane();
String[] choix = {"OK"}; String[] choix = {"OK"};
JOptionPane.showOptionDialog(parent, message, titre, JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, choix, choix[0]); JOptionPane.showOptionDialog(parent, message, titre, JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, choix, choix[0]);
} }
} }
+23 -10
View File
@@ -18,25 +18,37 @@ import java.io.File;
* @author Tristan NOGARET * @author Tristan NOGARET
* @author Lucàs VABRE * @author Lucàs VABRE
* @author Noé VILLENEUVE * @author Noé VILLENEUVE
* @version 1.0
*/ */
public class SelectionnerFichier { public class SelectionnerFichier {
/** Le titre de la fenêtre */
private static final String TITRE = "Sélectionnez un PDF";
/** Description du filtre */
private static final String DESCRIPTION = "PDF files (*.pdf)";
/** Extension de fichier filtré */
private static final String EXTENSION = "pdf";
/** Valeur du boutton OK */
private static final String BOUTON_OK = "Ouvrir";
/** Valeur du boutton Annuler */
private static final String BOUTON_ANNULER = "Annuler";
/** indice au survol du boutton Ok */
private static final String INDICE_BOUTON_OK = "Ouvre le fichier sélectionné";
/** Indice au survol du boutton Annuler */
private static final String INDICE_BOUTON_ANNULER = "Annule la sélection";
/** /**
* Méthode qui créée une fenêtre pour que l'utilisateur choisisse un fichier PDF * Méthode qui créée une fenêtre pour que l'utilisateur choisisse un fichier PDF
* *
* @return le fichier choisi par l'utilisateur * @return le fichier choisi par l'utilisateur, null si aucun fichier n'est choisis
*/ */
public static File ouvrirFichier(JFrame parent) { public static File ouvrirFichier(JFrame parent) {
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 */ /* Crée une fenêtre de sélection de fichier */
JFileChooser fileChooser = new JFileChooser( JFileChooser fileChooser = new JFileChooser(
FileSystemView.getFileSystemView().getDefaultDirectory()); FileSystemView.getFileSystemView().getDefaultDirectory());
@@ -67,6 +79,7 @@ public class SelectionnerFichier {
return new File(fileChooser.getSelectedFile().getAbsolutePath()); return new File(fileChooser.getSelectedFile().getAbsolutePath());
} }
/* Renvoie null si le fichier n'est pas trouvé */
return null; return null;
} }
} }
+7 -2
View File
@@ -15,7 +15,7 @@ import lecteur_pdf.menuBar.menu.MenuOptions;
import javax.swing.*; import javax.swing.*;
/** /**
* TODO commentaires * Barre de menu contenant l'ensemble des menus de l'application
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -23,7 +23,12 @@ import javax.swing.*;
* @author Tristan Nogaret * @author Tristan Nogaret
*/ */
public class MenuBar extends JMenuBar { public class MenuBar extends JMenuBar {
/**
* Crée une nouvelle barre de menu avec l'ensemble des menu de l'application
*
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/
public MenuBar(Fenetre parent) { public MenuBar(Fenetre parent) {
add(new MenuFichier(parent)); add(new MenuFichier(parent));
add(new MenuAffichage(parent)); add(new MenuAffichage(parent));
@@ -49,5 +49,4 @@ public class MenuAffichage extends JMenu {
add(new PageEntiere(parent)); add(new PageEntiere(parent));
add(new PleineLargeur(parent)); add(new PleineLargeur(parent));
} }
} }
@@ -30,7 +30,6 @@ public class MenuMode extends JMenu {
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce menu * @param parent Référence de la fenêtre qui possède l'instance de ce menu
*/ */
@SuppressWarnings("GrazieInspection")
public MenuMode(Fenetre parent) { public MenuMode(Fenetre parent) {
super("Mode"); super("Mode");
@@ -13,7 +13,7 @@ import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Fermer qui permet de fermer le document PDF courrant
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -22,6 +22,12 @@ import java.awt.event.ActionEvent;
*/ */
public class FermerFichier extends MenuItem { public class FermerFichier extends MenuItem {
/** Titre de la popup lors de la fermeture d'un document */
public static final String TITRE = "Fermeture du document";
/** Message de la Popup lors de la fermeture d'un document */
public static final String MESSAGE = "Êtes-vous sûr de vouloir fermer le document ?";
/** /**
* Crée un nouvel Element de Menu "Fermer" * Crée un nouvel Element de Menu "Fermer"
* *
@@ -34,10 +40,8 @@ public class FermerFichier extends MenuItem {
@Override @Override
protected void action(ActionEvent evt) { protected void action(ActionEvent evt) {
if (parent.getPdfPanel().isCharge()) { if (parent.getPdfPanel().isCharge()) {
String TITRE = "Fermeture du document"; int resultatPopup = Popup.OuiNonPopup(parent, TITRE, MESSAGE);
String MESSAGE = "Êtes-vous sûr de vouloir fermer le document ?"; if (resultatPopup == JOptionPane.YES_OPTION) parent.fermerPdf();
if (Popup.OuiNonPopup(parent, TITRE, MESSAGE) == JOptionPane.YES_OPTION) parent.fermerPdf();
} }
} }
} }
@@ -22,10 +22,8 @@ import java.awt.event.ActionEvent;
*/ */
public abstract class MenuItem extends JMenuItem { public abstract class MenuItem extends JMenuItem {
/** /** Référence de la fenêtre qui possède l'instance de ce MenuItem */
* Référence de la fenêtre qui possède l'instance de ce MenuItem final Fenetre parent;
*/
Fenetre parent;
/** /**
* Crée un nouvel Element de Menu avec un nom, une action et se référence dans la liste des raccourcis claviers * Crée un nouvel Element de Menu avec un nom, une action et se référence dans la liste des raccourcis claviers
@@ -12,7 +12,7 @@ import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import javax.swing.*; import javax.swing.*;
/** /**
* TODO commentaires * Element de Menu Mode Séparé qui permet d'activer le défilement des pages de documents en séparé
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -22,7 +22,7 @@ import javax.swing.*;
public class ModeSepare extends JRadioButtonMenuItem { public class ModeSepare extends JRadioButtonMenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Mode Séparé"
*/ */
public ModeSepare() { public ModeSepare() {
super("Mode Séparé"); super("Mode Séparé");
@@ -12,7 +12,7 @@ import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import javax.swing.*; import javax.swing.*;
/** /**
* TODO commentaires * Element de Menu Mode Synchronisé qui permet d'activer le défilement des pages de documents en simultané
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -22,7 +22,7 @@ import javax.swing.*;
public class ModeSynchronise extends JRadioButtonMenuItem { public class ModeSynchronise extends JRadioButtonMenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Mode Synchronisé"
*/ */
public ModeSynchronise() { public ModeSynchronise() {
super("Mode Synchronisé"); super("Mode Synchronisé");
@@ -12,7 +12,7 @@ import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Modifier Touches qui permet d'ouvrir une fenêtre pour modifier les raccourcis claviers de l'application
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -22,7 +22,8 @@ import java.awt.event.ActionEvent;
public class ModifierTouches extends MenuItem { public class ModifierTouches extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Modifier Touches"
*
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public ModifierTouches(Fenetre parent) { public ModifierTouches(Fenetre parent) {
@@ -13,7 +13,7 @@ import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Nouvelle Fenetre qui permet d'ouvrir une autre fenêtre (pouvant contenir un PDF) si le nombre maximal de fenêtre n'est pas atteint
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
public class NouvelleFenetre extends MenuItem { public class NouvelleFenetre extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Nouvelle Fenêtre"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public NouvelleFenetre(Fenetre parent) { public NouvelleFenetre(Fenetre parent) {
super(parent, "Nouvelle Fenêtre"); super(parent, "Nouvelle Fenêtre");
@@ -10,11 +10,12 @@ import lecteur_pdf.Fenetre;
import lecteur_pdf.Popup; import lecteur_pdf.Popup;
import lecteur_pdf.SelectionnerFichier; import lecteur_pdf.SelectionnerFichier;
import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.io.File; import java.io.File;
/** /**
* TODO commentaires * Element de Menu Ouvrir Fichier qui permet d'ouvrir un document
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -23,37 +24,43 @@ import java.io.File;
*/ */
public class OuvrirFichier extends MenuItem { public class OuvrirFichier extends MenuItem {
/** Titre de la popup d'erreur lors d'une erreur d'ouverture de fichier */
public static final String TITRE_ERREUR = "Erreur";
/** Message de la popup d'erreur lors d'une erreur d'ouverture de fichier */
public static final String MESSAGE_ERREUR = "Erreur : Le document n'as pas pu être chargé";
/** /**
* TODO * Crée un nouvel Element de Menu "Ouvrir Fichier"
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public OuvrirFichier(Fenetre parent) { public OuvrirFichier(Fenetre parent) {
super(parent, "Ouvrir"); super(parent, "Ouvrir");
// setRaccourcis(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK);
} }
@Override @Override
protected void action(ActionEvent evt) { protected void action(ActionEvent evt) {
/* On charge le fichier si c'est possible */
File fichier = SelectionnerFichier.ouvrirFichier(parent);
if (fichier == null) { int valide = parent.getPdfPanel().isCharge()
return; ? Popup.OuiNonPopup(parent, FermerFichier.TITRE, FermerFichier.MESSAGE)
} : JOptionPane.YES_OPTION;
/* S'il y a deja un fichier d'ouvert, on le ferme */ if (valide == JOptionPane.YES_OPTION) {
parent.getPdfPanel().dechargerPdf(); /* On charge le fichier si c'est possible */
parent.setTitle(Fenetre.TITRE); File fichier = SelectionnerFichier.ouvrirFichier(parent);
parent.pack();
if (parent.getPdfPanel().chargerPdf(fichier)) { if (fichier != null) {
parent.setTitle(Fenetre.TITRE + " - " + fichier.getName()); /* S'il y a deja un fichier d'ouvert, on le ferme */
parent.pack(); parent.getPdfPanel().dechargerPdf();
} else { parent.setTitle(Fenetre.TITRE);
final String TITRE = "Erreur"; parent.pack();
final String MESSAGE = "Erreur : Le document n'as pas pu être chargé";
Popup.errorPopup(parent, TITRE, MESSAGE); if (parent.getPdfPanel().chargerPdf(fichier)) {
parent.setTitle(Fenetre.TITRE + " - " + fichier.getName());
parent.pack();
} else Popup.errorPopup(parent, TITRE_ERREUR, MESSAGE_ERREUR);
}
} }
} }
} }
@@ -1,12 +1,27 @@
/*
* PageEntiere.java, 09/03/2022
* IUT Rodez 2021-2022, INFO 2
* pas de copyright, aucun droits
*/
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.Fenetre; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/**
* Element de Menu Page Entière qui permet d'afficher l'intégralité du document courrant verticalement
*
* @author Léo Franch
* @author Lucas Vabre
* @author Noé Villeneuve
* @author Tristan Nogaret
*/
public class PageEntiere extends MenuItem { public class PageEntiere extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Page Entiere"
*
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public PageEntiere(Fenetre parent) { public PageEntiere(Fenetre parent) {
@@ -13,7 +13,7 @@ import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Page Precedente qui permet d'afficher la page précédente du document courrant (ou les pages précédentes si le mode Synchronisé est activé)
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
public class PagePrecedente extends MenuItem { public class PagePrecedente extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Page Précédente"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public PagePrecedente(Fenetre parent) { public PagePrecedente(Fenetre parent) {
super(parent, "Page précédente"); super(parent, "Page précédente");
@@ -13,7 +13,7 @@ import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Page Suivante qui permet d'afficher la page suivante du document courrant (ou les pages suivantes si le mode Synchronisé est activé)
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
public class PageSuivante extends MenuItem { public class PageSuivante extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Page Suivante"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public PageSuivante(Fenetre parent) { public PageSuivante(Fenetre parent) {
super(parent, "Page suivante"); super(parent, "Page suivante");
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Plein Ecran qui permet d'afficher la page la fenêtre courrante en plein écran
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
public class PleinEcran extends MenuItem { public class PleinEcran extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Plein Ecran"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public PleinEcran(Fenetre parent) { public PleinEcran(Fenetre parent) {
super(parent, "Mode Plein Écran"); super(parent, "Mode Plein Écran");
@@ -1,14 +1,29 @@
/*
* PleineLargeur.java, 09/03/2022
* IUT Rodez 2021-2022, INFO 2
* pas de copyright, aucun droits
*/
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.Fenetre; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/**
* Element de Menu Pleine Largeur qui permet d'afficher le document courrant de manière bord à bord (la taille horizontale du document coincide avec celle de la fenêtre)
*
* @author Léo Franch
* @author Lucas Vabre
* @author Noé Villeneuve
* @author Tristan Nogaret
*/
public class PleineLargeur extends MenuItem{ public class PleineLargeur extends MenuItem{
/** /**
* TODO * Crée un nouvel Element de Menu "Pleine Largeur"
*
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public PleineLargeur(Fenetre parent) { public PleineLargeur(Fenetre parent) {
@@ -13,7 +13,7 @@ import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Quitter qui permet de fermer la fenêtre courrante, ferme l'application si il s'agit de la dernière fenêtre fermée
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
public class Quitter extends MenuItem { public class Quitter extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Quitter"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public Quitter(Fenetre parent) { public Quitter(Fenetre parent) {
super(parent, "Quitter"); super(parent, "Quitter");
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Zoom 100% qui permet de mettre le Zoom par défaut
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
public class ZoomDefaut extends MenuItem { public class ZoomDefaut extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Zoom 100%"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public ZoomDefaut(Fenetre parent) { public ZoomDefaut(Fenetre parent) {
super(parent, "Zoom 100%"); super(parent, "Zoom 100%");
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Zoom 50% qui permet de dézoomer
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
public class ZoomMoins extends MenuItem { public class ZoomMoins extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Zoom 50%"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public ZoomMoins(Fenetre parent) { public ZoomMoins(Fenetre parent) {
super(parent, "Zoom 50%"); super(parent, "Zoom 50%");
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Element de Menu Zoom 150% qui permet de zoomer
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
public class ZoomPlus extends MenuItem { public class ZoomPlus extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Zoom 150%"
* @param parent *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public ZoomPlus(Fenetre parent) { public ZoomPlus(Fenetre parent) {
super(parent, "Zoom 150%"); super(parent, "Zoom 150%");
+18 -8
View File
@@ -23,17 +23,16 @@ import java.io.IOException;
*/ */
public class DocumentPdf { public class DocumentPdf {
/** /** TODO */
* TODO
*/
private PDDocument document; private PDDocument document;
/** /** TODO */
* TODO
*/
private PDFRenderer renderer; private PDFRenderer renderer;
/** TODO */
private int minWidth; private int minWidth;
/** TODO */
private int minHeight; private int minHeight;
/** /**
@@ -49,10 +48,16 @@ public class DocumentPdf {
minHeight = -1; minHeight = -1;
} }
/**
* TODO
*/
public int getMinWidth() { public int getMinWidth() {
return minWidth; return minWidth;
} }
/**
* TODO
*/
public int getMinHeight() { public int getMinHeight() {
return minHeight; return minHeight;
} }
@@ -66,11 +71,16 @@ public class DocumentPdf {
return document.getNumberOfPages(); return document.getNumberOfPages();
} }
/**
* TODO
*/
public BufferedImage renderPage(int pageIndex) throws IOException { public BufferedImage renderPage(int pageIndex) throws IOException {
return renderPage(pageIndex, 1.0f); return renderPage(pageIndex, 1.0f);
} }
/**
* TODO
*/
public BufferedImage setScale(float scale) { public BufferedImage setScale(float scale) {
try { try {
return renderPage(0, scale); return renderPage(0, scale);
@@ -102,7 +112,7 @@ public class DocumentPdf {
} }
/** /**
* TODO * Ferme le document courrant et redéfini les paramêtres par défaut
*/ */
public void close() { public void close() {
try { try {
-60
View File
@@ -1,60 +0,0 @@
//package lecteur_pdf.pdf;
//
//import javax.swing.*;
//import java.awt.*;
//import java.awt.image.BufferedImage;
//
//public class OutilsImage {
//
// /**
// * Change la taille d'une image
// * @param img
// * @param newW
// * @param newH
// * @return
// */
// public static BufferedImage resize(BufferedImage img, int newW, int newH) {
// int w = img.getWidth();
// int h = img.getHeight();
// BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
// Graphics2D g = dimg.createGraphics();
// g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
// RenderingHints.VALUE_INTERPOLATION_BILINEAR);
// g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
// g.dispose();
// return dimg;
// }
//
// /**
// *
// * @param img
// * @param newW
// * @return
// */
// public static BufferedImage resizeWidth(DocumentPdf a, Icon img, int newW) {
// int w = a.getMinWidth();
// int h = a.getMinHeight();
//
// float ratio = (float)newW / (float)w;
//
// return a.setScale(ratio);
// }
//
// /**
// *
// * @param img
// * @param newH
// * @return
// */
// public static BufferedImage resizeHeight(BufferedImage img, int newH) {
// int w = img.getWidth();
// int h = img.getHeight();
//
// int ratio = newH / (1+h);
//
// int newW = w * ratio;
//
// return resize(img, newW, newH);
// }
//
//}
+52 -37
View File
@@ -135,15 +135,31 @@ public class PdfPanel extends JPanel {
else GestionFenetre.previousPages(); else GestionFenetre.previousPages();
} }
/**
* TODO
*/
public void resize() { public void resize() {
if (pdfLoader != null && !processing) { if (pdfLoader == null || processing) return;
scaleSizing = pleineLargeur
? (((float) viewport.getWidth() - (float) scrollPane.getVerticalScrollBar().getWidth()) / (float) pdfLoader.getMinWidth()) - scaleZoom if (pleineLargeur) {
: (((float) viewport.getHeight() - (float) scrollPane.getHorizontalScrollBar().getHeight()) / (float) pdfLoader.getMinHeight()) - scaleZoom; float viewportWidth = viewport.getWidth();
updateScaleSizing(scaleSizing); float scrollpaneWidth = scrollPane.getVerticalScrollBar().getWidth();
float pdfMinWidth = pdfLoader.getMinWidth();
scaleSizing = (viewportWidth - scrollpaneWidth) / pdfMinWidth - scaleZoom;
} else {
float viewportHeight = viewport.getHeight();
float scrollpaneHeight = scrollPane.getVerticalScrollBar().getHeight();
float pdfMinHeight = pdfLoader.getMinHeight();
scaleSizing = (viewportHeight - scrollpaneHeight) / pdfMinHeight - scaleZoom;
} }
updateScaleSizing(scaleSizing);
} }
/**
* @param pleineLargeur booléen qui défini l'état du mode pleine largeur
*/
public void setPleineLargeur(boolean pleineLargeur) { public void setPleineLargeur(boolean pleineLargeur) {
this.pleineLargeur = pleineLargeur; this.pleineLargeur = pleineLargeur;
resize(); resize();
@@ -156,8 +172,9 @@ public class PdfPanel extends JPanel {
* @return true si le prédicat est vérifié, false sinon * @return true si le prédicat est vérifié, false sinon
*/ */
private boolean isPageValide(int index) { private boolean isPageValide(int index) {
if (pdfLoader == null) return false; return pdfLoader != null
return 0 <= index && index < pdfLoader.getNbPages(); && 0 <= index
&& index < pdfLoader.getNbPages();
} }
/** /**
@@ -171,13 +188,12 @@ public class PdfPanel extends JPanel {
setPdfLoader(new DocumentPdf(pdfFile)); setPdfLoader(new DocumentPdf(pdfFile));
setPage(0); setPage(0);
return true; return true;
} catch (IOException e) { } catch (IOException ignored) {}
return false; return false;
}
} }
/** /**
* @param pdfLoader * @param pdfLoader un nouveau document PDF à affecter à la fenêtre
*/ */
public void setPdfLoader(DocumentPdf pdfLoader) { public void setPdfLoader(DocumentPdf pdfLoader) {
this.pdfLoader = pdfLoader; this.pdfLoader = pdfLoader;
@@ -187,25 +203,25 @@ public class PdfPanel extends JPanel {
* Décharge le document courant s'il y en a un * Décharge le document courant s'il y en a un
*/ */
public void dechargerPdf() { public void dechargerPdf() {
if (isCharge()) { if (!isCharge()) return;
/* Ferme le loader et l'efface */
pdfLoader.close();
pdfLoader = null;
/* Efface l'image de la page */ /* Ferme le loader et l'efface */
page.setIcon(null); pdfLoader.close();
currentPage = 0; pdfLoader = null;
/* Interface Vide */ /* Efface l'image de la page */
indexPageInput.setText(""); page.setIcon(null);
maxPageLabel.setText("/ -"); currentPage = 0;
/* Efface les données relatives au zoom */ /* Interface Vide */
scaleSizing = 0.0f; indexPageInput.setText("");
scaleZoom = 1.0f; maxPageLabel.setText("/ -");
validate(); /* Efface les données relatives au zoom */
} scaleSizing = 0.0f;
scaleZoom = 1.0f;
validate();
} }
/** /**
@@ -223,7 +239,7 @@ public class PdfPanel extends JPanel {
* *
* @param scale Valeur flottante (1.00f == 100%) * @param scale Valeur flottante (1.00f == 100%)
*/ */
public void updateScaleSizing(float scale) { private void updateScaleSizing(float scale) {
scaleSizing = scale; scaleSizing = scale;
setPage(currentPage); setPage(currentPage);
} }
@@ -248,17 +264,16 @@ public class PdfPanel extends JPanel {
* @param index Le numéro de la page où l'on veut se rendre * @param index Le numéro de la page où l'on veut se rendre
*/ */
private void setPage(int index) { private void setPage(int index) {
if (isPageValide(index)) { if (!isPageValide(index)) return;
processing = true; processing = true;
try { try {
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing))); page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing)));
currentPage = index; currentPage = index;
indexPageInput.setText(Integer.toString(currentPage + 1)); indexPageInput.setText(Integer.toString(currentPage + 1));
maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages())); maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages()));
} catch (IOException ignored) {} } catch (IOException ignored) {}
processing = false; processing = false;
}
} }
/** /**