mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-05-13 17:11:51 +00:00
Ajout commentaires et refactor
This commit is contained in:
@@ -122,7 +122,8 @@ public class Fenetre extends JFrame {
|
||||
|
||||
/* Si la liste des fenêtres n'est pas pleine alors on réactive le
|
||||
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 */
|
||||
if (GestionFenetre.FENETRE_LIST.size() == 0) System.exit(0);
|
||||
|
||||
@@ -51,9 +51,7 @@ public class GestionFenetre {
|
||||
* (mode Synchronisé)
|
||||
*/
|
||||
public static void nextPages() {
|
||||
for (Fenetre ihm : FENETRE_LIST) {
|
||||
ihm.getPdfPanel().nextPage();
|
||||
}
|
||||
for (Fenetre ihm : FENETRE_LIST) ihm.getPdfPanel().nextPage();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -61,9 +59,7 @@ public class GestionFenetre {
|
||||
* (mode Synchronisé)
|
||||
*/
|
||||
public static void previousPages() {
|
||||
for (Fenetre ihm : FENETRE_LIST) {
|
||||
ihm.getPdfPanel().previousPage();
|
||||
}
|
||||
for (Fenetre ihm : FENETRE_LIST) ihm.getPdfPanel().previousPage();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,7 +10,7 @@ import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* Classe outils permettant de creer des fenêtre Popups
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -19,6 +19,14 @@ import java.awt.*;
|
||||
*/
|
||||
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) {
|
||||
JOptionPane d = new JOptionPane();
|
||||
String[] choix = {"Oui", "Non"};
|
||||
@@ -26,12 +34,16 @@ public class Popup {
|
||||
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) {
|
||||
JOptionPane d = new JOptionPane();
|
||||
String[] choix = {"OK"};
|
||||
JOptionPane.showOptionDialog(parent, message, titre, JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, choix, choix[0]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -18,25 +18,37 @@ import java.io.File;
|
||||
* @author Tristan NOGARET
|
||||
* @author Lucàs VABRE
|
||||
* @author Noé VILLENEUVE
|
||||
* @version 1.0
|
||||
*/
|
||||
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
|
||||
*
|
||||
* @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) {
|
||||
|
||||
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());
|
||||
@@ -67,6 +79,7 @@ public class SelectionnerFichier {
|
||||
return new File(fileChooser.getSelectedFile().getAbsolutePath());
|
||||
}
|
||||
|
||||
/* Renvoie null si le fichier n'est pas trouvé */
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import lecteur_pdf.menuBar.menu.MenuOptions;
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* TODO commentaires
|
||||
* Barre de menu contenant l'ensemble des menus de l'application
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -23,7 +23,12 @@ import javax.swing.*;
|
||||
* @author Tristan Nogaret
|
||||
*/
|
||||
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) {
|
||||
add(new MenuFichier(parent));
|
||||
add(new MenuAffichage(parent));
|
||||
|
||||
@@ -49,5 +49,4 @@ public class MenuAffichage extends JMenu {
|
||||
add(new PageEntiere(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
|
||||
*/
|
||||
@SuppressWarnings("GrazieInspection")
|
||||
public MenuMode(Fenetre parent) {
|
||||
super("Mode");
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
|
||||
/**
|
||||
* TODO commentaires
|
||||
* Element de Menu Fermer qui permet de fermer le document PDF courrant
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -22,6 +22,12 @@ import java.awt.event.ActionEvent;
|
||||
*/
|
||||
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"
|
||||
*
|
||||
@@ -34,10 +40,8 @@ public class FermerFichier extends MenuItem {
|
||||
@Override
|
||||
protected void action(ActionEvent evt) {
|
||||
if (parent.getPdfPanel().isCharge()) {
|
||||
String TITRE = "Fermeture du document";
|
||||
String MESSAGE = "Êtes-vous sûr de vouloir fermer le document ?";
|
||||
|
||||
if (Popup.OuiNonPopup(parent, TITRE, MESSAGE) == JOptionPane.YES_OPTION) parent.fermerPdf();
|
||||
int resultatPopup = Popup.OuiNonPopup(parent, TITRE, MESSAGE);
|
||||
if (resultatPopup == JOptionPane.YES_OPTION) parent.fermerPdf();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,8 @@ import java.awt.event.ActionEvent;
|
||||
*/
|
||||
public abstract class MenuItem extends JMenuItem {
|
||||
|
||||
/**
|
||||
* Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
Fenetre parent;
|
||||
/** Référence de la fenêtre qui possède l'instance de ce MenuItem */
|
||||
final 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
|
||||
|
||||
@@ -12,7 +12,7 @@ import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
|
||||
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 Lucas Vabre
|
||||
@@ -22,7 +22,7 @@ import javax.swing.*;
|
||||
public class ModeSepare extends JRadioButtonMenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* Crée un nouvel Element de Menu "Mode Séparé"
|
||||
*/
|
||||
public ModeSepare() {
|
||||
super("Mode Séparé");
|
||||
|
||||
@@ -12,7 +12,7 @@ import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
|
||||
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 Lucas Vabre
|
||||
@@ -22,7 +22,7 @@ import javax.swing.*;
|
||||
public class ModeSynchronise extends JRadioButtonMenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* Crée un nouvel Element de Menu "Mode Synchronisé"
|
||||
*/
|
||||
public ModeSynchronise() {
|
||||
super("Mode Synchronisé");
|
||||
|
||||
@@ -12,7 +12,7 @@ import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
|
||||
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 Lucas Vabre
|
||||
@@ -22,7 +22,8 @@ import java.awt.event.ActionEvent;
|
||||
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
|
||||
*/
|
||||
public ModifierTouches(Fenetre parent) {
|
||||
|
||||
@@ -13,7 +13,7 @@ import lecteur_pdf.Fenetre;
|
||||
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 Lucas Vabre
|
||||
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
|
||||
public class NouvelleFenetre extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Nouvelle Fenêtre"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public NouvelleFenetre(Fenetre parent) {
|
||||
super(parent, "Nouvelle Fenêtre");
|
||||
|
||||
@@ -10,11 +10,12 @@ import lecteur_pdf.Fenetre;
|
||||
import lecteur_pdf.Popup;
|
||||
import lecteur_pdf.SelectionnerFichier;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* TODO commentaires
|
||||
* Element de Menu Ouvrir Fichier qui permet d'ouvrir un document
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -23,37 +24,43 @@ import java.io.File;
|
||||
*/
|
||||
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) {
|
||||
super(parent, "Ouvrir");
|
||||
|
||||
// setRaccourcis(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void action(ActionEvent evt) {
|
||||
/* On charge le fichier si c'est possible */
|
||||
File fichier = SelectionnerFichier.ouvrirFichier(parent);
|
||||
|
||||
if (fichier == null) {
|
||||
return;
|
||||
}
|
||||
int valide = parent.getPdfPanel().isCharge()
|
||||
? Popup.OuiNonPopup(parent, FermerFichier.TITRE, FermerFichier.MESSAGE)
|
||||
: JOptionPane.YES_OPTION;
|
||||
|
||||
/* S'il y a deja un fichier d'ouvert, on le ferme */
|
||||
parent.getPdfPanel().dechargerPdf();
|
||||
parent.setTitle(Fenetre.TITRE);
|
||||
parent.pack();
|
||||
if (valide == JOptionPane.YES_OPTION) {
|
||||
/* On charge le fichier si c'est possible */
|
||||
File fichier = SelectionnerFichier.ouvrirFichier(parent);
|
||||
|
||||
if (parent.getPdfPanel().chargerPdf(fichier)) {
|
||||
parent.setTitle(Fenetre.TITRE + " - " + fichier.getName());
|
||||
parent.pack();
|
||||
} else {
|
||||
final String TITRE = "Erreur";
|
||||
final String MESSAGE = "Erreur : Le document n'as pas pu être chargé";
|
||||
Popup.errorPopup(parent, TITRE, MESSAGE);
|
||||
if (fichier != null) {
|
||||
/* S'il y a deja un fichier d'ouvert, on le ferme */
|
||||
parent.getPdfPanel().dechargerPdf();
|
||||
parent.setTitle(Fenetre.TITRE);
|
||||
parent.pack();
|
||||
|
||||
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;
|
||||
|
||||
import lecteur_pdf.Fenetre;
|
||||
|
||||
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 {
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public PageEntiere(Fenetre parent) {
|
||||
|
||||
@@ -13,7 +13,7 @@ import lecteur_pdf.Fenetre;
|
||||
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 Lucas Vabre
|
||||
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
|
||||
public class PagePrecedente extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Page Précédente"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public PagePrecedente(Fenetre parent) {
|
||||
super(parent, "Page précédente");
|
||||
|
||||
@@ -13,7 +13,7 @@ import lecteur_pdf.Fenetre;
|
||||
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 Lucas Vabre
|
||||
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
|
||||
public class PageSuivante extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Page Suivante"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public PageSuivante(Fenetre parent) {
|
||||
super(parent, "Page suivante");
|
||||
|
||||
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
|
||||
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 Lucas Vabre
|
||||
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
|
||||
public class PleinEcran extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Plein Ecran"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public PleinEcran(Fenetre parent) {
|
||||
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;
|
||||
|
||||
import lecteur_pdf.Fenetre;
|
||||
|
||||
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{
|
||||
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public PleineLargeur(Fenetre parent) {
|
||||
|
||||
@@ -13,7 +13,7 @@ import javax.swing.*;
|
||||
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 Lucas Vabre
|
||||
@@ -23,8 +23,9 @@ import java.awt.event.ActionEvent;
|
||||
public class Quitter extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Quitter"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public Quitter(Fenetre parent) {
|
||||
super(parent, "Quitter");
|
||||
|
||||
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
|
||||
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 Lucas Vabre
|
||||
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
|
||||
public class ZoomDefaut extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Zoom 100%"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public ZoomDefaut(Fenetre parent) {
|
||||
super(parent, "Zoom 100%");
|
||||
|
||||
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
|
||||
import java.awt.event.ActionEvent;
|
||||
|
||||
/**
|
||||
* TODO commentaires
|
||||
* Element de Menu Zoom 50% qui permet de dézoomer
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
|
||||
public class ZoomMoins extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Zoom 50%"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public ZoomMoins(Fenetre parent) {
|
||||
super(parent, "Zoom 50%");
|
||||
|
||||
@@ -11,7 +11,7 @@ import lecteur_pdf.Fenetre;
|
||||
import java.awt.event.ActionEvent;
|
||||
|
||||
/**
|
||||
* TODO commentaires
|
||||
* Element de Menu Zoom 150% qui permet de zoomer
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -21,8 +21,9 @@ import java.awt.event.ActionEvent;
|
||||
public class ZoomPlus extends MenuItem {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
* @param parent
|
||||
* Crée un nouvel Element de Menu "Zoom 150%"
|
||||
*
|
||||
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
|
||||
*/
|
||||
public ZoomPlus(Fenetre parent) {
|
||||
super(parent, "Zoom 150%");
|
||||
|
||||
@@ -23,17 +23,16 @@ import java.io.IOException;
|
||||
*/
|
||||
public class DocumentPdf {
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
/** TODO */
|
||||
private PDDocument document;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
/** TODO */
|
||||
private PDFRenderer renderer;
|
||||
|
||||
/** TODO */
|
||||
private int minWidth;
|
||||
|
||||
/** TODO */
|
||||
private int minHeight;
|
||||
|
||||
/**
|
||||
@@ -49,10 +48,16 @@ public class DocumentPdf {
|
||||
minHeight = -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public int getMinWidth() {
|
||||
return minWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public int getMinHeight() {
|
||||
return minHeight;
|
||||
}
|
||||
@@ -66,11 +71,16 @@ public class DocumentPdf {
|
||||
return document.getNumberOfPages();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public BufferedImage renderPage(int pageIndex) throws IOException {
|
||||
return renderPage(pageIndex, 1.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public BufferedImage setScale(float scale) {
|
||||
try {
|
||||
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() {
|
||||
try {
|
||||
|
||||
@@ -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);
|
||||
// }
|
||||
//
|
||||
//}
|
||||
@@ -135,15 +135,31 @@ public class PdfPanel extends JPanel {
|
||||
else GestionFenetre.previousPages();
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public void resize() {
|
||||
if (pdfLoader != null && !processing) {
|
||||
scaleSizing = pleineLargeur
|
||||
? (((float) viewport.getWidth() - (float) scrollPane.getVerticalScrollBar().getWidth()) / (float) pdfLoader.getMinWidth()) - scaleZoom
|
||||
: (((float) viewport.getHeight() - (float) scrollPane.getHorizontalScrollBar().getHeight()) / (float) pdfLoader.getMinHeight()) - scaleZoom;
|
||||
updateScaleSizing(scaleSizing);
|
||||
if (pdfLoader == null || processing) return;
|
||||
|
||||
if (pleineLargeur) {
|
||||
float viewportWidth = viewport.getWidth();
|
||||
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) {
|
||||
this.pleineLargeur = pleineLargeur;
|
||||
resize();
|
||||
@@ -156,8 +172,9 @@ public class PdfPanel extends JPanel {
|
||||
* @return true si le prédicat est vérifié, false sinon
|
||||
*/
|
||||
private boolean isPageValide(int index) {
|
||||
if (pdfLoader == null) return false;
|
||||
return 0 <= index && index < pdfLoader.getNbPages();
|
||||
return pdfLoader != null
|
||||
&& 0 <= index
|
||||
&& index < pdfLoader.getNbPages();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -171,13 +188,12 @@ public class PdfPanel extends JPanel {
|
||||
setPdfLoader(new DocumentPdf(pdfFile));
|
||||
setPage(0);
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}
|
||||
} catch (IOException ignored) {}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pdfLoader
|
||||
* @param pdfLoader un nouveau document PDF à affecter à la fenêtre
|
||||
*/
|
||||
public void setPdfLoader(DocumentPdf pdfLoader) {
|
||||
this.pdfLoader = pdfLoader;
|
||||
@@ -187,25 +203,25 @@ public class PdfPanel extends JPanel {
|
||||
* Décharge le document courant s'il y en a un
|
||||
*/
|
||||
public void dechargerPdf() {
|
||||
if (isCharge()) {
|
||||
/* Ferme le loader et l'efface */
|
||||
pdfLoader.close();
|
||||
pdfLoader = null;
|
||||
if (!isCharge()) return;
|
||||
|
||||
/* Efface l'image de la page */
|
||||
page.setIcon(null);
|
||||
currentPage = 0;
|
||||
/* Ferme le loader et l'efface */
|
||||
pdfLoader.close();
|
||||
pdfLoader = null;
|
||||
|
||||
/* Interface Vide */
|
||||
indexPageInput.setText("");
|
||||
maxPageLabel.setText("/ -");
|
||||
/* Efface l'image de la page */
|
||||
page.setIcon(null);
|
||||
currentPage = 0;
|
||||
|
||||
/* Efface les données relatives au zoom */
|
||||
scaleSizing = 0.0f;
|
||||
scaleZoom = 1.0f;
|
||||
/* Interface Vide */
|
||||
indexPageInput.setText("");
|
||||
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%)
|
||||
*/
|
||||
public void updateScaleSizing(float scale) {
|
||||
private void updateScaleSizing(float scale) {
|
||||
scaleSizing = scale;
|
||||
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
|
||||
*/
|
||||
private void setPage(int index) {
|
||||
if (isPageValide(index)) {
|
||||
if (!isPageValide(index)) return;
|
||||
|
||||
processing = true;
|
||||
try {
|
||||
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing)));
|
||||
currentPage = index;
|
||||
indexPageInput.setText(Integer.toString(currentPage + 1));
|
||||
maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages()));
|
||||
} catch (IOException ignored) {}
|
||||
processing = false;
|
||||
}
|
||||
processing = true;
|
||||
try {
|
||||
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing)));
|
||||
currentPage = index;
|
||||
indexPageInput.setText(Integer.toString(currentPage + 1));
|
||||
maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages()));
|
||||
} catch (IOException ignored) {}
|
||||
processing = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user