Refactor de code + edit Popup

This commit is contained in:
LucasV-IUT
2022-03-09 13:08:25 +01:00
parent f036cf048f
commit 72c9fa4bc8
30 changed files with 299 additions and 307 deletions
@@ -14,43 +14,53 @@ import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.io.IOException;
/** /**
* TODO commentaires * Classe définissant une fenêtre qui peut contenir un document PDF
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @author Tristan Nogaret * @author Tristan Nogaret
*/ */
public class IhmPdf extends JFrame { public class Fenetre extends JFrame {
/* Elements visuels */ /**
* Titre de l'application
*/
public static final String TITRE = "LPDA";
/**
* Le Panel contenant le document PDF
*/
private final PdfPanel pdfPanel; private final PdfPanel pdfPanel;
private MenuBar menuBar;
/* Relatif au FullScreen */ /* Relatif au FullScreen */
/**
* Booléen qui définit si la fenêtre est en mode plein écran ou non
*/
private boolean fullscreen = false; private boolean fullscreen = false;
/**
* Composant Graphique permettant la mise en place du plein ecran
*/
private GraphicsDevice device; private GraphicsDevice device;
/** /**
* TODO * Crée une nouvelle fenêtre vide
* @throws IOException
*/ */
public IhmPdf() throws IOException { public Fenetre() {
super(GestionPdf.TITRE_APPLICATION); super(TITRE);
/* Icone de la fenêtre */ /* Icone de la fenêtre */
setIconImage(GestionPdf.ICONE); setIconImage(GestionFenetre.ICONE);
/* Déclaration des attributs */ /* Déclaration des attributs */
menuBar = new MenuBar(this);
pdfPanel = new PdfPanel(); pdfPanel = new PdfPanel();
/* Hierarchie */ /* Hierarchie */
setContentPane(pdfPanel); setContentPane(pdfPanel);
setJMenuBar(menuBar); setJMenuBar(new MenuBar(this)); // Ajoute la barre des menus
/* Action à la fermeture de la fenêtre */ /* Action à la fermeture de la fenêtre */
this.addWindowListener(new WindowAdapter(){ this.addWindowListener(new WindowAdapter(){
@@ -72,42 +82,57 @@ public class IhmPdf extends JFrame {
} }
/** /**
* TODO * @return Le Panel contenant le document PDF
* @return
*/ */
public PdfPanel getPdfPanel() { public PdfPanel getPdfPanel() {
return pdfPanel; return pdfPanel;
} }
/** /**
* TODO * Si fullscreen est égal à false -> Désactive le mode Plein Ecran
* Sinon Active le mode Plein Ecran
*/ */
public void pleinEcran() { public void pleinEcran() {
// Switch de disposition
fullscreen = !fullscreen; if (!fullscreen) { // Active le Plein Ecran
if (fullscreen) { // Set fullscreen GraphicsEnvironment graphics = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsEnvironment graphics =
GraphicsEnvironment.getLocalGraphicsEnvironment();
device = graphics.getDefaultScreenDevice(); device = graphics.getDefaultScreenDevice();
device.setFullScreenWindow(this); device.setFullScreenWindow(this);
} else { // remove fullscreen } else { // Désactive le Plein Ecran
device.setFullScreenWindow(null); device.setFullScreenWindow(null);
setUndecorated(false); setUndecorated(false);
setVisible(true); setVisible(true);
} }
fullscreen = !fullscreen;
} }
/** /**
* TODO * Décharge le PDF courrant, ferme la fenêtre
* Si il s'agit de la dernière fenêtre ouverte, arrête l'application
*/ */
public void quitter() { public void quitter() {
/* Décharge le PDF */
pdfPanel.dechargerPdf(); pdfPanel.dechargerPdf();
if (GestionPdf.ihmPdfList.size() == GestionPdf.maxPdf) GestionMode.activerFenetre();
GestionPdf.ihmPdfList.remove(this); /* Supprime la fenêtre de la liste du Gestionnaire de Fenêtre */
GestionFenetre.FENETRE_LIST.remove(this);
dispose(); dispose();
if (GestionPdf.ihmPdfList.size() == 0) { /* Si la liste des fenêtres n'est pas pleine alors on reactive le boutton pour créer une nouvelle fenêtre */
System.exit(0); if (GestionFenetre.FENETRE_LIST.size() < GestionFenetre.NB_MAX_PDF) GestionMode.activerBtnNouvelleFenetre();
}
/* Si il n'y a plus de fenêtre ouvertes on quitte l'application */
if (GestionFenetre.FENETRE_LIST.size() == 0) System.exit(0);
}
/**
* Décharge le PDF courrant et redéfini le titre de l'application
*/
public void fermerPdf() {
getPdfPanel().dechargerPdf();
setTitle(TITRE);
pack();
} }
} }
@@ -6,69 +6,60 @@
package lecteur_pdf; package lecteur_pdf;
import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* TODO commentaires * Gestionnaire des fênetres ouvertes dans l'application
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @author Tristan Nogaret * @author Tristan Nogaret
*/ */
public class GestionPdf { public class GestionFenetre {
/**
* TODO
*/
public static final String TITRE_APPLICATION = "LPDA";
/**
* Iconne de l'application (affiché en haut a droite des fenêtres)
*/
public static final Image ICONE = new ImageIcon("./lib/icon.png").getImage(); public static final Image ICONE = new ImageIcon("./lib/icon.png").getImage();
/** /**
* TODO * Nombre maximum de PDF que l'application peut ouvrir en simultané
*/ */
public static final int maxPdf = 2; public static final int NB_MAX_PDF = 2;
/** /**
* TODO * Liste des fenêtres ouvertes
*/ */
public static final List<IhmPdf> ihmPdfList = new ArrayList<>(); public static final List<Fenetre> FENETRE_LIST = new ArrayList<>();
/** /**
* Crée une nouvelle fenêtre * Crée une nouvelle fenêtre si NB_MAX_PDF n'est pas atteint
*/ */
public static void newIhmPdf() { public static void newIhmPdf() {
if (ihmPdfList.size() >= maxPdf) { if (FENETRE_LIST.size() < NB_MAX_PDF) {
JOptionPane.showMessageDialog(new JFrame(),"vous ne pouvez plus ouvrir de nouvelle fenêtre car vous avez atteint le nombre maximum. "); Fenetre ihm = new Fenetre();
return; FENETRE_LIST.add(ihm);
} }
try {
IhmPdf ihm = new IhmPdf();
ihmPdfList.add(ihm);
} catch (IOException ignored) {}
} }
/** /**
* Methode affiche la page suivante en mode Synchronisé * Methode qui affiche la page suivante de tout les PDF ouvert (mode Synchronisé)
*/ */
public static void nextPages() { public static void nextPages() {
for (IhmPdf ihm : ihmPdfList) { for (Fenetre ihm : FENETRE_LIST) {
ihm.getPdfPanel().nextPage(); ihm.getPdfPanel().nextPage();
} }
} }
/** /**
* Methode affiche la page précédente en mode Synchronisé * Methode qui affiche la page précédente de tout les PDF ouvert (mode Synchronisé)
*/ */
public static void previousPages() { public static void previousPages() {
for (IhmPdf ihm : ihmPdfList) { for (Fenetre ihm : FENETRE_LIST) {
ihm.getPdfPanel().previousPage(); ihm.getPdfPanel().previousPage();
} }
} }
@@ -78,9 +69,7 @@ public class GestionPdf {
* @param args non utilisé * @param args non utilisé
*/ */
public static void main(String[] args) { public static void main(String[] args) {
/* Définit le style de la fenêtre sur l'explorateur windows lorsque /* Définit le style de la fenêtre sur l'explorateur windows si possible */
* cela est possible
*/
try { try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception ignored) {} } catch (Exception ignored) {}
+1 -1
View File
@@ -104,7 +104,7 @@ public class GestionMode {
/** /**
* TODO * TODO
*/ */
public static void activerFenetre() { public static void activerBtnNouvelleFenetre() {
for (NouvelleFenetre item : nouvelleFenetreList) { for (NouvelleFenetre item : nouvelleFenetreList) {
item.setEnabled(true); item.setEnabled(true);
item.setBackground(Color.BLACK); item.setBackground(Color.BLACK);
+37
View File
@@ -0,0 +1,37 @@
/*
* Popup.java, 09/03/2022
* IUT Rodez 2021-2022, INFO 2
* pas de copyright, aucun droits
*/
package lecteur_pdf;
import javax.swing.*;
import java.awt.*;
/**
* TODO
*
* @author Léo Franch
* @author Lucas Vabre
* @author Noé Villeneuve
* @author Tristan Nogaret
*/
public class Popup {
public static int OuiNonPopup(Component parent, String titre, String message) {
JOptionPane d = new JOptionPane();
String[] choix = {"Oui", "Non"};
return d.showOptionDialog(parent, message, titre, JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, choix, choix[0]);
}
public static void errorPopup(Component parent, String titre, String message) {
JOptionPane d = new JOptionPane();
String[] choix = {"OK"};
JOptionPane.showOptionDialog(parent, message, titre, JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, choix, choix[0]);
}
}
+4 -4
View File
@@ -12,8 +12,8 @@ import javax.swing.filechooser.FileSystemView;
import java.io.File; import java.io.File;
/** /**
* Classe qui permet d'ouvrir une fenêtre pour sélectionner le fichier pdf à * Classe qui permet d'ouvrir une fenêtre pour sélectionner le fichier pdf à ouvrir
* ouvrir *
* @author Léo FRANCH * @author Léo FRANCH
* @author Tristan NOGARET * @author Tristan NOGARET
* @author Lucàs VABRE * @author Lucàs VABRE
@@ -23,8 +23,8 @@ import java.io.File;
public class SelectionnerFichier { public class SelectionnerFichier {
/** /**
* Méthode qui créée une fenêtre pour que l'utilisateur choisisse un * Méthode qui créée une fenêtre pour que l'utilisateur choisisse un fichier PDF
* fichier PDF *
* @return le fichier choisi par l'utilisateur * @return le fichier choisi par l'utilisateur
*/ */
public static File ouvrirFichier(JFrame parent) { public static File ouvrirFichier(JFrame parent) {
+2 -2
View File
@@ -6,7 +6,7 @@
package lecteur_pdf.menuBar; package lecteur_pdf.menuBar;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.menuBar.menu.MenuAffichage; import lecteur_pdf.menuBar.menu.MenuAffichage;
import lecteur_pdf.menuBar.menu.MenuFichier; import lecteur_pdf.menuBar.menu.MenuFichier;
import lecteur_pdf.menuBar.menu.MenuMode; import lecteur_pdf.menuBar.menu.MenuMode;
@@ -24,7 +24,7 @@ import javax.swing.*;
*/ */
public class MenuBar extends JMenuBar { public class MenuBar extends JMenuBar {
public MenuBar(IhmPdf parent) { public MenuBar(Fenetre parent) {
add(new MenuFichier(parent)); add(new MenuFichier(parent));
add(new MenuAffichage(parent)); add(new MenuAffichage(parent));
add(new MenuMode(parent)); add(new MenuMode(parent));
@@ -6,7 +6,7 @@
package lecteur_pdf.menuBar.menu; package lecteur_pdf.menuBar.menu;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.menuBar.menuItems.*; import lecteur_pdf.menuBar.menuItems.*;
import javax.swing.*; import javax.swing.*;
@@ -26,16 +26,14 @@ public class MenuAffichage extends JMenu {
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce menu * @param parent Référence de la fenêtre qui possède l'instance de ce menu
*/ */
public MenuAffichage(IhmPdf parent) { public MenuAffichage(Fenetre parent) {
super("Affichage"); super("Affichage");
/* - Ajoute les différentes options - */
/* Mode plein écran */ /* Mode plein écran */
add(new PleinEcran(parent)); add(new PleinEcran(parent));
addSeparator(); addSeparator();
/* Navigation dans les différentes pages des documents */ /* Navigation dans les différentes pages */
add(new PagePrecedente(parent)); add(new PagePrecedente(parent));
add(new PageSuivante(parent)); add(new PageSuivante(parent));
addSeparator(); addSeparator();
@@ -46,6 +44,7 @@ public class MenuAffichage extends JMenu {
add(new ZoomPlus(parent)); add(new ZoomPlus(parent));
addSeparator(); addSeparator();
/* Mode d'affichage */
add(new PageEntiere(parent)); add(new PageEntiere(parent));
add(new PleineLargeur(parent)); add(new PleineLargeur(parent));
} }
@@ -6,7 +6,7 @@
package lecteur_pdf.menuBar.menu; package lecteur_pdf.menuBar.menu;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.menuBar.menuItems.*; import lecteur_pdf.menuBar.menuItems.*;
import javax.swing.*; import javax.swing.*;
@@ -26,11 +26,9 @@ public class MenuFichier extends JMenu {
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce menu * @param parent Référence de la fenêtre qui possède l'instance de ce menu
*/ */
public MenuFichier(IhmPdf parent) { public MenuFichier(Fenetre parent) {
super("Fichier"); super("Fichier");
/* - Ajoute les différentes options - */
add(new OuvrirFichier(parent)); add(new OuvrirFichier(parent));
add(new FermerFichier(parent)); add(new FermerFichier(parent));
add(new Quitter(parent)); add(new Quitter(parent));
+2 -2
View File
@@ -7,7 +7,7 @@
package lecteur_pdf.menuBar.menu; package lecteur_pdf.menuBar.menu;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.menuBar.menuItems.ModeSepare; import lecteur_pdf.menuBar.menuItems.ModeSepare;
import lecteur_pdf.menuBar.menuItems.ModeSynchronise; import lecteur_pdf.menuBar.menuItems.ModeSynchronise;
import lecteur_pdf.menuBar.menuItems.NouvelleFenetre; import lecteur_pdf.menuBar.menuItems.NouvelleFenetre;
@@ -29,7 +29,7 @@ public class MenuMode extends JMenu {
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce menu * @param parent Référence de la fenêtre qui possède l'instance de ce menu
*/ */
public MenuMode(IhmPdf parent) { public MenuMode(Fenetre parent) {
super("Mode"); super("Mode");
/* Crée les différentes options */ /* Crée les différentes options */
@@ -6,7 +6,7 @@
package lecteur_pdf.menuBar.menu; package lecteur_pdf.menuBar.menu;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.menuBar.menuItems.*; import lecteur_pdf.menuBar.menuItems.*;
import javax.swing.*; import javax.swing.*;
@@ -26,7 +26,7 @@ public class MenuOptions extends JMenu {
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce menu * @param parent Référence de la fenêtre qui possède l'instance de ce menu
*/ */
public MenuOptions(IhmPdf parent) { public MenuOptions(Fenetre parent) {
super("Options"); super("Options");
add(new ModifierTouches(parent)); add(new ModifierTouches(parent));
} }
@@ -6,13 +6,11 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Popup;
import javax.swing.*; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -25,35 +23,21 @@ import java.awt.event.KeyEvent;
public class FermerFichier extends MenuItem { public class FermerFichier extends MenuItem {
/** /**
* TODO * Crée un nouvel Element de Menu "Fermer"
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public FermerFichier(IhmPdf parent) { public FermerFichier(Fenetre parent) {
super(parent, "Fermer"); super(parent, "Fermer");
/* TODO Définition du raccourcis.save clavier a modifier */
// setRaccourcis(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK);
} }
@Override @Override
protected void action(ActionEvent evt) { protected void action(ActionEvent evt) {
JDialog jd = new JDialog(); if (parent.getPdfPanel().isCharge()) {
jd.setLayout(new FlowLayout()); String TITRE = "Fermeture du document";
jd.setBounds(500,300,400,100); String MESSAGE = "Etes vous sûr de vouloir fermer le document ?";
JLabel jlabel = new JLabel("etes vous sûr de vouloir fermer ? ");
JButton oui = new JButton("oui"); if (Popup.OuiNonPopup(parent, TITRE, MESSAGE) == JOptionPane.YES_OPTION) parent.fermerPdf();
oui.addActionListener(m -> { }
parent.getPdfPanel().dechargerPdf();
parent.setTitle(GestionPdf.TITRE_APPLICATION);
parent.pack();
jd.setVisible(false);
});
JButton non = new JButton("non");
non.addActionListener(n -> jd.setVisible(false));
jd.add(jlabel);
jd.add(oui);
jd.add(non);
jd.setVisible(true);
} }
} }
@@ -6,14 +6,14 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
/** /**
* TODO commentaires * Classe abstraite qui défini les Elements de menu qui necessite d'acceder à leur Fenêtre parente
* *
* @author Léo Franch * @author Léo Franch
* @author Lucas Vabre * @author Lucas Vabre
@@ -23,25 +23,26 @@ import java.awt.event.ActionEvent;
public abstract class MenuItem extends JMenuItem { public abstract class MenuItem extends JMenuItem {
/** /**
* TODO * Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
IhmPdf parent; Fenetre parent;
/** /**
* TODO * Crée un nouvel Element de Menu avec un nom, une action et se référence dans la liste des raccourcis claviers
* *
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
* @param name Nom de l'action * @param name Nom de l'action
*/ */
public MenuItem(IhmPdf parent, String name) { public MenuItem(Fenetre parent, String name) {
super(name); super(name);
this.parent = parent; this.parent = parent;
addActionListener(this::action); addActionListener(this::action);
RaccourcisClavier.listeMenuItems.add(this); RaccourcisClavier.listeMenuItems.add(this);
} }
/**
* Action de l'element lors du clic
* @param evt Action de l'utilisateur (clic)
*/
protected abstract void action(ActionEvent evt); protected abstract void action(ActionEvent evt);
} }
@@ -7,7 +7,6 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
import lecteur_pdf.IhmPdf;
import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import javax.swing.*; import javax.swing.*;
@@ -24,15 +23,10 @@ public class ModeSepare extends JRadioButtonMenuItem {
/** /**
* TODO * TODO
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public ModeSepare() { public ModeSepare() {
super("Mode Séparé"); super("Mode Séparé");
addActionListener(e -> GestionMode.setModeSepare());
addActionListener(e -> {
GestionMode.setModeSepare();
});
RaccourcisClavier.listeMenuItems.add(this); RaccourcisClavier.listeMenuItems.add(this);
} }
} }
@@ -7,7 +7,6 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
import lecteur_pdf.IhmPdf;
import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import javax.swing.*; import javax.swing.*;
@@ -22,13 +21,12 @@ import javax.swing.*;
*/ */
public class ModeSynchronise extends JRadioButtonMenuItem { public class ModeSynchronise extends JRadioButtonMenuItem {
/**
* TODO
*/
public ModeSynchronise() { public ModeSynchronise() {
super("Mode Synchronisé"); super("Mode Synchronisé");
addActionListener(e -> GestionMode.setModeSynchronise());
addActionListener(e -> {
GestionMode.setModeSynchronise();
});
RaccourcisClavier.listeMenuItems.add(this); RaccourcisClavier.listeMenuItems.add(this);
} }
} }
@@ -6,7 +6,7 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import lecteur_pdf.raccourcisClavier.RaccourcisClavier;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -25,7 +25,7 @@ public class ModifierTouches extends MenuItem {
* TODO * TODO
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public ModifierTouches(IhmPdf parent) { public ModifierTouches(Fenetre parent) {
super(parent, "Modifier Touches"); super(parent, "Modifier Touches");
} }
@@ -7,8 +7,8 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionFenetre;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -26,16 +26,16 @@ public class NouvelleFenetre extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public NouvelleFenetre(IhmPdf parent) { public NouvelleFenetre(Fenetre parent) {
super(parent, "Nouvelle Fenêtre"); super(parent, "Nouvelle Fenêtre");
} }
@Override @Override
public void action(ActionEvent evt) { public void action(ActionEvent evt) {
/* Essaye de créer une nouvelle fenêtre */ /* Essaye de créer une nouvelle fenêtre */
GestionPdf.newIhmPdf(); GestionFenetre.newIhmPdf();
/* Désactive le bouton si on a atteint la limite des affichages */ /* Désactive le bouton si on a atteint la limite des affichages */
if (GestionPdf.ihmPdfList.size() == GestionPdf.maxPdf) GestionMode.desactiverFenetre(); if (GestionFenetre.FENETRE_LIST.size() == GestionFenetre.NB_MAX_PDF) GestionMode.desactiverFenetre();
} }
} }
@@ -6,12 +6,11 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Popup;
import lecteur_pdf.SelectionnerFichier; import lecteur_pdf.SelectionnerFichier;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File; import java.io.File;
/** /**
@@ -28,7 +27,7 @@ public class OuvrirFichier extends MenuItem {
* TODO * TODO
* *
*/ */
public OuvrirFichier(IhmPdf parent) { public OuvrirFichier(Fenetre parent) {
super(parent, "Ouvrir"); super(parent, "Ouvrir");
// setRaccourcis(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK); // setRaccourcis(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK);
@@ -45,14 +44,16 @@ public class OuvrirFichier extends MenuItem {
/* Si il y a deja un fichier d'ouvert, on le ferme */ /* Si il y a deja un fichier d'ouvert, on le ferme */
parent.getPdfPanel().dechargerPdf(); parent.getPdfPanel().dechargerPdf();
parent.setTitle(GestionPdf.TITRE_APPLICATION); parent.setTitle(Fenetre.TITRE);
parent.pack(); parent.pack();
if (parent.getPdfPanel().chargerPdf(fichier)) { if (parent.getPdfPanel().chargerPdf(fichier)) {
parent.setTitle(GestionPdf.TITRE_APPLICATION + " - " + fichier.getName()); parent.setTitle(Fenetre.TITRE + " - " + fichier.getName());
parent.pack(); parent.pack();
} else { } else {
// TODO Erreur fichier n'as pas pu etre chargé final String TITRE = "Erreur";
final String MESSAGE = "Erreur : Le document n'as pas pu être chargé";
Popup.errorPopup(parent, TITRE, MESSAGE);
} }
} }
} }
@@ -1,6 +1,6 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -9,7 +9,7 @@ public class PageEntiere extends MenuItem {
* TODO * TODO
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public PageEntiere(IhmPdf parent) { public PageEntiere(Fenetre parent) {
super(parent, "Page Entière"); super(parent, "Page Entière");
} }
@@ -7,11 +7,10 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionFenetre;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -27,13 +26,13 @@ public class PagePrecedente extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public PagePrecedente(IhmPdf parent) { public PagePrecedente(Fenetre parent) {
super(parent, "Page précédente"); super(parent, "Page précédente");
} }
@Override @Override
protected void action(ActionEvent evt) { protected void action(ActionEvent evt) {
if (GestionMode.isModeSepare()) parent.getPdfPanel().previousPage(); if (GestionMode.isModeSepare()) parent.getPdfPanel().previousPage();
else GestionPdf.previousPages(); else GestionFenetre.previousPages();
} }
} }
@@ -7,11 +7,10 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionFenetre;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -27,13 +26,13 @@ public class PageSuivante extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public PageSuivante(IhmPdf parent) { public PageSuivante(Fenetre parent) {
super(parent, "Page suivante"); super(parent, "Page suivante");
} }
@Override @Override
protected void action(ActionEvent evt) { protected void action(ActionEvent evt) {
if (GestionMode.isModeSepare()) parent.getPdfPanel().nextPage(); if (GestionMode.isModeSepare()) parent.getPdfPanel().nextPage();
else GestionPdf.nextPages(); else GestionFenetre.nextPages();
} }
} }
@@ -6,10 +6,9 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -25,10 +24,8 @@ public class PleinEcran extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public PleinEcran(IhmPdf parent) { public PleinEcran(Fenetre parent) {
super(parent, "Mode Plein Ecran"); super(parent, "Mode Plein Ecran");
// setRaccourcis(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK);
} }
@Override @Override
@@ -1,6 +1,6 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -11,7 +11,7 @@ public class PleineLargeur extends MenuItem{
* TODO * TODO
* @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem
*/ */
public PleineLargeur(IhmPdf parent) { public PleineLargeur(Fenetre parent) {
super(parent, "Pleine Largeur"); super(parent, "Pleine Largeur");
} }
+6 -21
View File
@@ -6,12 +6,11 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import lecteur_pdf.Popup;
import javax.swing.*; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -27,28 +26,14 @@ public class Quitter extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public Quitter(IhmPdf parent) { public Quitter(Fenetre parent) {
super(parent, "Quitter"); super(parent, "Quitter");
// setRaccourcis(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK);
} }
@Override @Override
protected void action(ActionEvent evt) { protected void action(ActionEvent evt) {
JDialog jd = new JDialog(); final String TITRE = "Quitter";
jd.setLayout(new FlowLayout()); final String MESSAGE = "Etes-vous sûr de vouloir quitter l'application ?";
jd.setBounds(500,300,400,100); if (Popup.OuiNonPopup(parent, TITRE, MESSAGE) == JOptionPane.YES_OPTION) parent.quitter();
JLabel jlabel = new JLabel("etes vous sûr de vouloir quitter ? ");
JButton oui = new JButton("oui");
oui.addActionListener(m -> {
parent.quitter();
jd.setVisible(false);
});
JButton non = new JButton("non");
non.addActionListener(n -> jd.setVisible(false));
jd.add(jlabel);
jd.add(oui);
jd.add(non);
jd.setVisible(true);
} }
} }
@@ -6,10 +6,9 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -25,11 +24,8 @@ public class ZoomDefaut extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public ZoomDefaut(IhmPdf parent) { public ZoomDefaut(Fenetre parent) {
super(parent, "Zoom 100%"); super(parent, "Zoom 100%");
// setRaccourcis(KeyEvent.VK_G, KeyEvent.CTRL_DOWN_MASK);
} }
@Override @Override
@@ -6,10 +6,9 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -25,11 +24,8 @@ public class ZoomMoins extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public ZoomMoins(IhmPdf parent) { public ZoomMoins(Fenetre parent) {
super(parent, "Zoom 50%"); super(parent, "Zoom 50%");
// setRaccourcis(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK);
} }
@Override @Override
@@ -6,10 +6,9 @@
package lecteur_pdf.menuBar.menuItems; package lecteur_pdf.menuBar.menuItems;
import lecteur_pdf.IhmPdf; import lecteur_pdf.Fenetre;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
/** /**
* TODO commentaires * TODO commentaires
@@ -25,11 +24,8 @@ public class ZoomPlus extends MenuItem {
* TODO * TODO
* @param parent * @param parent
*/ */
public ZoomPlus(IhmPdf parent) { public ZoomPlus(Fenetre parent) {
super(parent, "Zoom 150%"); super(parent, "Zoom 150%");
// setRaccourcis(KeyEvent.VK_H, KeyEvent.CTRL_DOWN_MASK);
} }
@Override @Override
@@ -21,7 +21,7 @@ import java.io.IOException;
* @author Noé Villeneuve * @author Noé Villeneuve
* @author Tristan Nogaret * @author Tristan Nogaret
*/ */
public class PdfLoader { public class DocumentPdf {
/** /**
* TODO * TODO
@@ -42,7 +42,7 @@ public class PdfLoader {
* @param file * @param file
* @throws IOException * @throws IOException
*/ */
public PdfLoader(File file) throws IOException { public DocumentPdf(File file) throws IOException {
document = PDDocument.load(file); document = PDDocument.load(file);
renderer = new PDFRenderer(document); renderer = new PDFRenderer(document);
minWidth = -1; minWidth = -1;
@@ -112,16 +112,4 @@ public class PdfLoader {
minHeight = -1; minHeight = -1;
} catch (IOException ignored) {} } catch (IOException ignored) {}
} }
/**
* TODO
*
* @param file
*/
public void load(File file) {
try {
document = PDDocument.load(file);
} catch (IOException ignored) {
}
}
} }
+60 -60
View File
@@ -1,60 +1,60 @@
package lecteur_pdf.pdf; //package lecteur_pdf.pdf;
//
import javax.swing.*; //import javax.swing.*;
import java.awt.*; //import java.awt.*;
import java.awt.image.BufferedImage; //import java.awt.image.BufferedImage;
//
public class OutilsImage { //public class OutilsImage {
//
/** // /**
* Change la taille d'une image // * Change la taille d'une image
* @param img // * @param img
* @param newW // * @param newW
* @param newH // * @param newH
* @return // * @return
*/ // */
public static BufferedImage resize(BufferedImage img, int newW, int newH) { // public static BufferedImage resize(BufferedImage img, int newW, int newH) {
int w = img.getWidth(); // int w = img.getWidth();
int h = img.getHeight(); // int h = img.getHeight();
BufferedImage dimg = new BufferedImage(newW, newH, img.getType()); // BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
Graphics2D g = dimg.createGraphics(); // Graphics2D g = dimg.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, // g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR); // RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null); // g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
g.dispose(); // g.dispose();
return dimg; // return dimg;
} // }
//
/** // /**
* // *
* @param img // * @param img
* @param newW // * @param newW
* @return // * @return
*/ // */
public static BufferedImage resizeWidth(PdfLoader a, Icon img, int newW) { // public static BufferedImage resizeWidth(DocumentPdf a, Icon img, int newW) {
int w = a.getMinWidth(); // int w = a.getMinWidth();
int h = a.getMinHeight(); // int h = a.getMinHeight();
//
float ratio = (float)newW / (float)w; // float ratio = (float)newW / (float)w;
//
return a.setScale(ratio); // return a.setScale(ratio);
} // }
//
/** // /**
* // *
* @param img // * @param img
* @param newH // * @param newH
* @return // * @return
*/ // */
public static BufferedImage resizeHeight(BufferedImage img, int newH) { // public static BufferedImage resizeHeight(BufferedImage img, int newH) {
int w = img.getWidth(); // int w = img.getWidth();
int h = img.getHeight(); // int h = img.getHeight();
//
int ratio = newH / (1+h); // int ratio = newH / (1+h);
//
int newW = w * ratio; // int newW = w * ratio;
//
return resize(img, newW, newH); // return resize(img, newW, newH);
} // }
//
} //}
+43 -33
View File
@@ -7,7 +7,8 @@
package lecteur_pdf.pdf; package lecteur_pdf.pdf;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionFenetre;
import lecteur_pdf.Popup;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
@@ -33,7 +34,7 @@ public class PdfPanel extends JPanel {
private boolean processing; private boolean processing;
/* Chargeur de Pdf */ /* Chargeur de Pdf */
private PdfLoader pdfLoader; private DocumentPdf pdfLoader;
/* Interface */ /* Interface */
private final JTextField indexPageInput; private final JTextField indexPageInput;
@@ -123,7 +124,7 @@ public class PdfPanel extends JPanel {
*/ */
private void btnSuivantAction(ActionEvent evt) { private void btnSuivantAction(ActionEvent evt) {
if (GestionMode.isModeSepare()) nextPage(); if (GestionMode.isModeSepare()) nextPage();
else GestionPdf.nextPages(); else GestionFenetre.nextPages();
} }
/** /**
@@ -131,7 +132,7 @@ public class PdfPanel extends JPanel {
*/ */
private void btnPrecedentAction(ActionEvent evt) { private void btnPrecedentAction(ActionEvent evt) {
if (GestionMode.isModeSepare()) previousPage(); if (GestionMode.isModeSepare()) previousPage();
else GestionPdf.previousPages(); else GestionFenetre.previousPages();
} }
public void resize() { public void resize() {
@@ -167,44 +168,44 @@ public class PdfPanel extends JPanel {
*/ */
public boolean chargerPdf(File pdfFile) { public boolean chargerPdf(File pdfFile) {
try { try {
setPdfLoader(new PdfLoader(pdfFile)); setPdfLoader(new DocumentPdf(pdfFile));
setPage(0); setPage(0);
return true;
} catch (IOException e) { } catch (IOException e) {
JOptionPane.showMessageDialog(new JFrame(),"Une erreur s'est produite dans le chargement de votre document, il est peut-être corrompu. "); return false;
} }
return true;
} }
/** /**
* @param pdfLoader * @param pdfLoader
*/ */
public void setPdfLoader(PdfLoader pdfLoader) { public void setPdfLoader(DocumentPdf pdfLoader) {
this.pdfLoader = pdfLoader; this.pdfLoader = pdfLoader;
} }
/** /**
* TODO * Décharge le document courrant si il y en a un
*/ */
public void dechargerPdf() { public void dechargerPdf() {
if (pdfLoader == null) return; if (isCharge()) {
/* Ferme le loader et l'efface */
pdfLoader.close();
pdfLoader = null;
/* Ferme le loader et l'efface */ /* Efface l'image de la page */
pdfLoader.close(); page.setIcon(null);
pdfLoader = null; currentPage = 0;
/* Efface l'image de la page */ /* Interface Vide */
page.setIcon(null); indexPageInput.setText("");
currentPage = 0; maxPageLabel.setText("/ -");
/* Interface Vide */ /* Efface les données relatives au zoom */
indexPageInput.setText(""); scaleSizing = 0.0f;
maxPageLabel.setText("/ -"); scaleZoom = 1.0f;
/* Efface les données relatives au zoom */ validate();
scaleSizing = 0.0f; }
scaleZoom = 1.0f;
validate();
} }
/** /**
@@ -247,15 +248,24 @@ public class PdfPanel extends JPanel {
* @param index Le numéro de la page où l'on veut se rendre * @param index Le numéro de la page où l'on veut se rendre
*/ */
private void setPage(int index) { private void setPage(int index) {
if (!isPageValide(index)) return; if (isPageValide(index)) {
processing = true; processing = true;
try { try {
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing))); page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing)));
currentPage = index; currentPage = index;
indexPageInput.setText(Integer.toString(currentPage + 1)); indexPageInput.setText(Integer.toString(currentPage + 1));
maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages())); maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages()));
} catch (IOException ignored) {} } catch (IOException ignored) {}
processing = false; processing = false;
}
}
/**
* Prédicat qui vérifie si un PDF est chargé ou non
* @return true si un PDF est chargé, false sinon
*/
public boolean isCharge() {
return pdfLoader != null;
} }
} }
@@ -6,7 +6,7 @@
package lecteur_pdf.raccourcisClavier; package lecteur_pdf.raccourcisClavier;
import lecteur_pdf.GestionPdf; import lecteur_pdf.GestionFenetre;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
@@ -27,10 +27,10 @@ import java.util.Map;
*/ */
public class RaccourcisClavier extends JFrame { public class RaccourcisClavier extends JFrame {
public static boolean saisieBloquee;
public static final String FICHIER_SAUVEGARDE = "raccourcis.save"; public static final String FICHIER_SAUVEGARDE = "raccourcis.save";
public static boolean saisieBloquee;
/** /**
* Liste des menus items, se remplis a la création de chaque MenuItem de l'application * Liste des menus items, se remplis a la création de chaque MenuItem de l'application
*/ */
@@ -82,7 +82,7 @@ public class RaccourcisClavier extends JFrame {
public RaccourcisClavier() { public RaccourcisClavier() {
super("Modification des raccourcis claviers"); super("Modification des raccourcis claviers");
saisieBloquee = false; saisieBloquee = false;
setIconImage(GestionPdf.ICONE); setIconImage(GestionFenetre.ICONE);
/* Charge le fichier et affecte les raccourcis aux MenuItems */ /* Charge le fichier et affecte les raccourcis aux MenuItems */
chargerRaccourcis(); chargerRaccourcis();