Mode Synchro, Mode Séparé

-Défilement des documents en mode séparé et synchonisé avec les touches "l" et "m".
-Désactivation du bouton "nouvelle fenêtre" quand on a atteint le nombre max de fenêtre ouvertes. (besoin de le griser car actuellement il se désactive mais aucun changement visible)
- Besoin de rajouter des  pour montrer quel mode est sélectionné.
This commit is contained in:
LucasV-IUT
2022-02-23 23:00:21 +01:00
parent c0da275a4f
commit ce255b75f7
10 changed files with 126 additions and 8 deletions
+17 -2
View File
@@ -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<IhmPdf> ihmPdfList = new ArrayList<IhmPdf>();
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 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();
}
}
}
+4
View File
@@ -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);
@@ -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));
@@ -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));
}
}
@@ -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é
}
}
@@ -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é
@@ -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
}
}
@@ -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);
}
}
@@ -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);
}
}
+11 -2
View File
@@ -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();