diff --git a/src/lecteur_pdf/GestionPdf.java b/src/lecteur_pdf/GestionPdf.java index 83d0261..b26a528 100644 --- a/src/lecteur_pdf/GestionPdf.java +++ b/src/lecteur_pdf/GestionPdf.java @@ -5,8 +5,10 @@ import java.util.ArrayList; import java.util.List; public class GestionPdf { - private static final int maxPdf = 2; - private static final List ihmPdfList = new ArrayList(); + public static boolean modeDoubleAffichage = false; + public static boolean modeSynchronise = false; + public static final int maxPdf = 2; + public static final List ihmPdfList = new ArrayList<>(); public static void newIhmPdf() { if (ihmPdfList.size() >= maxPdf) { @@ -18,9 +20,22 @@ public class GestionPdf { ihmPdfList.add(ihm); } catch (IOException ignored) {} + modeDoubleAffichage = ihmPdfList.size() >= 2; } public static void main(String[] args) { newIhmPdf(); } + + public static void nextPages() { + for (IhmPdf ihm : ihmPdfList) { + ihm.pdfPanel.nextPage(); + } + } + + public static void previousPages() { + for (IhmPdf ihm : ihmPdfList) { + ihm.pdfPanel.previousPage(); + } + } } diff --git a/src/lecteur_pdf/IhmPdf.java b/src/lecteur_pdf/IhmPdf.java index 629d5ab..e6c29e7 100644 --- a/src/lecteur_pdf/IhmPdf.java +++ b/src/lecteur_pdf/IhmPdf.java @@ -49,6 +49,10 @@ public class IhmPdf extends JFrame { } } + public PdfPanel getPdfPanel() { + return pdfPanel; + } + public void ouvrirFichier() throws IOException { File fichier = SelectionnerFichier.ouvrirFichier(); pdfPanel = new PdfPanel(fichier); diff --git a/src/lecteur_pdf/menuBar/menu/MenuAffichage.java b/src/lecteur_pdf/menuBar/menu/MenuAffichage.java index 9880806..f060d98 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuAffichage.java +++ b/src/lecteur_pdf/menuBar/menu/MenuAffichage.java @@ -12,6 +12,9 @@ public class MenuAffichage extends JMenu { // Ajoute les menu items add(new PleinEcran(parent)); addSeparator(); + add(new PagePrecedente(parent)); + add(new PageSuivante(parent)); + addSeparator(); add(new ZoomPlus(parent)); add(new ZoomDefaut(parent)); add(new ZoomMoins(parent)); diff --git a/src/lecteur_pdf/menuBar/menu/MenuMode.java b/src/lecteur_pdf/menuBar/menu/MenuMode.java index 7022669..eb0e97c 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuMode.java +++ b/src/lecteur_pdf/menuBar/menu/MenuMode.java @@ -10,6 +10,7 @@ public class MenuMode extends JMenu { super("Mode"); // Ajoute les menu items add(new NouvelleFenetre(parent)); + add(new ModeSepare(parent)); add(new ModeSynchronise(parent)); } } \ No newline at end of file diff --git a/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java b/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java new file mode 100644 index 0000000..6f9586c --- /dev/null +++ b/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java @@ -0,0 +1,23 @@ +package lecteur_pdf.menuBar.menuItems; + +import lecteur_pdf.GestionPdf; +import lecteur_pdf.IhmPdf; + +import javax.swing.*; + +public class ModeSepare extends JMenuItem { + IhmPdf parent; + + public ModeSepare(IhmPdf parent) { + super("Mode Séparé"); + this.parent = parent; + + addActionListener(e -> { + GestionPdf.modeSynchronise = false; + }); + + // TODO ajouter une checkbox pour indiquer si l'option est utilisé + + // TODO ajouter l'options de mode Synchronisé + } +} diff --git a/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java b/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java index 69fd73b..e98e90a 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java +++ b/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java @@ -1,9 +1,9 @@ package lecteur_pdf.menuBar.menuItems; +import lecteur_pdf.GestionPdf; import lecteur_pdf.IhmPdf; import javax.swing.*; -import java.awt.event.KeyEvent; public class ModeSynchronise extends JMenuItem { @@ -13,6 +13,10 @@ public class ModeSynchronise extends JMenuItem { super("Mode Synchronisé"); this.parent = parent; + addActionListener(e -> { + GestionPdf.modeSynchronise = true; + }); + // TODO ajouter une checkbox pour indiquer si l'option est utilisé // TODO ajouter l'options de mode Synchronisé diff --git a/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java b/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java index a77c598..055142f 100644 --- a/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java +++ b/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java @@ -1,9 +1,9 @@ package lecteur_pdf.menuBar.menuItems; +import lecteur_pdf.GestionPdf; import lecteur_pdf.IhmPdf; import javax.swing.*; -import java.awt.event.KeyEvent; public class NouvelleFenetre extends JMenuItem { @@ -13,8 +13,13 @@ public class NouvelleFenetre extends JMenuItem { super("Nouvelle Fenêtre"); this.parent = parent; - // TODO griser l'options lorsque inutilisable + addActionListener(e -> { + /* Essaye de créer une nouvelle fenêtre */ + GestionPdf.newIhmPdf(); + + /* Désactive le bouton si on a atteint la limite des affichages */ + this.setEnabled(GestionPdf.ihmPdfList.size() == GestionPdf.maxPdf); + }); - // TODO ajouter l'options nouvelle fenêtre } } \ No newline at end of file diff --git a/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java b/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java new file mode 100644 index 0000000..128ce74 --- /dev/null +++ b/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java @@ -0,0 +1,27 @@ +package lecteur_pdf.menuBar.menuItems; + +import lecteur_pdf.GestionPdf; +import lecteur_pdf.IhmPdf; + +import javax.swing.*; + +public class PagePrecedente extends JMenuItem { + + IhmPdf parent; + + public PagePrecedente(IhmPdf parent) { + super("Page précédente"); + this.parent = parent; + + addActionListener(e -> { + if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) { + GestionPdf.previousPages(); + } else { + parent.getPdfPanel().previousPage(); + } + }); + + KeyStroke raccourciPagePrecedente = KeyStroke.getKeyStroke('l'); + setAccelerator(raccourciPagePrecedente); + } +} diff --git a/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java b/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java new file mode 100644 index 0000000..a2a7a8b --- /dev/null +++ b/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java @@ -0,0 +1,27 @@ +package lecteur_pdf.menuBar.menuItems; + +import lecteur_pdf.GestionPdf; +import lecteur_pdf.IhmPdf; + +import javax.swing.*; + +public class PageSuivante extends JMenuItem { + + IhmPdf parent; + + public PageSuivante(IhmPdf parent) { + super("Page suivante"); + this.parent = parent; + + addActionListener(e -> { + if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) { + GestionPdf.nextPages(); + } else { + parent.getPdfPanel().nextPage(); + } + }); + + KeyStroke raccourciPageSuivante = KeyStroke.getKeyStroke('m'); + setAccelerator(raccourciPageSuivante); + } +} diff --git a/src/lecteur_pdf/pdf/PdfPanel.java b/src/lecteur_pdf/pdf/PdfPanel.java index c321623..3b4c795 100644 --- a/src/lecteur_pdf/pdf/PdfPanel.java +++ b/src/lecteur_pdf/pdf/PdfPanel.java @@ -35,10 +35,11 @@ public class PdfPanel extends JPanel { add(mainPanel); /* Actions */ - suivantButton.addActionListener(e -> updatePage(currentPage + 1)); - precedentButton.addActionListener(e -> updatePage(currentPage - 1)); + suivantButton.addActionListener(e -> nextPage()); + precedentButton.addActionListener(e -> previousPage()); indexPage.addActionListener(e -> updatePageInput()); } + } public void updateScale(float scale) { @@ -50,6 +51,14 @@ public class PdfPanel extends JPanel { updatePage(0); } + public void nextPage() { + updatePage(currentPage + 1); + } + + public void previousPage() { + updatePage(currentPage - 1); + } + public void updatePage(int index) { try { if (pdfLoader == null) throw new IllegalStateException();