Mode séparé/Synchronisé ok

- Ajout d'une classe MenuItem qui est utilisé par tout les JMenuItems (utile pour les raccourcis claviers)
- Ajout d'une classe Raccourcis claviers avec une hash map a compléter
- Ajout de commentaires
- Erreurs ouvertures et fermetures de fichier générés, ouverture et fermeture de fenêtre géré
- Fermeture des pdf proprement
- Fermeture de l'application lorsqu'il n'y a plus de fenêtre dans l'application
This commit is contained in:
LucasV-IUT
2022-02-24 13:58:20 +01:00
parent ce255b75f7
commit 403236b721
20 changed files with 310 additions and 201 deletions
+38 -6
View File
@@ -5,37 +5,69 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class GestionPdf { public class GestionPdf {
public static String titreApplication = "LPDA";
public static boolean modeDoubleAffichage = false; public static boolean modeDoubleAffichage = false;
public static boolean modeSynchronise = false; public static boolean modeSynchronise = false;
public static final int maxPdf = 2; public static final int maxPdf = 2;
public static final List<IhmPdf> ihmPdfList = new ArrayList<>(); public static final List<IhmPdf> ihmPdfList = new ArrayList<>();
public static void setModeSynchronise(boolean value) {
modeSynchronise = value;
for(IhmPdf ihm : ihmPdfList) {
ihm.modeSepare.setSelected(!value);
ihm.modeSynchronise.setSelected(value);
}
}
/**
* Crée une nouvelle fenêtre
*/
public static void newIhmPdf() { public static void newIhmPdf() {
if (ihmPdfList.size() >= maxPdf) { if (ihmPdfList.size() >= maxPdf) {
throw new IllegalStateException(); // TODO Message erreur "nombre max de fenêtre atteint"
return;
} }
try { try {
IhmPdf ihm = new IhmPdf(SelectionnerFichier.ouvrirFichier()); IhmPdf ihm = new IhmPdf();
ihmPdfList.add(ihm); ihmPdfList.add(ihm);
} catch (IOException ignored) {} } catch (IOException ignored) {}
modeDoubleAffichage = ihmPdfList.size() >= 2; modeDoubleAffichage = ihmPdfList.size() >= 2;
} }
public static void main(String[] args) { /**
newIhmPdf(); * Methode affiche la page suivante en mode Synchronisé
} */
public static void nextPages() { public static void nextPages() {
for (IhmPdf ihm : ihmPdfList) { for (IhmPdf ihm : ihmPdfList) {
ihm.pdfPanel.nextPage(); ihm.pdfPanel.nextPage();
} }
} }
/**
* Methode affiche la page précédente en mode Synchronisé
*/
public static void previousPages() { public static void previousPages() {
for (IhmPdf ihm : ihmPdfList) { for (IhmPdf ihm : ihmPdfList) {
ihm.pdfPanel.previousPage(); ihm.pdfPanel.previousPage();
} }
} }
public void chargerRaccourcisClaviers() {
// TODO changer les raccourcis clavier a partir d'un fichier
}
public void sauvegarderRaccourcisClaviers() {
// TODO sauvegarder les raccourcis clavier dans un fichier
}
/**
* Lance l'application
* @param args non utilisé
*/
public static void main(String[] args) {
newIhmPdf();
}
} }
+26 -31
View File
@@ -7,11 +7,14 @@
package lecteur_pdf; package lecteur_pdf;
import lecteur_pdf.menuBar.MenuBar; import lecteur_pdf.menuBar.MenuBar;
import lecteur_pdf.menuBar.menuItems.ModeSepare;
import lecteur_pdf.menuBar.menuItems.ModeSynchronise;
import lecteur_pdf.pdf.PdfPanel; import lecteur_pdf.pdf.PdfPanel;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.io.File; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException; import java.io.IOException;
/** /**
@@ -23,41 +26,38 @@ public class IhmPdf extends JFrame {
PdfPanel pdfPanel; PdfPanel pdfPanel;
MenuBar menuBar; MenuBar menuBar;
ModeSepare modeSepare;
ModeSynchronise modeSynchronise;
public IhmPdf(File pdfFile) throws IOException { public IhmPdf() throws IOException {
super(pdfFile.getName()); super(GestionPdf.titreApplication);
/* Déclaration des attributs */ /* Déclaration des attributs */
menuBar = new MenuBar(this); menuBar = new MenuBar(this);
pdfPanel = new PdfPanel(pdfFile); pdfPanel = new PdfPanel();
/* Hierarchie */ /* Hierarchie */
setContentPane(pdfPanel); setContentPane(pdfPanel);
setJMenuBar(menuBar); setJMenuBar(menuBar);
/* Action à la fermeture de la fenêtre */
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent et) {
quitter();
}
});
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
/* Render de la Frame */ /* Render de la Frame */
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pack(); pack();
setVisible(true); setVisible(true);
} }
public void fermerFichier() {
try {
pdfPanel = new PdfPanel(null);
validate();
} catch (IOException ignored) {
}
}
public PdfPanel getPdfPanel() { public PdfPanel getPdfPanel() {
return pdfPanel; return pdfPanel;
} }
public void ouvrirFichier() throws IOException {
File fichier = SelectionnerFichier.ouvrirFichier();
pdfPanel = new PdfPanel(fichier);
validate();
}
private boolean fullscreen = false; private boolean fullscreen = false;
private GraphicsDevice device; private GraphicsDevice device;
@@ -78,21 +78,16 @@ public class IhmPdf extends JFrame {
} }
public void quitter() { public void quitter() {
pdfPanel.dechargerPdf();
GestionPdf.ihmPdfList.remove(this);
dispose(); dispose();
if (GestionPdf.ihmPdfList.size() == 0) {
System.exit(0);
}
} }
public void zoomDefaut() { public void setMode(ModeSepare modeSepare, ModeSynchronise modeSynchronise) {
pdfPanel.updateScale(1.0f); this.modeSepare = modeSepare;
validate(); this.modeSynchronise = modeSynchronise;
}
public void zoomMoins() {
pdfPanel.updateScale(0.5f);
validate();
}
public void zoomPlus() {
pdfPanel.updateScale(1.5f);
validate();
} }
} }
+12
View File
@@ -0,0 +1,12 @@
package lecteur_pdf;
import javax.swing.*;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class RaccourcisClavier implements Serializable {
public static Map<JMenuItem, KeyStroke> gestionnaireRaccourcis = new HashMap<>();
}
+20 -3
View File
@@ -1,7 +1,10 @@
package lecteur_pdf.menuBar.menu; package lecteur_pdf.menuBar.menu;
import lecteur_pdf.GestionPdf;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import lecteur_pdf.menuBar.menuItems.*; import lecteur_pdf.menuBar.menuItems.ModeSepare;
import lecteur_pdf.menuBar.menuItems.ModeSynchronise;
import lecteur_pdf.menuBar.menuItems.NouvelleFenetre;
import javax.swing.*; import javax.swing.*;
@@ -10,7 +13,21 @@ public class MenuMode extends JMenu {
super("Mode"); super("Mode");
// Ajoute les menu items // Ajoute les menu items
add(new NouvelleFenetre(parent)); add(new NouvelleFenetre(parent));
add(new ModeSepare(parent));
add(new ModeSynchronise(parent)); ButtonGroup groupe = new ButtonGroup();
ModeSepare modeSepare = new ModeSepare(parent);
ModeSynchronise modeSynchronise = new ModeSynchronise(parent);
add(modeSepare);
add(modeSynchronise);
groupe.add(modeSepare);
groupe.add(modeSynchronise);
modeSepare.setSelected(!GestionPdf.modeSynchronise);
modeSynchronise.setSelected(GestionPdf.modeSynchronise);
parent.setMode(modeSepare, modeSynchronise);
} }
} }
@@ -1,23 +1,21 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionPdf;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
public class FermerFichier extends JMenuItem { public class FermerFichier extends MenuItem {
IhmPdf parent;
public FermerFichier(IhmPdf parent) { public FermerFichier(IhmPdf parent) {
super("Fermer"); super(parent, "Fermer");
this.parent = parent;
addActionListener(e -> {parent.fermerFichier();}); addActionListener(e -> {
parent.getPdfPanel().dechargerPdf();
KeyStroke raccourciFermer = KeyStroke.getKeyStroke(KeyEvent.VK_X, parent.setTitle(GestionPdf.titreApplication);
KeyEvent.CTRL_DOWN_MASK); parent.pack();
setAccelerator(raccourciFermer); });
setRaccourcis(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
} }
} }
@@ -0,0 +1,30 @@
package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf;
import lecteur_pdf.RaccourcisClavier;
import javax.swing.*;
public class MenuItem extends JMenuItem {
IhmPdf parent;
public MenuItem(IhmPdf parent, String name) {
super(name);
this.parent = parent;
}
public void setRaccourcis(int key) {
KeyStroke raccourcis = KeyStroke.getKeyStroke((char)key);
setAccelerator(raccourcis);
RaccourcisClavier.gestionnaireRaccourcis.put(this, raccourcis);
}
public void setRaccourcis(int key, int mask) {
KeyStroke raccourcis = KeyStroke.getKeyStroke(key, mask);
setAccelerator(raccourcis);
RaccourcisClavier.gestionnaireRaccourcis.put(this, raccourcis);
}
}
@@ -5,7 +5,8 @@ import lecteur_pdf.IhmPdf;
import javax.swing.*; import javax.swing.*;
public class ModeSepare extends JMenuItem { public class ModeSepare extends JRadioButtonMenuItem {
IhmPdf parent; IhmPdf parent;
public ModeSepare(IhmPdf parent) { public ModeSepare(IhmPdf parent) {
@@ -13,7 +14,7 @@ public class ModeSepare extends JMenuItem {
this.parent = parent; this.parent = parent;
addActionListener(e -> { addActionListener(e -> {
GestionPdf.modeSynchronise = false; GestionPdf.setModeSynchronise(false);
}); });
// TODO ajouter une checkbox pour indiquer si l'option est utilisé // TODO ajouter une checkbox pour indiquer si l'option est utilisé
@@ -5,7 +5,7 @@ import lecteur_pdf.IhmPdf;
import javax.swing.*; import javax.swing.*;
public class ModeSynchronise extends JMenuItem { public class ModeSynchronise extends JRadioButtonMenuItem {
IhmPdf parent; IhmPdf parent;
@@ -14,7 +14,7 @@ public class ModeSynchronise extends JMenuItem {
this.parent = parent; this.parent = parent;
addActionListener(e -> { addActionListener(e -> {
GestionPdf.modeSynchronise = true; GestionPdf.setModeSynchronise(true);
}); });
// TODO ajouter une checkbox pour indiquer si l'option est utilisé // TODO ajouter une checkbox pour indiquer si l'option est utilisé
@@ -2,17 +2,14 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*; public class ModifierTouches extends MenuItem {
import java.awt.event.KeyEvent;
public class ModifierTouches extends JMenuItem {
IhmPdf parent;
public ModifierTouches(IhmPdf parent) { public ModifierTouches(IhmPdf parent) {
super("Modifier Touches"); super(parent, "Modifier Touches");
this.parent = parent;
addActionListener(e -> {
// TODO Ouverture de la fenêtre de dialogue de modification des touches
});
// TODO ajouter l'options de modif de touches
} }
} }
@@ -3,15 +3,10 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionPdf;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*; public class NouvelleFenetre extends MenuItem {
public class NouvelleFenetre extends JMenuItem {
IhmPdf parent;
public NouvelleFenetre(IhmPdf parent) { public NouvelleFenetre(IhmPdf parent) {
super("Nouvelle Fenêtre"); super(parent, "Nouvelle Fenêtre");
this.parent = parent;
addActionListener(e -> { addActionListener(e -> {
/* Essaye de créer une nouvelle fenêtre */ /* Essaye de créer une nouvelle fenêtre */
@@ -1,29 +1,28 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import lecteur_pdf.SelectionnerFichier;
import javax.swing.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.io.IOException; import java.io.File;
public class OuvrirFichier extends JMenuItem { public class OuvrirFichier extends MenuItem {
IhmPdf parent;
public OuvrirFichier(IhmPdf parent) { public OuvrirFichier(IhmPdf parent) {
super("Ouvrir"); super(parent, "Ouvrir");
this.parent = parent;
addActionListener(e -> { addActionListener(e -> {
try { File fichier = SelectionnerFichier.ouvrirFichier();
parent.ouvrirFichier(); if (fichier != null) {
} catch (IOException ex) { if (parent.getPdfPanel().chargerPdf(fichier)) {
ex.printStackTrace(); parent.setTitle(fichier.getName());
parent.pack();
} else {
// TODO Erreur fichier n'as pas pu etre chargé
}
} }
}); });
KeyStroke raccourciOuvrir = KeyStroke.getKeyStroke(KeyEvent.VK_O, setRaccourcis(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK);
KeyEvent.CTRL_DOWN_MASK);
setAccelerator(raccourciOuvrir);
} }
} }
@@ -3,15 +3,10 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionPdf;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*; public class PagePrecedente extends MenuItem {
public class PagePrecedente extends JMenuItem {
IhmPdf parent;
public PagePrecedente(IhmPdf parent) { public PagePrecedente(IhmPdf parent) {
super("Page précédente"); super(parent,"Page précédente");
this.parent = parent;
addActionListener(e -> { addActionListener(e -> {
if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) { if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) {
@@ -21,7 +16,6 @@ public class PagePrecedente extends JMenuItem {
} }
}); });
KeyStroke raccourciPagePrecedente = KeyStroke.getKeyStroke('l'); setRaccourcis('l');
setAccelerator(raccourciPagePrecedente);
} }
} }
@@ -3,15 +3,10 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionPdf;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*; public class PageSuivante extends MenuItem {
public class PageSuivante extends JMenuItem {
IhmPdf parent;
public PageSuivante(IhmPdf parent) { public PageSuivante(IhmPdf parent) {
super("Page suivante"); super(parent,"Page suivante");
this.parent = parent;
addActionListener(e -> { addActionListener(e -> {
if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) { if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) {
@@ -21,7 +16,6 @@ public class PageSuivante extends JMenuItem {
} }
}); });
KeyStroke raccourciPageSuivante = KeyStroke.getKeyStroke('m'); setRaccourcis('m');
setAccelerator(raccourciPageSuivante);
} }
} }
@@ -2,20 +2,16 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
public class PleinEcran extends JMenuItem { public class PleinEcran extends MenuItem {
IhmPdf parent;
public PleinEcran(IhmPdf parent) { public PleinEcran(IhmPdf parent) {
super("Mode Plein Ecran"); super(parent, "Mode Plein Ecran");
this.parent = parent;
KeyStroke raccourciPleinEcran = KeyStroke.getKeyStroke(KeyEvent.VK_F11,
0);
setAccelerator(raccourciPleinEcran);
addActionListener(e -> {parent.pleinEcran();}); addActionListener(e -> {parent.pleinEcran();});
setRaccourcis(KeyEvent.VK_F11);
} }
} }
+6 -10
View File
@@ -2,22 +2,18 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
public class Quitter extends JMenuItem { public class Quitter extends MenuItem {
IhmPdf parent;
public Quitter(IhmPdf parent) { public Quitter(IhmPdf parent) {
super("Quitter"); super(parent, "Quitter");
this.parent = parent;
addActionListener(e -> {parent.quitter();}); addActionListener(e -> {
parent.quitter();
});
KeyStroke raccourciQuitter = KeyStroke.getKeyStroke(KeyEvent.VK_Q, setRaccourcis(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
KeyEvent.CTRL_DOWN_MASK);
setAccelerator(raccourciQuitter);
} }
} }
@@ -2,21 +2,19 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
public class ZoomDefaut extends JMenuItem { public class ZoomDefaut extends MenuItem {
IhmPdf parent;
public ZoomDefaut(IhmPdf parent) { public ZoomDefaut(IhmPdf parent) {
super("Zoom 100%"); super(parent, "Zoom 100%");
this.parent = parent;
KeyStroke raccourciZoomDefaut = KeyStroke.getKeyStroke(KeyEvent.VK_L, addActionListener(e -> {
KeyEvent.CTRL_DOWN_MASK); parent.getPdfPanel().updateScale(1.0f);
setAccelerator(raccourciZoomDefaut); parent.validate();
addActionListener(e -> {parent.zoomDefaut();}); });
setRaccourcis(KeyEvent.VK_L, KeyEvent.CTRL_DOWN_MASK);
} }
@@ -2,21 +2,19 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
public class ZoomMoins extends JMenuItem { public class ZoomMoins extends MenuItem {
IhmPdf parent;
public ZoomMoins(IhmPdf parent) { public ZoomMoins(IhmPdf parent) {
super("Zoom 50%"); super(parent, "Zoom 50%");
this.parent = parent;
KeyStroke raccourciZoomMoins = KeyStroke.getKeyStroke(KeyEvent.VK_K, addActionListener(e -> {
KeyEvent.CTRL_DOWN_MASK); parent.getPdfPanel().updateScale(0.5f);
setAccelerator(raccourciZoomMoins); parent.validate();
addActionListener(e -> {parent.zoomMoins();}); });
setRaccourcis(KeyEvent.VK_K, KeyEvent.CTRL_DOWN_MASK);
} }
} }
@@ -2,20 +2,19 @@ package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.IhmPdf;
import javax.swing.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
public class ZoomPlus extends JMenuItem { public class ZoomPlus extends MenuItem {
IhmPdf parent;
public ZoomPlus(IhmPdf parent) { public ZoomPlus(IhmPdf parent) {
super("Zoom 150%"); super(parent, "Zoom 150%");
this.parent = parent;
KeyStroke raccourciZoomPlus = KeyStroke.getKeyStroke(KeyEvent.VK_M, addActionListener(e -> {
KeyEvent.CTRL_DOWN_MASK); parent.getPdfPanel().updateScale(1.5f);
setAccelerator(raccourciZoomPlus); parent.validate();
addActionListener(e -> {parent.zoomPlus();}); });
setRaccourcis(KeyEvent.VK_M, KeyEvent.CTRL_DOWN_MASK);
} }
} }
+1
View File
@@ -29,6 +29,7 @@ public class PdfLoader {
public void close() { public void close() {
try { try {
renderer = null;
document.close(); document.close();
} catch(IOException ignored) {} } catch(IOException ignored) {}
} }
+106 -49
View File
@@ -9,7 +9,7 @@ public class PdfPanel extends JPanel {
private int currentPage; private int currentPage;
private float currentScale; private float currentScale;
final PdfLoader pdfLoader; private PdfLoader pdfLoader;
private JButton suivantButton; private JButton suivantButton;
private JButton precedentButton; private JButton precedentButton;
@@ -19,68 +19,125 @@ public class PdfPanel extends JPanel {
private JScrollPane scrollPane; private JScrollPane scrollPane;
private JTextField indexPage; private JTextField indexPage;
public PdfPanel(File pdfFile) throws IOException { public PdfPanel() {
super(); super();
this.currentScale = 1.0f; this.currentScale = 1.0f;
scrollPane.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize()); scrollPane.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
/* Définitions des arguments */
pdfLoader = new PdfLoader(pdfFile);
if (pdfFile != null) { // TODO supprimer le form et creer les éléments 1 par 1
defaultPage();
/* Hierarchie */ /* Hierarchie */
add(mainPanel); add(mainPanel);
/* Actions */ /* Actions */
suivantButton.addActionListener(e -> nextPage()); suivantButton.addActionListener(e -> nextPage());
precedentButton.addActionListener(e -> previousPage()); precedentButton.addActionListener(e -> previousPage());
indexPage.addActionListener(e -> updatePageInput());
}
} indexPage.addActionListener(e -> {
public void updateScale(float scale) { String saisie = indexPage.getText();
this.currentScale = scale;
updatePage(currentPage);
}
private void defaultPage() { int index = Integer.parseInt(saisie);
updatePage(0);
}
public void nextPage() { /* Si cet entier est valide on change de page sinon on efface le contenu de la saisie */
updatePage(currentPage + 1); if (isPageValide(index)) {
} setPage(index - 1);
public void previousPage() {
updatePage(currentPage - 1);
}
public void updatePage(int index) {
try {
if (pdfLoader == null) throw new IllegalStateException();
page.setIcon(new ImageIcon(pdfLoader.renderPage(index,
currentScale)));
currentPage = index;
pageIndicator.setText(String.format("%d/%d", currentPage + 1,
pdfLoader.getNbPages()));
} catch (IOException | IllegalArgumentException | IllegalStateException ignored) {}
}
public void updatePageInput() {
String input = indexPage.getText();
try {
int index = Integer.parseInt(input);
if (index > 0 && index <= pdfLoader.getNbPages()) {
updatePage(index - 1);
} else { } else {
throw new Exception(); indexPage.setText(null);
} }
} catch (Exception e) { });
indexPage.setText("");
}
/**
* Prédicat qui vérifie si un index de page est valide pour le PDF courrant
* @param index Entier correspondant a l'indice du numéro de page à tester
* @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();
}
/**
* Methode qui permet de charger un PDF dans le fenêtre courrante
* @param pdfFile Le fichier PDF à charger
* @return true si le PDF à pu se charger, false sinon
*/
public boolean chargerPdf(File pdfFile) {
try {
setPdfLoader(new PdfLoader(pdfFile));
setPage(0);
} catch (IOException e) {
return false;
} }
return true;
}
public void setPdfLoader(PdfLoader pdfLoader) {
this.pdfLoader = pdfLoader;
}
public void dechargerPdf() {
if (pdfLoader == null) {
return;
}
/* Ferme le loader et l'efface */
pdfLoader.close();
pdfLoader = null;
/* Efface l'image de la page */
page.setIcon(null);
currentPage = 0;
/* Interface Vide */
indexPage.setText("");
pageIndicator.setText("/ -");
validate();
}
/**
* Change la taille de la page courrante
* @param scale Valeur flottante (1.00f == 100%)
*/
public void updateScale(float scale) {
currentScale = scale;
setPage(currentPage);
}
/**
* Affiche la page suivante
*/
public void nextPage() {
setPage(currentPage + 1);
}
/**
* Affiche la page suivante
*/
public void previousPage() {
setPage(currentPage - 1);
}
/**
* Essaye de changer de page si possible, sinon ne fait rien
* @param index Le numéro de la page où l'on veut se rendre
*/
private void setPage(int index) {
if (!isPageValide(index)) return;
try {
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, currentScale)));
currentPage = index;
indexPage.setText(Integer.toString(currentPage +1));
pageIndicator.setText(String.format("/%d", pdfLoader.getNbPages()));
} catch (IOException e) {
e.printStackTrace();
}
} }
} }