mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-07-09 12:47:45 +00:00
Mode séparé/Synchronisé ok
- Ajout d'une classe MenuItem qui est utilisé par tout les JMenuItems (utile pour les raccourcis claviers) - Ajout d'une classe Raccourcis claviers avec une hash map a compléter - Ajout de commentaires - Erreurs ouvertures et fermetures de fichier générés, ouverture et fermeture de fenêtre géré - Fermeture des pdf proprement - Fermeture de l'application lorsqu'il n'y a plus de fenêtre dans l'application
This commit is contained in:
@@ -5,37 +5,69 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GestionPdf {
|
public class GestionPdf {
|
||||||
|
public static String titreApplication = "LPDA";
|
||||||
|
|
||||||
public static boolean modeDoubleAffichage = false;
|
public static boolean modeDoubleAffichage = false;
|
||||||
public static boolean modeSynchronise = false;
|
public static boolean modeSynchronise = false;
|
||||||
public static final int maxPdf = 2;
|
public static final int maxPdf = 2;
|
||||||
public static final List<IhmPdf> ihmPdfList = new ArrayList<>();
|
public static final List<IhmPdf> ihmPdfList = new ArrayList<>();
|
||||||
|
|
||||||
|
public static void setModeSynchronise(boolean value) {
|
||||||
|
modeSynchronise = value;
|
||||||
|
for(IhmPdf ihm : ihmPdfList) {
|
||||||
|
ihm.modeSepare.setSelected(!value);
|
||||||
|
ihm.modeSynchronise.setSelected(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Crée une nouvelle fenêtre
|
||||||
|
*/
|
||||||
public static void newIhmPdf() {
|
public static void newIhmPdf() {
|
||||||
if (ihmPdfList.size() >= maxPdf) {
|
if (ihmPdfList.size() >= maxPdf) {
|
||||||
throw new IllegalStateException();
|
// TODO Message erreur "nombre max de fenêtre atteint"
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
IhmPdf ihm = new IhmPdf(SelectionnerFichier.ouvrirFichier());
|
IhmPdf ihm = new IhmPdf();
|
||||||
ihmPdfList.add(ihm);
|
ihmPdfList.add(ihm);
|
||||||
} catch (IOException ignored) {}
|
} catch (IOException ignored) {}
|
||||||
|
|
||||||
modeDoubleAffichage = ihmPdfList.size() >= 2;
|
modeDoubleAffichage = ihmPdfList.size() >= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
/**
|
||||||
newIhmPdf();
|
* Methode affiche la page suivante en mode Synchronisé
|
||||||
}
|
*/
|
||||||
|
|
||||||
public static void nextPages() {
|
public static void nextPages() {
|
||||||
for (IhmPdf ihm : ihmPdfList) {
|
for (IhmPdf ihm : ihmPdfList) {
|
||||||
ihm.pdfPanel.nextPage();
|
ihm.pdfPanel.nextPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode affiche la page précédente en mode Synchronisé
|
||||||
|
*/
|
||||||
public static void previousPages() {
|
public static void previousPages() {
|
||||||
for (IhmPdf ihm : ihmPdfList) {
|
for (IhmPdf ihm : ihmPdfList) {
|
||||||
ihm.pdfPanel.previousPage();
|
ihm.pdfPanel.previousPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void chargerRaccourcisClaviers() {
|
||||||
|
// TODO changer les raccourcis clavier a partir d'un fichier
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sauvegarderRaccourcisClaviers() {
|
||||||
|
// TODO sauvegarder les raccourcis clavier dans un fichier
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lance l'application
|
||||||
|
* @param args non utilisé
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
newIhmPdf();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-31
@@ -7,11 +7,14 @@
|
|||||||
package lecteur_pdf;
|
package lecteur_pdf;
|
||||||
|
|
||||||
import lecteur_pdf.menuBar.MenuBar;
|
import lecteur_pdf.menuBar.MenuBar;
|
||||||
|
import lecteur_pdf.menuBar.menuItems.ModeSepare;
|
||||||
|
import lecteur_pdf.menuBar.menuItems.ModeSynchronise;
|
||||||
import lecteur_pdf.pdf.PdfPanel;
|
import lecteur_pdf.pdf.PdfPanel;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.File;
|
import java.awt.event.WindowAdapter;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,41 +26,38 @@ public class IhmPdf extends JFrame {
|
|||||||
|
|
||||||
PdfPanel pdfPanel;
|
PdfPanel pdfPanel;
|
||||||
MenuBar menuBar;
|
MenuBar menuBar;
|
||||||
|
ModeSepare modeSepare;
|
||||||
|
ModeSynchronise modeSynchronise;
|
||||||
|
|
||||||
public IhmPdf(File pdfFile) throws IOException {
|
public IhmPdf() throws IOException {
|
||||||
super(pdfFile.getName());
|
super(GestionPdf.titreApplication);
|
||||||
|
|
||||||
/* Déclaration des attributs */
|
/* Déclaration des attributs */
|
||||||
menuBar = new MenuBar(this);
|
menuBar = new MenuBar(this);
|
||||||
pdfPanel = new PdfPanel(pdfFile);
|
pdfPanel = new PdfPanel();
|
||||||
|
|
||||||
/* Hierarchie */
|
/* Hierarchie */
|
||||||
setContentPane(pdfPanel);
|
setContentPane(pdfPanel);
|
||||||
setJMenuBar(menuBar);
|
setJMenuBar(menuBar);
|
||||||
|
|
||||||
|
/* Action à la fermeture de la fenêtre */
|
||||||
|
this.addWindowListener(new WindowAdapter(){
|
||||||
|
@Override
|
||||||
|
public void windowClosing(WindowEvent et) {
|
||||||
|
quitter();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
||||||
|
|
||||||
/* Render de la Frame */
|
/* Render de la Frame */
|
||||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
|
||||||
pack();
|
pack();
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fermerFichier() {
|
|
||||||
try {
|
|
||||||
pdfPanel = new PdfPanel(null);
|
|
||||||
validate();
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public PdfPanel getPdfPanel() {
|
public PdfPanel getPdfPanel() {
|
||||||
return pdfPanel;
|
return pdfPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ouvrirFichier() throws IOException {
|
|
||||||
File fichier = SelectionnerFichier.ouvrirFichier();
|
|
||||||
pdfPanel = new PdfPanel(fichier);
|
|
||||||
validate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean fullscreen = false;
|
private boolean fullscreen = false;
|
||||||
private GraphicsDevice device;
|
private GraphicsDevice device;
|
||||||
@@ -78,21 +78,16 @@ public class IhmPdf extends JFrame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void quitter() {
|
public void quitter() {
|
||||||
|
pdfPanel.dechargerPdf();
|
||||||
|
GestionPdf.ihmPdfList.remove(this);
|
||||||
dispose();
|
dispose();
|
||||||
|
if (GestionPdf.ihmPdfList.size() == 0) {
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void zoomDefaut() {
|
public void setMode(ModeSepare modeSepare, ModeSynchronise modeSynchronise) {
|
||||||
pdfPanel.updateScale(1.0f);
|
this.modeSepare = modeSepare;
|
||||||
validate();
|
this.modeSynchronise = modeSynchronise;
|
||||||
}
|
|
||||||
|
|
||||||
public void zoomMoins() {
|
|
||||||
pdfPanel.updateScale(0.5f);
|
|
||||||
validate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void zoomPlus() {
|
|
||||||
pdfPanel.updateScale(1.5f);
|
|
||||||
validate();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package lecteur_pdf;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class RaccourcisClavier implements Serializable {
|
||||||
|
|
||||||
|
public static Map<JMenuItem, KeyStroke> gestionnaireRaccourcis = new HashMap<>();
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
package lecteur_pdf.menuBar.menu;
|
package lecteur_pdf.menuBar.menu;
|
||||||
|
|
||||||
|
import lecteur_pdf.GestionPdf;
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
import lecteur_pdf.menuBar.menuItems.*;
|
import lecteur_pdf.menuBar.menuItems.ModeSepare;
|
||||||
|
import lecteur_pdf.menuBar.menuItems.ModeSynchronise;
|
||||||
|
import lecteur_pdf.menuBar.menuItems.NouvelleFenetre;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
@@ -10,7 +13,21 @@ public class MenuMode extends JMenu {
|
|||||||
super("Mode");
|
super("Mode");
|
||||||
// Ajoute les menu items
|
// Ajoute les menu items
|
||||||
add(new NouvelleFenetre(parent));
|
add(new NouvelleFenetre(parent));
|
||||||
add(new ModeSepare(parent));
|
|
||||||
add(new ModeSynchronise(parent));
|
ButtonGroup groupe = new ButtonGroup();
|
||||||
|
ModeSepare modeSepare = new ModeSepare(parent);
|
||||||
|
ModeSynchronise modeSynchronise = new ModeSynchronise(parent);
|
||||||
|
|
||||||
|
add(modeSepare);
|
||||||
|
add(modeSynchronise);
|
||||||
|
|
||||||
|
groupe.add(modeSepare);
|
||||||
|
groupe.add(modeSynchronise);
|
||||||
|
|
||||||
|
|
||||||
|
modeSepare.setSelected(!GestionPdf.modeSynchronise);
|
||||||
|
modeSynchronise.setSelected(GestionPdf.modeSynchronise);
|
||||||
|
|
||||||
|
parent.setMode(modeSepare, modeSynchronise);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,23 +1,21 @@
|
|||||||
package lecteur_pdf.menuBar.menuItems;
|
package lecteur_pdf.menuBar.menuItems;
|
||||||
|
|
||||||
|
import lecteur_pdf.GestionPdf;
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
public class FermerFichier extends JMenuItem {
|
public class FermerFichier extends MenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public FermerFichier(IhmPdf parent) {
|
public FermerFichier(IhmPdf parent) {
|
||||||
super("Fermer");
|
super(parent, "Fermer");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
addActionListener(e -> {parent.fermerFichier();});
|
addActionListener(e -> {
|
||||||
|
parent.getPdfPanel().dechargerPdf();
|
||||||
KeyStroke raccourciFermer = KeyStroke.getKeyStroke(KeyEvent.VK_X,
|
parent.setTitle(GestionPdf.titreApplication);
|
||||||
KeyEvent.CTRL_DOWN_MASK);
|
parent.pack();
|
||||||
setAccelerator(raccourciFermer);
|
});
|
||||||
|
|
||||||
|
setRaccourcis(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package lecteur_pdf.menuBar.menuItems;
|
||||||
|
|
||||||
|
import lecteur_pdf.IhmPdf;
|
||||||
|
import lecteur_pdf.RaccourcisClavier;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class MenuItem extends JMenuItem {
|
||||||
|
IhmPdf parent;
|
||||||
|
|
||||||
|
public MenuItem(IhmPdf parent, String name) {
|
||||||
|
super(name);
|
||||||
|
this.parent = parent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRaccourcis(int key) {
|
||||||
|
KeyStroke raccourcis = KeyStroke.getKeyStroke((char)key);
|
||||||
|
setAccelerator(raccourcis);
|
||||||
|
|
||||||
|
RaccourcisClavier.gestionnaireRaccourcis.put(this, raccourcis);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRaccourcis(int key, int mask) {
|
||||||
|
KeyStroke raccourcis = KeyStroke.getKeyStroke(key, mask);
|
||||||
|
setAccelerator(raccourcis);
|
||||||
|
|
||||||
|
RaccourcisClavier.gestionnaireRaccourcis.put(this, raccourcis);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,8 @@ import lecteur_pdf.IhmPdf;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
public class ModeSepare extends JMenuItem {
|
public class ModeSepare extends JRadioButtonMenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
IhmPdf parent;
|
||||||
|
|
||||||
public ModeSepare(IhmPdf parent) {
|
public ModeSepare(IhmPdf parent) {
|
||||||
@@ -13,7 +14,7 @@ public class ModeSepare extends JMenuItem {
|
|||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
GestionPdf.modeSynchronise = false;
|
GestionPdf.setModeSynchronise(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO ajouter une checkbox pour indiquer si l'option est utilisé
|
// TODO ajouter une checkbox pour indiquer si l'option est utilisé
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import lecteur_pdf.IhmPdf;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
public class ModeSynchronise extends JMenuItem {
|
public class ModeSynchronise extends JRadioButtonMenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
IhmPdf parent;
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ public class ModeSynchronise extends JMenuItem {
|
|||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
GestionPdf.modeSynchronise = true;
|
GestionPdf.setModeSynchronise(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO ajouter une checkbox pour indiquer si l'option est utilisé
|
// TODO ajouter une checkbox pour indiquer si l'option est utilisé
|
||||||
|
|||||||
@@ -2,17 +2,14 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
|
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
public class ModifierTouches extends MenuItem {
|
||||||
import java.awt.event.KeyEvent;
|
|
||||||
|
|
||||||
public class ModifierTouches extends JMenuItem {
|
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public ModifierTouches(IhmPdf parent) {
|
public ModifierTouches(IhmPdf parent) {
|
||||||
super("Modifier Touches");
|
super(parent, "Modifier Touches");
|
||||||
this.parent = parent;
|
|
||||||
|
addActionListener(e -> {
|
||||||
|
// TODO Ouverture de la fenêtre de dialogue de modification des touches
|
||||||
|
});
|
||||||
|
|
||||||
// TODO ajouter l'options de modif de touches
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,15 +3,10 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
import lecteur_pdf.GestionPdf;
|
import lecteur_pdf.GestionPdf;
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
public class NouvelleFenetre extends MenuItem {
|
||||||
|
|
||||||
public class NouvelleFenetre extends JMenuItem {
|
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public NouvelleFenetre(IhmPdf parent) {
|
public NouvelleFenetre(IhmPdf parent) {
|
||||||
super("Nouvelle Fenêtre");
|
super(parent, "Nouvelle Fenêtre");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
/* Essaye de créer une nouvelle fenêtre */
|
/* Essaye de créer une nouvelle fenêtre */
|
||||||
|
|||||||
@@ -1,29 +1,28 @@
|
|||||||
package lecteur_pdf.menuBar.menuItems;
|
package lecteur_pdf.menuBar.menuItems;
|
||||||
|
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
import lecteur_pdf.SelectionnerFichier;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.io.IOException;
|
import java.io.File;
|
||||||
|
|
||||||
public class OuvrirFichier extends JMenuItem {
|
public class OuvrirFichier extends MenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public OuvrirFichier(IhmPdf parent) {
|
public OuvrirFichier(IhmPdf parent) {
|
||||||
super("Ouvrir");
|
super(parent, "Ouvrir");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
try {
|
File fichier = SelectionnerFichier.ouvrirFichier();
|
||||||
parent.ouvrirFichier();
|
if (fichier != null) {
|
||||||
} catch (IOException ex) {
|
if (parent.getPdfPanel().chargerPdf(fichier)) {
|
||||||
ex.printStackTrace();
|
parent.setTitle(fichier.getName());
|
||||||
|
parent.pack();
|
||||||
|
} else {
|
||||||
|
// TODO Erreur fichier n'as pas pu etre chargé
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
KeyStroke raccourciOuvrir = KeyStroke.getKeyStroke(KeyEvent.VK_O,
|
setRaccourcis(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK);
|
||||||
KeyEvent.CTRL_DOWN_MASK);
|
|
||||||
setAccelerator(raccourciOuvrir);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,15 +3,10 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
import lecteur_pdf.GestionPdf;
|
import lecteur_pdf.GestionPdf;
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
public class PagePrecedente extends MenuItem {
|
||||||
|
|
||||||
public class PagePrecedente extends JMenuItem {
|
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public PagePrecedente(IhmPdf parent) {
|
public PagePrecedente(IhmPdf parent) {
|
||||||
super("Page précédente");
|
super(parent,"Page précédente");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) {
|
if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) {
|
||||||
@@ -21,7 +16,6 @@ public class PagePrecedente extends JMenuItem {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
KeyStroke raccourciPagePrecedente = KeyStroke.getKeyStroke('l');
|
setRaccourcis('l');
|
||||||
setAccelerator(raccourciPagePrecedente);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,15 +3,10 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
import lecteur_pdf.GestionPdf;
|
import lecteur_pdf.GestionPdf;
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
public class PageSuivante extends MenuItem {
|
||||||
|
|
||||||
public class PageSuivante extends JMenuItem {
|
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public PageSuivante(IhmPdf parent) {
|
public PageSuivante(IhmPdf parent) {
|
||||||
super("Page suivante");
|
super(parent,"Page suivante");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
addActionListener(e -> {
|
addActionListener(e -> {
|
||||||
if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) {
|
if (GestionPdf.modeDoubleAffichage && GestionPdf.modeSynchronise) {
|
||||||
@@ -21,7 +16,6 @@ public class PageSuivante extends JMenuItem {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
KeyStroke raccourciPageSuivante = KeyStroke.getKeyStroke('m');
|
setRaccourcis('m');
|
||||||
setAccelerator(raccourciPageSuivante);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,20 +2,16 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
|
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
public class PleinEcran extends JMenuItem {
|
public class PleinEcran extends MenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public PleinEcran(IhmPdf parent) {
|
public PleinEcran(IhmPdf parent) {
|
||||||
super("Mode Plein Ecran");
|
super(parent, "Mode Plein Ecran");
|
||||||
this.parent = parent;
|
|
||||||
KeyStroke raccourciPleinEcran = KeyStroke.getKeyStroke(KeyEvent.VK_F11,
|
|
||||||
0);
|
|
||||||
setAccelerator(raccourciPleinEcran);
|
|
||||||
addActionListener(e -> {parent.pleinEcran();});
|
addActionListener(e -> {parent.pleinEcran();});
|
||||||
|
|
||||||
|
setRaccourcis(KeyEvent.VK_F11);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,22 +2,18 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
|
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
public class Quitter extends JMenuItem {
|
public class Quitter extends MenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public Quitter(IhmPdf parent) {
|
public Quitter(IhmPdf parent) {
|
||||||
super("Quitter");
|
super(parent, "Quitter");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
addActionListener(e -> {parent.quitter();});
|
addActionListener(e -> {
|
||||||
|
parent.quitter();
|
||||||
|
});
|
||||||
|
|
||||||
KeyStroke raccourciQuitter = KeyStroke.getKeyStroke(KeyEvent.VK_Q,
|
setRaccourcis(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
|
||||||
KeyEvent.CTRL_DOWN_MASK);
|
|
||||||
setAccelerator(raccourciQuitter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,21 +2,19 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
|
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
public class ZoomDefaut extends JMenuItem {
|
public class ZoomDefaut extends MenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public ZoomDefaut(IhmPdf parent) {
|
public ZoomDefaut(IhmPdf parent) {
|
||||||
super("Zoom 100%");
|
super(parent, "Zoom 100%");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
KeyStroke raccourciZoomDefaut = KeyStroke.getKeyStroke(KeyEvent.VK_L,
|
addActionListener(e -> {
|
||||||
KeyEvent.CTRL_DOWN_MASK);
|
parent.getPdfPanel().updateScale(1.0f);
|
||||||
setAccelerator(raccourciZoomDefaut);
|
parent.validate();
|
||||||
addActionListener(e -> {parent.zoomDefaut();});
|
});
|
||||||
|
|
||||||
|
setRaccourcis(KeyEvent.VK_L, KeyEvent.CTRL_DOWN_MASK);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,21 +2,19 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
|
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
public class ZoomMoins extends JMenuItem {
|
public class ZoomMoins extends MenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public ZoomMoins(IhmPdf parent) {
|
public ZoomMoins(IhmPdf parent) {
|
||||||
super("Zoom 50%");
|
super(parent, "Zoom 50%");
|
||||||
this.parent = parent;
|
|
||||||
|
|
||||||
KeyStroke raccourciZoomMoins = KeyStroke.getKeyStroke(KeyEvent.VK_K,
|
addActionListener(e -> {
|
||||||
KeyEvent.CTRL_DOWN_MASK);
|
parent.getPdfPanel().updateScale(0.5f);
|
||||||
setAccelerator(raccourciZoomMoins);
|
parent.validate();
|
||||||
addActionListener(e -> {parent.zoomMoins();});
|
});
|
||||||
|
|
||||||
|
setRaccourcis(KeyEvent.VK_K, KeyEvent.CTRL_DOWN_MASK);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,20 +2,19 @@ package lecteur_pdf.menuBar.menuItems;
|
|||||||
|
|
||||||
import lecteur_pdf.IhmPdf;
|
import lecteur_pdf.IhmPdf;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
public class ZoomPlus extends JMenuItem {
|
public class ZoomPlus extends MenuItem {
|
||||||
|
|
||||||
IhmPdf parent;
|
|
||||||
|
|
||||||
public ZoomPlus(IhmPdf parent) {
|
public ZoomPlus(IhmPdf parent) {
|
||||||
super("Zoom 150%");
|
super(parent, "Zoom 150%");
|
||||||
this.parent = parent;
|
|
||||||
KeyStroke raccourciZoomPlus = KeyStroke.getKeyStroke(KeyEvent.VK_M,
|
addActionListener(e -> {
|
||||||
KeyEvent.CTRL_DOWN_MASK);
|
parent.getPdfPanel().updateScale(1.5f);
|
||||||
setAccelerator(raccourciZoomPlus);
|
parent.validate();
|
||||||
addActionListener(e -> {parent.zoomPlus();});
|
});
|
||||||
|
|
||||||
|
setRaccourcis(KeyEvent.VK_M, KeyEvent.CTRL_DOWN_MASK);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -29,6 +29,7 @@ public class PdfLoader {
|
|||||||
|
|
||||||
public void close() {
|
public void close() {
|
||||||
try {
|
try {
|
||||||
|
renderer = null;
|
||||||
document.close();
|
document.close();
|
||||||
} catch(IOException ignored) {}
|
} catch(IOException ignored) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ public class PdfPanel extends JPanel {
|
|||||||
private int currentPage;
|
private int currentPage;
|
||||||
private float currentScale;
|
private float currentScale;
|
||||||
|
|
||||||
final PdfLoader pdfLoader;
|
private PdfLoader pdfLoader;
|
||||||
|
|
||||||
private JButton suivantButton;
|
private JButton suivantButton;
|
||||||
private JButton precedentButton;
|
private JButton precedentButton;
|
||||||
@@ -19,17 +19,14 @@ public class PdfPanel extends JPanel {
|
|||||||
private JScrollPane scrollPane;
|
private JScrollPane scrollPane;
|
||||||
private JTextField indexPage;
|
private JTextField indexPage;
|
||||||
|
|
||||||
public PdfPanel(File pdfFile) throws IOException {
|
public PdfPanel() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.currentScale = 1.0f;
|
this.currentScale = 1.0f;
|
||||||
|
|
||||||
scrollPane.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
|
scrollPane.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());
|
||||||
/* Définitions des arguments */
|
|
||||||
pdfLoader = new PdfLoader(pdfFile);
|
|
||||||
|
|
||||||
if (pdfFile != null) {
|
// TODO supprimer le form et creer les éléments 1 par 1
|
||||||
defaultPage();
|
|
||||||
|
|
||||||
/* Hierarchie */
|
/* Hierarchie */
|
||||||
add(mainPanel);
|
add(mainPanel);
|
||||||
@@ -37,50 +34,110 @@ public class PdfPanel extends JPanel {
|
|||||||
/* Actions */
|
/* Actions */
|
||||||
suivantButton.addActionListener(e -> nextPage());
|
suivantButton.addActionListener(e -> nextPage());
|
||||||
precedentButton.addActionListener(e -> previousPage());
|
precedentButton.addActionListener(e -> previousPage());
|
||||||
indexPage.addActionListener(e -> updatePageInput());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
indexPage.addActionListener(e -> {
|
||||||
|
|
||||||
public void updateScale(float scale) {
|
String saisie = indexPage.getText();
|
||||||
this.currentScale = scale;
|
|
||||||
updatePage(currentPage);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void defaultPage() {
|
int index = Integer.parseInt(saisie);
|
||||||
updatePage(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void nextPage() {
|
/* Si cet entier est valide on change de page sinon on efface le contenu de la saisie */
|
||||||
updatePage(currentPage + 1);
|
if (isPageValide(index)) {
|
||||||
}
|
setPage(index - 1);
|
||||||
|
|
||||||
public void previousPage() {
|
|
||||||
updatePage(currentPage - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updatePage(int index) {
|
|
||||||
try {
|
|
||||||
if (pdfLoader == null) throw new IllegalStateException();
|
|
||||||
page.setIcon(new ImageIcon(pdfLoader.renderPage(index,
|
|
||||||
currentScale)));
|
|
||||||
currentPage = index;
|
|
||||||
pageIndicator.setText(String.format("%d/%d", currentPage + 1,
|
|
||||||
pdfLoader.getNbPages()));
|
|
||||||
} catch (IOException | IllegalArgumentException | IllegalStateException ignored) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updatePageInput() {
|
|
||||||
String input = indexPage.getText();
|
|
||||||
try {
|
|
||||||
int index = Integer.parseInt(input);
|
|
||||||
if (index > 0 && index <= pdfLoader.getNbPages()) {
|
|
||||||
updatePage(index - 1);
|
|
||||||
} else {
|
} else {
|
||||||
throw new Exception();
|
indexPage.setText(null);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prédicat qui vérifie si un index de page est valide pour le PDF courrant
|
||||||
|
* @param index Entier correspondant a l'indice du numéro de page à tester
|
||||||
|
* @return true si le prédicat est vérifié, false sinon
|
||||||
|
*/
|
||||||
|
private boolean isPageValide(int index) {
|
||||||
|
if (pdfLoader == null) return false;
|
||||||
|
return 0 <= index && index < pdfLoader.getNbPages();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode qui permet de charger un PDF dans le fenêtre courrante
|
||||||
|
* @param pdfFile Le fichier PDF à charger
|
||||||
|
* @return true si le PDF à pu se charger, false sinon
|
||||||
|
*/
|
||||||
|
public boolean chargerPdf(File pdfFile) {
|
||||||
|
try {
|
||||||
|
setPdfLoader(new PdfLoader(pdfFile));
|
||||||
|
setPage(0);
|
||||||
|
} catch (IOException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPdfLoader(PdfLoader pdfLoader) {
|
||||||
|
this.pdfLoader = pdfLoader;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dechargerPdf() {
|
||||||
|
if (pdfLoader == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ferme le loader et l'efface */
|
||||||
|
pdfLoader.close();
|
||||||
|
pdfLoader = null;
|
||||||
|
|
||||||
|
/* Efface l'image de la page */
|
||||||
|
page.setIcon(null);
|
||||||
|
currentPage = 0;
|
||||||
|
|
||||||
|
/* Interface Vide */
|
||||||
indexPage.setText("");
|
indexPage.setText("");
|
||||||
}
|
pageIndicator.setText("/ -");
|
||||||
|
|
||||||
|
validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change la taille de la page courrante
|
||||||
|
* @param scale Valeur flottante (1.00f == 100%)
|
||||||
|
*/
|
||||||
|
public void updateScale(float scale) {
|
||||||
|
currentScale = scale;
|
||||||
|
setPage(currentPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Affiche la page suivante
|
||||||
|
*/
|
||||||
|
public void nextPage() {
|
||||||
|
setPage(currentPage + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Affiche la page suivante
|
||||||
|
*/
|
||||||
|
public void previousPage() {
|
||||||
|
setPage(currentPage - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Essaye de changer de page si possible, sinon ne fait rien
|
||||||
|
* @param index Le numéro de la page où l'on veut se rendre
|
||||||
|
*/
|
||||||
|
private void setPage(int index) {
|
||||||
|
if (!isPageValide(index)) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, currentScale)));
|
||||||
|
currentPage = index;
|
||||||
|
indexPage.setText(Integer.toString(currentPage +1));
|
||||||
|
pageIndicator.setText(String.format("/%d", pdfLoader.getNbPages()));
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user