Zoom, fermer, quitter, menu j'ai tout fait sah bon weekend

This commit is contained in:
Tristan Nogaret
2021-12-06 22:39:40 +01:00
parent 64ed216e5a
commit b6261915b7
5 changed files with 119 additions and 18 deletions
+2 -4
View File
@@ -6,9 +6,9 @@
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
</content> </content>
<orderEntry type="jdk" jdkName="17" jdkType="JavaSDK" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="pdfbox-2.0.24" level="project" /> <orderEntry type="library" name="xmpbox-2.0.24" level="project" />
<orderEntry type="module-library" scope="TEST"> <orderEntry type="module-library" scope="TEST">
<library name="JUnit4"> <library name="JUnit4">
<CLASSES> <CLASSES>
@@ -35,7 +35,5 @@
<SOURCES /> <SOURCES />
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="library" name="pdfbox-2.0" level="project" />
<orderEntry type="library" name="fontbox-2.0.24" level="project" />
</component> </component>
</module> </module>
+5 -2
View File
@@ -40,7 +40,7 @@ public class Fenetre extends JFrame {
*/ */
private File fichier; private File fichier;
private PDF documentPDF; public PDF documentPDF;
/** /**
* TODO * TODO
@@ -85,6 +85,7 @@ public class Fenetre extends JFrame {
/* Crée l’élément scrollable */ /* Crée l’élément scrollable */
JScrollPane scrollPane = new JScrollPane(pdfPanel); JScrollPane scrollPane = new JScrollPane(pdfPanel);
scrollPane.getVerticalScrollBar().setUnitIncrement(16); scrollPane.getVerticalScrollBar().setUnitIncrement(16);
scrollPane.getHorizontalScrollBar().setUnitIncrement(16);
this.add(scrollPane, BorderLayout.CENTER); this.add(scrollPane, BorderLayout.CENTER);
documentPDF = new PDF(fichier); documentPDF = new PDF(fichier);
@@ -105,7 +106,7 @@ public class Fenetre extends JFrame {
/** /**
* *
*/ */
public void rechargerPDF() { public void rechargerPDF(float zoom) {
dechargerPDF(); dechargerPDF();
/* Crée le panel qui contient le document PDF */ /* Crée le panel qui contient le document PDF */
@@ -113,9 +114,11 @@ public class Fenetre extends JFrame {
/* Crée l’élément scrollable */ /* Crée l’élément scrollable */
JScrollPane scrollPane = new JScrollPane(pdfPanel); JScrollPane scrollPane = new JScrollPane(pdfPanel);
scrollPane.getVerticalScrollBar().setUnitIncrement(16); scrollPane.getVerticalScrollBar().setUnitIncrement(16);
scrollPane.getHorizontalScrollBar().setUnitIncrement(16);
this.add(scrollPane, BorderLayout.CENTER); this.add(scrollPane, BorderLayout.CENTER);
documentPDF = new PDF(fichier); documentPDF = new PDF(fichier);
documentPDF.setZoom(zoom);
pdfPanel.add(documentPDF); pdfPanel.add(documentPDF);
/* Ajoute le scrollPane et le centre dans la page */ /* Ajoute le scrollPane et le centre dans la page */
-1
View File
@@ -64,7 +64,6 @@ public class PDF extends JPanel {
*/ */
public void loadPages() { public void loadPages() {
for (int i = 0; i < pages.length; i++) { for (int i = 0; i < pages.length; i++) {
try { try {
pages[i] = new Page(document, i, zoom); pages[i] = new Page(document, i, zoom);
+6 -6
View File
@@ -56,7 +56,7 @@ public class Page extends JLabel {
this.INDEX = index; this.INDEX = index;
this.ZOOM = 1.0f; this.ZOOM = 1.0f;
this.IMAGE_ICON = generateImage(document, ZOOM); this.IMAGE_ICON = generateImage(document);
/* Render */ /* Render */
this.setIcon(IMAGE_ICON); this.setIcon(IMAGE_ICON);
@@ -80,7 +80,7 @@ public class Page extends JLabel {
this.INDEX = index; this.INDEX = index;
this.ZOOM = zoom; this.ZOOM = zoom;
this.IMAGE_ICON = generateImage(document, ZOOM); this.IMAGE_ICON = generateImage(document);
/* Render */ /* Render */
this.setIcon(IMAGE_ICON); this.setIcon(IMAGE_ICON);
@@ -107,16 +107,16 @@ public class Page extends JLabel {
* @return JLabel contenant la page sous forme dimage * @return JLabel contenant la page sous forme dimage
* @throws IOException En cas derreur de lecture * @throws IOException En cas derreur de lecture
*/ */
private ImageIcon generateImage(PDDocument document, float scale) throws IOException { private ImageIcon generateImage(PDDocument document) throws IOException {
final int DPI = 120; 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); PDFRenderer pdfRenderer = new PDFRenderer(document);
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(INDEX, DPI); BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(INDEX, DPI);
this.largeur = (int)(bufferedImage.getWidth() * scale); this.largeur = (int)(bufferedImage.getWidth() * ZOOM);
this.hauteur = (int)(bufferedImage.getHeight() * scale); this.hauteur = (int)(bufferedImage.getHeight() * ZOOM);
return new ImageIcon(bufferedImage.getScaledInstance(largeur, hauteur, return new ImageIcon(bufferedImage.getScaledInstance(largeur, hauteur,
imageScale)); imageScale));
+106 -5
View File
@@ -7,6 +7,7 @@
package lecteur_pdf.menu; package lecteur_pdf.menu;
import lecteur_pdf.affichage.Fenetre; import lecteur_pdf.affichage.Fenetre;
import org.apache.pdfbox.pdmodel.PDDocument;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -49,7 +50,8 @@ public class Menu extends JMenuBar {
this.fenetre = fenetre; this.fenetre = fenetre;
createMenuFichier(); createMenuFichier();
// createMenuAfficher(); createMenuOptions();
createMenuAffichage();
} }
/** /**
@@ -60,13 +62,15 @@ public class Menu extends JMenuBar {
// Créer le Menu Fichier // Créer le Menu Fichier
JMenu Fichier = new JMenu("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 Ouvrir = new JMenuItem("Ouvrir");
JMenuItem Fermer = new JMenuItem("Fermer"); JMenuItem Fermer = new JMenuItem("Fermer");
JMenuItem Quitter = new JMenuItem("Quitter");
// Ajoute des Listener aux JMenuItem // Ajoute des Listener aux JMenuItem
Ouvrir.addActionListener(this::actionPerformed); Ouvrir.addActionListener(this::actionPerformed);
Fermer.addActionListener(this::actionPerformed); Fermer.addActionListener(this::actionPerformed);
Quitter.addActionListener(this::actionPerformed);
// Définis les raccourcis // Définis les raccourcis
KeyStroke raccourciOuvrir KeyStroke raccourciOuvrir
@@ -75,22 +79,105 @@ public class Menu extends JMenuBar {
KeyStroke raccourciFermer KeyStroke raccourciFermer
= KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK); = KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
Fermer.setAccelerator(raccourciFermer); Fermer.setAccelerator(raccourciFermer);
KeyStroke raccourciQuitter
= KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
Quitter.setAccelerator(raccourciQuitter);
// Ajouter les éléments au menu "Fichier" // Ajouter les éléments au menu "Fichier"
Fichier.add(Ouvrir); Fichier.add(Ouvrir);
Fichier.add(Fermer); Fichier.add(Fermer);
Fichier.add(Quitter);
// Ajoute le menu "Fichier" dans la liste des menus // Ajoute le menu "Fichier" dans la liste des menus
menuList.add(Fichier); 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(Ouvrir);
itemList.add(Fermer); itemList.add(Fermer);
itemList.add(Quitter);
// Ajoute le menu à la barre de menu // Ajoute le menu à la barre de menu
this.add(Fichier); 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 * Méthode qui gère les actions des sous-menus
* *
@@ -104,8 +191,22 @@ public class Menu extends JMenuBar {
File fichier = SelectionnerFichier.ouvrirFichier(); File fichier = SelectionnerFichier.ouvrirFichier();
fenetre.chargerPDF(fichier); fenetre.chargerPDF(fichier);
} }
case "Fermer" -> System.exit( case "Fermer" -> {
0); // TODO à changer pour que ça quitte vraiment 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);
}
} }
} }