From aa7d72361e5465ee6aacc96e4dca433696c6b616 Mon Sep 17 00:00:00 2001 From: LucasV-IUT Date: Sat, 26 Feb 2022 01:00:06 +0100 Subject: [PATCH] =?UTF-8?q?Correctif=20Boutons=20Synchronis=C3=A9=20+=20Co?= =?UTF-8?q?mmentaires?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lecteur_pdf/GestionMode.java | 44 +++++++++++++------ src/lecteur_pdf/GestionPdf.java | 15 +------ src/lecteur_pdf/IhmPdf.java | 13 ------ src/lecteur_pdf/RaccourcisClavier.java | 17 ++++++- .../menuBar/menu/MenuAffichage.java | 28 +++++++++++- src/lecteur_pdf/menuBar/menu/MenuFichier.java | 24 +++++++++- src/lecteur_pdf/menuBar/menu/MenuMode.java | 35 ++++++++++----- .../menuBar/menuItems/ModeSepare.java | 4 +- .../menuBar/menuItems/ModeSynchronise.java | 4 +- .../menuBar/menuItems/PagePrecedente.java | 7 +-- .../menuBar/menuItems/PageSuivante.java | 7 +-- src/lecteur_pdf/pdf/PdfPanel.java | 20 ++++++++- 12 files changed, 151 insertions(+), 67 deletions(-) diff --git a/src/lecteur_pdf/GestionMode.java b/src/lecteur_pdf/GestionMode.java index 22b420e..193ed4b 100644 --- a/src/lecteur_pdf/GestionMode.java +++ b/src/lecteur_pdf/GestionMode.java @@ -3,27 +3,45 @@ package lecteur_pdf; import lecteur_pdf.menuBar.menuItems.ModeSepare; import lecteur_pdf.menuBar.menuItems.ModeSynchronise; +import java.util.ArrayList; + public class GestionMode { - private ModeSepare modeSepare; - private ModeSynchronise modeSynchronise; + /** + * Défini le mode actif : + * true -> Mode Séparé + * false -> Mode Synchronisé + */ + private static boolean modeSepare; - public GestionMode(ModeSepare separe, ModeSynchronise synchronise) { - modeSepare = separe; - modeSynchronise = synchronise; + private static final ArrayList modeSepareList = new ArrayList<>(); + private static final ArrayList modeSynchroniseList = new ArrayList<>(); - /* Mode par défaut */ - setModeSepare(); + public static void addItem(ModeSepare separe, ModeSynchronise synchronise) { + modeSepareList.add(separe); + modeSynchroniseList.add(synchronise); + updateMode(); } - public void setModeSepare() { - modeSepare.setSelected(true); - modeSynchronise.setSelected(false); + public static boolean isModeSepare() { + return modeSepare; } - public void setModeSynchronise() { - modeSepare.setSelected(false); - modeSynchronise.setSelected(true); + public static void setModeSepare() { + modeSepare = true; + updateMode(); + } + + public static void setModeSynchronise() { + modeSepare = false; + updateMode(); + } + + private static void updateMode() { + for (int i = 0; i < modeSepareList.size() ; i++) { + modeSepareList.get(i).setSelected(modeSepare); + modeSynchroniseList.get(i).setSelected(!modeSepare); + } } diff --git a/src/lecteur_pdf/GestionPdf.java b/src/lecteur_pdf/GestionPdf.java index ff5aebe..d16bbaf 100644 --- a/src/lecteur_pdf/GestionPdf.java +++ b/src/lecteur_pdf/GestionPdf.java @@ -8,21 +8,9 @@ import java.util.List; public class GestionPdf { public static String titreApplication = "LPDA"; - 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 setModeSynchronise(boolean modeSynchronise) { - for(IhmPdf fenetre : ihmPdfList) { - if (modeSynchronise) { - fenetre.getGestionMode().setModeSynchronise(); - } else { - fenetre.getGestionMode().setModeSepare(); - } - } - } - /** * Crée une nouvelle fenêtre */ @@ -36,8 +24,6 @@ public class GestionPdf { IhmPdf ihm = new IhmPdf(); ihmPdfList.add(ihm); } catch (IOException ignored) {} - - modeDoubleAffichage = ihmPdfList.size() >= 2; } /** @@ -78,6 +64,7 @@ public class GestionPdf { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ignored) {} + GestionMode.setModeSepare(); newIhmPdf(); } } diff --git a/src/lecteur_pdf/IhmPdf.java b/src/lecteur_pdf/IhmPdf.java index 454e85e..6b2e5c2 100644 --- a/src/lecteur_pdf/IhmPdf.java +++ b/src/lecteur_pdf/IhmPdf.java @@ -7,8 +7,6 @@ package lecteur_pdf; import lecteur_pdf.menuBar.MenuBar; -import lecteur_pdf.menuBar.menuItems.ModeSepare; -import lecteur_pdf.menuBar.menuItems.ModeSynchronise; import lecteur_pdf.pdf.PdfPanel; import javax.swing.*; @@ -32,9 +30,6 @@ public class IhmPdf extends JFrame { private boolean fullscreen = false; private GraphicsDevice device; - /* Gestionnaire des modes de visionnage */ - private GestionMode gestionMode; - public IhmPdf() throws IOException { super(GestionPdf.titreApplication); @@ -64,14 +59,6 @@ public class IhmPdf extends JFrame { return pdfPanel; } - public void initGestionMode(ModeSepare modeSepare, ModeSynchronise modeSynchronise) { - this.gestionMode = new GestionMode(modeSepare, modeSynchronise); - } - - public GestionMode getGestionMode() { - return gestionMode; - } - public void pleinEcran() { // Switch de disposition fullscreen = !fullscreen; diff --git a/src/lecteur_pdf/RaccourcisClavier.java b/src/lecteur_pdf/RaccourcisClavier.java index c71e81c..859ecf6 100644 --- a/src/lecteur_pdf/RaccourcisClavier.java +++ b/src/lecteur_pdf/RaccourcisClavier.java @@ -1,11 +1,24 @@ +/* + * RaccourcisClavier.java, 26/02/2022 + * IUT Rodez 2021-2022, INFO 2 + * pas de copyright, aucun droits + */ + package lecteur_pdf; import javax.swing.*; -import java.io.Serializable; import java.util.HashMap; import java.util.Map; -public class RaccourcisClavier implements Serializable { +/** + * Gestionnaire des raccourcis claviers de l'application + * + * @author Léo Franche + * @author Lucas Vabre + * @author Noé Villeneuve + * @author Tristan Nogaret + */ +public class RaccourcisClavier { public static Map gestionnaireRaccourcis = new HashMap<>(); diff --git a/src/lecteur_pdf/menuBar/menu/MenuAffichage.java b/src/lecteur_pdf/menuBar/menu/MenuAffichage.java index f060d98..e405348 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuAffichage.java +++ b/src/lecteur_pdf/menuBar/menu/MenuAffichage.java @@ -1,3 +1,9 @@ +/* + * MenuAffichage.java, 26/02/2022 + * IUT Rodez 2021-2022, INFO 2 + * pas de copyright, aucun droits + */ + package lecteur_pdf.menuBar.menu; import lecteur_pdf.IhmPdf; @@ -5,16 +11,36 @@ import lecteur_pdf.menuBar.menuItems.*; import javax.swing.*; +/** + * Element de la barre des menus contenant l'intégralités des actions lié à l'affichage de l'application + * + * @author Léo Franch + * @author Lucas Vabre + * @author Noé Villeneuve + * @author Tristan Nogaret + */ public class MenuAffichage extends JMenu { + /** + * Crée une nouvelle instance du menu d'affichage + * + * @param parent Référence de la fenêtre qui possède l'instance de ce menu + */ public MenuAffichage(IhmPdf parent) { super("Affichage"); - // Ajoute les menu items + + /* - Ajoute les différentes options - */ + + /* Mode plein écran */ add(new PleinEcran(parent)); addSeparator(); + + /* Navigation dans les différentes pages des documents */ add(new PagePrecedente(parent)); add(new PageSuivante(parent)); addSeparator(); + + /* Section des Zoom */ add(new ZoomPlus(parent)); add(new ZoomDefaut(parent)); add(new ZoomMoins(parent)); diff --git a/src/lecteur_pdf/menuBar/menu/MenuFichier.java b/src/lecteur_pdf/menuBar/menu/MenuFichier.java index 8058b0d..90904a6 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuFichier.java +++ b/src/lecteur_pdf/menuBar/menu/MenuFichier.java @@ -1,3 +1,9 @@ +/* + * MenuFichier.java, 26/02/2022 + * IUT Rodez 2021-2022, INFO 2 + * pas de copyright, aucun droits + */ + package lecteur_pdf.menuBar.menu; import lecteur_pdf.IhmPdf; @@ -5,10 +11,26 @@ import lecteur_pdf.menuBar.menuItems.*; import javax.swing.*; +/** + * Element de la barre des menus contenant l'intégralités des actions lié à la gestion des fichers de l'application + * + * @author Léo Franch + * @author Lucas Vabre + * @author Noé Villeneuve + * @author Tristan Nogaret + */ public class MenuFichier extends JMenu { + + /** + * Crée une nouvelle instance du menu fichier + * + * @param parent Référence de la fenêtre qui possède l'instance de ce menu + */ public MenuFichier(IhmPdf parent) { super("Fichier"); - // Ajoute les menu items + + /* - Ajoute les différentes options - */ + add(new OuvrirFichier(parent)); add(new FermerFichier(parent)); add(new Quitter(parent)); diff --git a/src/lecteur_pdf/menuBar/menu/MenuMode.java b/src/lecteur_pdf/menuBar/menu/MenuMode.java index 614cf8c..6d3b0ae 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuMode.java +++ b/src/lecteur_pdf/menuBar/menu/MenuMode.java @@ -1,6 +1,12 @@ +/* + * MenuMode.java, 26/02/2022 + * IUT Rodez 2021-2022, INFO 2 + * pas de copyright, aucun droits + */ + package lecteur_pdf.menuBar.menu; -import lecteur_pdf.GestionPdf; +import lecteur_pdf.GestionMode; import lecteur_pdf.IhmPdf; import lecteur_pdf.menuBar.menuItems.ModeSepare; import lecteur_pdf.menuBar.menuItems.ModeSynchronise; @@ -8,23 +14,30 @@ import lecteur_pdf.menuBar.menuItems.NouvelleFenetre; import javax.swing.*; +/** + * Element de la barre des menus contenant l'intégralités des actions lié au mode multi-affichage + * + * @author Léo Franch + * @author Lucas Vabre + * @author Noé Villeneuve + * @author Tristan Nogaret + */ public class MenuMode extends JMenu { + + /** + * Crée une nouvelle instance du menu Mode + * + * @param parent Référence de la fenêtre qui possède l'instance de ce menu + */ public MenuMode(IhmPdf parent) { super("Mode"); + /* Crée les différentes options */ ModeSepare modeSepare = new ModeSepare(parent); ModeSynchronise modeSynchronise = new ModeSynchronise(parent); - /* Crée un groupe de Radio */ - ButtonGroup groupe = new ButtonGroup(); - groupe.add(modeSepare); - groupe.add(modeSynchronise); - - /* Initialise les boutons selectionnés */ - modeSepare.setSelected(!GestionPdf.modeSynchronise); - modeSynchronise.setSelected(GestionPdf.modeSynchronise); - - parent.initGestionMode(modeSepare, modeSynchronise); + /* Les ajoute au gestionnaire des mode */ + GestionMode.addItem(modeSepare, modeSynchronise); /* Ajoute les menu items */ add(new NouvelleFenetre(parent)); diff --git a/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java b/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java index 132d987..55b2522 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java +++ b/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java @@ -1,6 +1,6 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.GestionPdf; +import lecteur_pdf.GestionMode; import lecteur_pdf.IhmPdf; import javax.swing.*; @@ -14,7 +14,7 @@ public class ModeSepare extends JRadioButtonMenuItem { this.parent = parent; addActionListener(e -> { - GestionPdf.setModeSynchronise(false); + GestionMode.setModeSepare(); }); // TODO ajouter une checkbox pour indiquer si l'option est utilisé diff --git a/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java b/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java index 39de33f..8416397 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java +++ b/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java @@ -1,6 +1,6 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.GestionPdf; +import lecteur_pdf.GestionMode; import lecteur_pdf.IhmPdf; import javax.swing.*; @@ -14,7 +14,7 @@ public class ModeSynchronise extends JRadioButtonMenuItem { this.parent = parent; addActionListener(e -> { - GestionPdf.setModeSynchronise(true); + GestionMode.setModeSynchronise(); }); // TODO ajouter une checkbox pour indiquer si l'option est utilisé diff --git a/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java b/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java index f9fa67b..6f77a09 100644 --- a/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java +++ b/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java @@ -1,5 +1,6 @@ package lecteur_pdf.menuBar.menuItems; +import lecteur_pdf.GestionMode; import lecteur_pdf.GestionPdf; import lecteur_pdf.IhmPdf; @@ -9,10 +10,10 @@ public class PagePrecedente extends MenuItem { super(parent,"Page précédente"); addActionListener(e -> { - if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) { - GestionPdf.previousPages(); - } else { + if (GestionMode.isModeSepare()) { parent.getPdfPanel().previousPage(); + } else { + GestionPdf.previousPages(); } }); diff --git a/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java b/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java index ef7fb31..9d0fced 100644 --- a/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java +++ b/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java @@ -1,5 +1,6 @@ package lecteur_pdf.menuBar.menuItems; +import lecteur_pdf.GestionMode; import lecteur_pdf.GestionPdf; import lecteur_pdf.IhmPdf; @@ -9,10 +10,10 @@ public class PageSuivante extends MenuItem { super(parent,"Page suivante"); addActionListener(e -> { - if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) { - GestionPdf.nextPages(); - } else { + if (GestionMode.isModeSepare()) { parent.getPdfPanel().nextPage(); + } else { + GestionPdf.nextPages(); } }); diff --git a/src/lecteur_pdf/pdf/PdfPanel.java b/src/lecteur_pdf/pdf/PdfPanel.java index ea6d729..897c8e2 100644 --- a/src/lecteur_pdf/pdf/PdfPanel.java +++ b/src/lecteur_pdf/pdf/PdfPanel.java @@ -1,5 +1,8 @@ package lecteur_pdf.pdf; +import lecteur_pdf.GestionMode; +import lecteur_pdf.GestionPdf; + import javax.swing.*; import java.awt.*; import java.io.File; @@ -32,8 +35,21 @@ public class PdfPanel extends JPanel { add(mainPanel); /* Actions */ - suivantButton.addActionListener(e -> nextPage()); - precedentButton.addActionListener(e -> previousPage()); + suivantButton.addActionListener(e -> { + if (GestionMode.isModeSepare()) { + nextPage(); + } else { + GestionPdf.nextPages(); + } + }); + + precedentButton.addActionListener(e -> { + if (GestionMode.isModeSepare()) { + previousPage(); + } else { + GestionPdf.previousPages(); + } + }); indexPage.addActionListener(e -> {