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$/tests" isTestSource="true" />
</content>
<orderEntry type="jdk" jdkName="17" jdkType="JavaSDK" />
<orderEntry type="inheritedJdk" />
<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">
<library name="JUnit4">
<CLASSES>
@@ -35,7 +35,5 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="pdfbox-2.0" level="project" />
<orderEntry type="library" name="fontbox-2.0.24" level="project" />
</component>
</module>
+5 -2
View File
@@ -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 */
-1
View File
@@ -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);
+6 -6
View File
@@ -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 dimage
* @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;
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));
+106 -5
View File
@@ -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);
}
}
}