diff --git a/LecteurPdfDoubleAffichage.iml b/LecteurPdfDoubleAffichage.iml
index ec0d6bb..70f263c 100644
--- a/LecteurPdfDoubleAffichage.iml
+++ b/LecteurPdfDoubleAffichage.iml
@@ -6,9 +6,9 @@
-
+
-
+
@@ -35,7 +35,5 @@
-
-
\ No newline at end of file
diff --git a/src/lecteur_pdf/affichage/Fenetre.java b/src/lecteur_pdf/affichage/Fenetre.java
index 7c689b1..b3bbe99 100644
--- a/src/lecteur_pdf/affichage/Fenetre.java
+++ b/src/lecteur_pdf/affichage/Fenetre.java
@@ -40,7 +40,7 @@ public class Fenetre extends JFrame {
*/
private File fichier;
- private PDF documentPDF;
+ public PDF documentPDF;
/**
* TODO
@@ -85,6 +85,7 @@ public class Fenetre extends JFrame {
/* Crée l’élément scrollable */
JScrollPane scrollPane = new JScrollPane(pdfPanel);
scrollPane.getVerticalScrollBar().setUnitIncrement(16);
+ scrollPane.getHorizontalScrollBar().setUnitIncrement(16);
this.add(scrollPane, BorderLayout.CENTER);
documentPDF = new PDF(fichier);
@@ -105,7 +106,7 @@ public class Fenetre extends JFrame {
/**
*
*/
- public void rechargerPDF() {
+ public void rechargerPDF(float zoom) {
dechargerPDF();
/* Crée le panel qui contient le document PDF */
@@ -113,9 +114,11 @@ public class Fenetre extends JFrame {
/* Crée l’élément scrollable */
JScrollPane scrollPane = new JScrollPane(pdfPanel);
scrollPane.getVerticalScrollBar().setUnitIncrement(16);
+ scrollPane.getHorizontalScrollBar().setUnitIncrement(16);
this.add(scrollPane, BorderLayout.CENTER);
documentPDF = new PDF(fichier);
+ documentPDF.setZoom(zoom);
pdfPanel.add(documentPDF);
/* Ajoute le scrollPane et le centre dans la page */
diff --git a/src/lecteur_pdf/document/PDF.java b/src/lecteur_pdf/document/PDF.java
index 80a0872..00a8fa3 100644
--- a/src/lecteur_pdf/document/PDF.java
+++ b/src/lecteur_pdf/document/PDF.java
@@ -64,7 +64,6 @@ public class PDF extends JPanel {
*/
public void loadPages() {
-
for (int i = 0; i < pages.length; i++) {
try {
pages[i] = new Page(document, i, zoom);
diff --git a/src/lecteur_pdf/document/Page.java b/src/lecteur_pdf/document/Page.java
index aad2080..fdff2cc 100644
--- a/src/lecteur_pdf/document/Page.java
+++ b/src/lecteur_pdf/document/Page.java
@@ -56,7 +56,7 @@ public class Page extends JLabel {
this.INDEX = index;
this.ZOOM = 1.0f;
- this.IMAGE_ICON = generateImage(document, ZOOM);
+ this.IMAGE_ICON = generateImage(document);
/* Render */
this.setIcon(IMAGE_ICON);
@@ -80,7 +80,7 @@ public class Page extends JLabel {
this.INDEX = index;
this.ZOOM = zoom;
- this.IMAGE_ICON = generateImage(document, ZOOM);
+ this.IMAGE_ICON = generateImage(document);
/* Render */
this.setIcon(IMAGE_ICON);
@@ -107,16 +107,16 @@ public class Page extends JLabel {
* @return JLabel contenant la page sous forme d’image
* @throws IOException En cas d’erreur de lecture
*/
- private ImageIcon generateImage(PDDocument document, float scale) throws IOException {
+ private ImageIcon generateImage(PDDocument document) throws IOException {
final int DPI = 120;
- int imageScale = (scale > 1.0f) ? Image.SCALE_SMOOTH : Image.SCALE_FAST;
+ int imageScale = (ZOOM > 1.0f) ? Image.SCALE_SMOOTH : Image.SCALE_FAST;
PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(INDEX, DPI);
- this.largeur = (int)(bufferedImage.getWidth() * scale);
- this.hauteur = (int)(bufferedImage.getHeight() * scale);
+ this.largeur = (int)(bufferedImage.getWidth() * ZOOM);
+ this.hauteur = (int)(bufferedImage.getHeight() * ZOOM);
return new ImageIcon(bufferedImage.getScaledInstance(largeur, hauteur,
imageScale));
diff --git a/src/lecteur_pdf/menu/Menu.java b/src/lecteur_pdf/menu/Menu.java
index 63e1a41..ea356dc 100644
--- a/src/lecteur_pdf/menu/Menu.java
+++ b/src/lecteur_pdf/menu/Menu.java
@@ -7,6 +7,7 @@
package lecteur_pdf.menu;
import lecteur_pdf.affichage.Fenetre;
+import org.apache.pdfbox.pdmodel.PDDocument;
import javax.swing.*;
import java.awt.event.ActionEvent;
@@ -49,7 +50,8 @@ public class Menu extends JMenuBar {
this.fenetre = fenetre;
createMenuFichier();
- // createMenuAfficher();
+ createMenuOptions();
+ createMenuAffichage();
}
/**
@@ -60,13 +62,15 @@ public class Menu extends JMenuBar {
// Créer le Menu Fichier
JMenu Fichier = new JMenu("Fichier");
- // Créer les items Ouvrir et Fermer
+ // Créer les items Ouvrir, Fermer et Quitter
JMenuItem Ouvrir = new JMenuItem("Ouvrir");
JMenuItem Fermer = new JMenuItem("Fermer");
+ JMenuItem Quitter = new JMenuItem("Quitter");
// Ajoute des Listener aux JMenuItem
Ouvrir.addActionListener(this::actionPerformed);
Fermer.addActionListener(this::actionPerformed);
+ Quitter.addActionListener(this::actionPerformed);
// Définis les raccourcis
KeyStroke raccourciOuvrir
@@ -75,22 +79,105 @@ public class Menu extends JMenuBar {
KeyStroke raccourciFermer
= KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
Fermer.setAccelerator(raccourciFermer);
+ KeyStroke raccourciQuitter
+ = KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
+ Quitter.setAccelerator(raccourciQuitter);
// Ajouter les éléments au menu "Fichier"
Fichier.add(Ouvrir);
Fichier.add(Fermer);
+ Fichier.add(Quitter);
// Ajoute le menu "Fichier" dans la liste des menus
menuList.add(Fichier);
- // Ajoute Ouvrir et Fermer dans la liste des sous menu
+ // Ajoute Ouvrir, Fermer et Quitter dans la liste des sous menu
itemList.add(Ouvrir);
itemList.add(Fermer);
+ itemList.add(Quitter);
// Ajoute le menu à la barre de menu
this.add(Fichier);
}
+ /**
+ * Créé le menu Options et ses sous-menus
+ */
+ private void createMenuOptions() {
+
+ // Créer le Menu
+ JMenu Options = new JMenu("Options");
+
+ // Créer l'item Préférences
+ JMenuItem Preferences = new JMenuItem("Préférences");
+
+ // Ajoute des Listener aux JMenuItem
+ Preferences.addActionListener(this::actionPerformed);
+
+ // Définis les raccourcis
+ KeyStroke raccourciPreferences
+ = KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK);
+ Preferences.setAccelerator(raccourciPreferences);
+
+ // Ajouter les éléments au menu "Options"
+ Options.add(Preferences);
+
+ // Ajoute le menu "Affichage" dans la liste des menus
+ menuList.add(Options);
+
+ // Ajoute Preferences dans la liste des sous menu
+ itemList.add(Preferences);
+
+ // Ajoute le menu à la barre de menu
+ this.add(Options);
+ }
+
+ /**
+ * Créé le menu Affichage et ses sous-menus
+ */
+ private void createMenuAffichage() {
+
+ // Créer le Menu Affichage
+ JMenu Affichage = new JMenu("Affichage");
+
+ // Créer les items de zoom
+ JMenuItem ZoomPlus = new JMenuItem("Zoom +");
+ JMenuItem ZoomNeutre = new JMenuItem("Zoom 0");
+ JMenuItem ZoomMinus = new JMenuItem("Zoom -");
+
+ // Ajoute des Listener aux JMenuItem
+ ZoomPlus.addActionListener(this::actionPerformed);
+ ZoomNeutre.addActionListener(this::actionPerformed);
+ ZoomMinus.addActionListener(this::actionPerformed);
+
+ // Définis les raccourcis
+ KeyStroke raccourciZoomPlus
+ = KeyStroke.getKeyStroke(KeyEvent. VK_PLUS, KeyEvent.CTRL_DOWN_MASK);
+ ZoomPlus.setAccelerator(raccourciZoomPlus);
+ KeyStroke raccourciZoomNeutre
+ = KeyStroke.getKeyStroke(KeyEvent. VK_0, KeyEvent.CTRL_DOWN_MASK);
+ ZoomNeutre.setAccelerator(raccourciZoomNeutre);
+ KeyStroke raccourciZoomMinus
+ = KeyStroke.getKeyStroke(KeyEvent. VK_MINUS, KeyEvent.CTRL_DOWN_MASK);
+ ZoomMinus.setAccelerator(raccourciZoomMinus);
+
+ // Ajouter les éléments au menu "Affichage"
+ Affichage.add(ZoomPlus);
+ Affichage.add(ZoomNeutre);
+ Affichage.add(ZoomMinus);
+
+ // Ajoute le menu "Affichage" dans la liste des menus
+ menuList.add(Affichage);
+
+ // Ajoute des zoom dans la liste des sous menu
+ itemList.add(ZoomPlus);
+ itemList.add(ZoomNeutre);
+ itemList.add(ZoomMinus);
+
+ // Ajoute le menu à la barre de menu
+ this.add(Affichage);
+ }
+
/**
* Méthode qui gère les actions des sous-menus
*
@@ -104,8 +191,22 @@ public class Menu extends JMenuBar {
File fichier = SelectionnerFichier.ouvrirFichier();
fenetre.chargerPDF(fichier);
}
- case "Fermer" -> System.exit(
- 0); // TODO à changer pour que ça quitte vraiment
+ case "Fermer" -> {
+ fenetre.dechargerPDF();
+ fenetre.validate();
+ fenetre.setSize(300, 300);
+ }
+ case "Quitter" -> System.exit(
+ 0);
+ case "Zoom +" -> {
+ fenetre.rechargerPDF(2.0f);
+ }
+ case "Zoom 0" -> {
+ fenetre.rechargerPDF(1.0f);
+ }
+ case "Zoom -" -> {
+ fenetre.rechargerPDF(0.5f);
+ }
}
}