Correctif Boutons Synchronisé + Commentaires

This commit is contained in:
LucasV-IUT
2022-02-26 01:00:06 +01:00
parent ce13319e08
commit aa7d72361e
12 changed files with 151 additions and 67 deletions
+31 -13
View File
@@ -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);
}
}
+1 -14
View File
@@ -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();
}
}
-13
View File
@@ -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;
+15 -2
View File
@@ -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));
+23 -1
View File
@@ -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));
+24 -11
View File
@@ -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();
}
});
+18 -2
View File
@@ -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 -> {