mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-05-16 17:11:50 +00:00
Correctif Boutons Synchronisé + Commentaires
This commit is contained in:
@@ -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<ModeSepare> modeSepareList = new ArrayList<>();
|
||||
private static final ArrayList<ModeSynchronise> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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<IhmPdf> 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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<JMenuItem, KeyStroke> gestionnaireRaccourcis = new HashMap<>();
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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é
|
||||
|
||||
@@ -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é
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user