diff --git a/src/lecteur_pdf/IhmPdf.java b/src/lecteur_pdf/Fenetre.java similarity index 50% rename from src/lecteur_pdf/IhmPdf.java rename to src/lecteur_pdf/Fenetre.java index 4484c61..f7ec36b 100644 --- a/src/lecteur_pdf/IhmPdf.java +++ b/src/lecteur_pdf/Fenetre.java @@ -14,43 +14,53 @@ import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; 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 Lucas Vabre * @author Noé Villeneuve * @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 MenuBar menuBar; /* Relatif au FullScreen */ + /** + * Booléen qui définit si la fenêtre est en mode plein écran ou non + */ private boolean fullscreen = false; + + /** + * Composant Graphique permettant la mise en place du plein ecran + */ private GraphicsDevice device; /** - * TODO - * @throws IOException + * Crée une nouvelle fenêtre vide */ - public IhmPdf() throws IOException { - super(GestionPdf.TITRE_APPLICATION); + public Fenetre() { + super(TITRE); /* Icone de la fenêtre */ - setIconImage(GestionPdf.ICONE); + setIconImage(GestionFenetre.ICONE); /* Déclaration des attributs */ - menuBar = new MenuBar(this); pdfPanel = new PdfPanel(); /* Hierarchie */ setContentPane(pdfPanel); - setJMenuBar(menuBar); + setJMenuBar(new MenuBar(this)); // Ajoute la barre des menus /* Action à la fermeture de la fenêtre */ this.addWindowListener(new WindowAdapter(){ @@ -72,42 +82,57 @@ public class IhmPdf extends JFrame { } /** - * TODO - * @return + * @return Le Panel contenant le document PDF */ public PdfPanel getPdfPanel() { return pdfPanel; } /** - * TODO + * Si fullscreen est égal à false -> Désactive le mode Plein Ecran + * Sinon Active le mode Plein Ecran */ public void pleinEcran() { - // Switch de disposition - fullscreen = !fullscreen; - if (fullscreen) { // Set fullscreen - GraphicsEnvironment graphics = - GraphicsEnvironment.getLocalGraphicsEnvironment(); + + if (!fullscreen) { // Active le Plein Ecran + GraphicsEnvironment graphics = GraphicsEnvironment.getLocalGraphicsEnvironment(); device = graphics.getDefaultScreenDevice(); device.setFullScreenWindow(this); - } else { // remove fullscreen + } else { // Désactive le Plein Ecran device.setFullScreenWindow(null); setUndecorated(false); 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() { + + /* Décharge le PDF */ 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(); - if (GestionPdf.ihmPdfList.size() == 0) { - System.exit(0); - } + /* Si la liste des fenêtres n'est pas pleine alors on reactive le boutton pour créer une nouvelle fenêtre */ + 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(); } } diff --git a/src/lecteur_pdf/GestionPdf.java b/src/lecteur_pdf/GestionFenetre.java similarity index 54% rename from src/lecteur_pdf/GestionPdf.java rename to src/lecteur_pdf/GestionFenetre.java index 25d481f..10f7ef7 100644 --- a/src/lecteur_pdf/GestionPdf.java +++ b/src/lecteur_pdf/GestionFenetre.java @@ -6,69 +6,60 @@ package lecteur_pdf; -import lecteur_pdf.raccourcisClavier.RaccourcisClavier; - import javax.swing.*; import java.awt.*; -import java.io.IOException; import java.util.ArrayList; import java.util.List; /** - * TODO commentaires + * Gestionnaire des fênetres ouvertes dans l'application * * @author Léo Franch * @author Lucas Vabre * @author Noé Villeneuve * @author Tristan Nogaret */ -public class GestionPdf { - /** - * TODO - */ - public static final String TITRE_APPLICATION = "LPDA"; +public class GestionFenetre { + /** + * Iconne de l'application (affiché en haut a droite des fenêtres) + */ 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 ihmPdfList = new ArrayList<>(); + public static final List 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() { - if (ihmPdfList.size() >= maxPdf) { - JOptionPane.showMessageDialog(new JFrame(),"vous ne pouvez plus ouvrir de nouvelle fenêtre car vous avez atteint le nombre maximum. "); - return; + if (FENETRE_LIST.size() < NB_MAX_PDF) { + Fenetre ihm = new Fenetre(); + 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() { - for (IhmPdf ihm : ihmPdfList) { + for (Fenetre ihm : FENETRE_LIST) { 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() { - for (IhmPdf ihm : ihmPdfList) { + for (Fenetre ihm : FENETRE_LIST) { ihm.getPdfPanel().previousPage(); } } @@ -78,9 +69,7 @@ public class GestionPdf { * @param args non utilisé */ public static void main(String[] args) { - /* Définit le style de la fenêtre sur l'explorateur windows lorsque - * cela est possible - */ + /* Définit le style de la fenêtre sur l'explorateur windows si possible */ try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ignored) {} diff --git a/src/lecteur_pdf/GestionMode.java b/src/lecteur_pdf/GestionMode.java index 1e3deb8..061d889 100644 --- a/src/lecteur_pdf/GestionMode.java +++ b/src/lecteur_pdf/GestionMode.java @@ -104,7 +104,7 @@ public class GestionMode { /** * TODO */ - public static void activerFenetre() { + public static void activerBtnNouvelleFenetre() { for (NouvelleFenetre item : nouvelleFenetreList) { item.setEnabled(true); item.setBackground(Color.BLACK); diff --git a/src/lecteur_pdf/Popup.java b/src/lecteur_pdf/Popup.java new file mode 100644 index 0000000..9a5dcac --- /dev/null +++ b/src/lecteur_pdf/Popup.java @@ -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]); + } + + + +} diff --git a/src/lecteur_pdf/SelectionnerFichier.java b/src/lecteur_pdf/SelectionnerFichier.java index 198561a..be1df7a 100644 --- a/src/lecteur_pdf/SelectionnerFichier.java +++ b/src/lecteur_pdf/SelectionnerFichier.java @@ -12,8 +12,8 @@ import javax.swing.filechooser.FileSystemView; import java.io.File; /** - * Classe qui permet d'ouvrir une fenêtre pour sélectionner le fichier pdf à - * ouvrir + * Classe qui permet d'ouvrir une fenêtre pour sélectionner le fichier pdf à ouvrir + * * @author Léo FRANCH * @author Tristan NOGARET * @author Lucàs VABRE @@ -23,8 +23,8 @@ import java.io.File; public class SelectionnerFichier { /** - * Méthode qui créée une fenêtre pour que l'utilisateur choisisse un - * fichier PDF + * Méthode qui créée une fenêtre pour que l'utilisateur choisisse un fichier PDF + * * @return le fichier choisi par l'utilisateur */ public static File ouvrirFichier(JFrame parent) { diff --git a/src/lecteur_pdf/menuBar/MenuBar.java b/src/lecteur_pdf/menuBar/MenuBar.java index c113699..8aee457 100644 --- a/src/lecteur_pdf/menuBar/MenuBar.java +++ b/src/lecteur_pdf/menuBar/MenuBar.java @@ -6,7 +6,7 @@ package lecteur_pdf.menuBar; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import lecteur_pdf.menuBar.menu.MenuAffichage; import lecteur_pdf.menuBar.menu.MenuFichier; import lecteur_pdf.menuBar.menu.MenuMode; @@ -24,7 +24,7 @@ import javax.swing.*; */ public class MenuBar extends JMenuBar { - public MenuBar(IhmPdf parent) { + public MenuBar(Fenetre parent) { add(new MenuFichier(parent)); add(new MenuAffichage(parent)); add(new MenuMode(parent)); diff --git a/src/lecteur_pdf/menuBar/menu/MenuAffichage.java b/src/lecteur_pdf/menuBar/menu/MenuAffichage.java index dac540b..0995ab7 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuAffichage.java +++ b/src/lecteur_pdf/menuBar/menu/MenuAffichage.java @@ -6,7 +6,7 @@ package lecteur_pdf.menuBar.menu; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import lecteur_pdf.menuBar.menuItems.*; 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 */ - public MenuAffichage(IhmPdf parent) { + public MenuAffichage(Fenetre parent) { super("Affichage"); - /* - Ajoute les différentes options - */ - /* Mode plein écran */ add(new PleinEcran(parent)); addSeparator(); - /* Navigation dans les différentes pages des documents */ + /* Navigation dans les différentes pages */ add(new PagePrecedente(parent)); add(new PageSuivante(parent)); addSeparator(); @@ -46,6 +44,7 @@ public class MenuAffichage extends JMenu { add(new ZoomPlus(parent)); addSeparator(); + /* Mode d'affichage */ add(new PageEntiere(parent)); add(new PleineLargeur(parent)); } diff --git a/src/lecteur_pdf/menuBar/menu/MenuFichier.java b/src/lecteur_pdf/menuBar/menu/MenuFichier.java index 90904a6..49cec2a 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuFichier.java +++ b/src/lecteur_pdf/menuBar/menu/MenuFichier.java @@ -6,7 +6,7 @@ package lecteur_pdf.menuBar.menu; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import lecteur_pdf.menuBar.menuItems.*; 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 */ - public MenuFichier(IhmPdf parent) { + public MenuFichier(Fenetre parent) { super("Fichier"); - /* - Ajoute les différentes options - */ - add(new OuvrirFichier(parent)); add(new FermerFichier(parent)); add(new Quitter(parent)); diff --git a/src/lecteur_pdf/menuBar/menu/MenuMode.java b/src/lecteur_pdf/menuBar/menu/MenuMode.java index 139383b..beaf785 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuMode.java +++ b/src/lecteur_pdf/menuBar/menu/MenuMode.java @@ -7,7 +7,7 @@ package lecteur_pdf.menuBar.menu; import lecteur_pdf.GestionMode; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import lecteur_pdf.menuBar.menuItems.ModeSepare; import lecteur_pdf.menuBar.menuItems.ModeSynchronise; 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 */ - public MenuMode(IhmPdf parent) { + public MenuMode(Fenetre parent) { super("Mode"); /* Crée les différentes options */ diff --git a/src/lecteur_pdf/menuBar/menu/MenuOptions.java b/src/lecteur_pdf/menuBar/menu/MenuOptions.java index 91ef7ca..8f6355c 100644 --- a/src/lecteur_pdf/menuBar/menu/MenuOptions.java +++ b/src/lecteur_pdf/menuBar/menu/MenuOptions.java @@ -6,7 +6,7 @@ package lecteur_pdf.menuBar.menu; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import lecteur_pdf.menuBar.menuItems.*; 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 */ - public MenuOptions(IhmPdf parent) { + public MenuOptions(Fenetre parent) { super("Options"); add(new ModifierTouches(parent)); } diff --git a/src/lecteur_pdf/menuBar/menuItems/FermerFichier.java b/src/lecteur_pdf/menuBar/menuItems/FermerFichier.java index 9573350..2701cae 100644 --- a/src/lecteur_pdf/menuBar/menuItems/FermerFichier.java +++ b/src/lecteur_pdf/menuBar/menuItems/FermerFichier.java @@ -6,13 +6,11 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.GestionPdf; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; +import lecteur_pdf.Popup; import javax.swing.*; -import java.awt.*; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -25,35 +23,21 @@ import java.awt.event.KeyEvent; 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 */ - public FermerFichier(IhmPdf parent) { + public FermerFichier(Fenetre parent) { super(parent, "Fermer"); - - /* TODO Définition du raccourcis.save clavier a modifier */ -// setRaccourcis(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK); } @Override protected void action(ActionEvent evt) { - JDialog jd = new JDialog(); - jd.setLayout(new FlowLayout()); - jd.setBounds(500,300,400,100); - JLabel jlabel = new JLabel("etes vous sûr de vouloir fermer ? "); - JButton oui = new JButton("oui"); - 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); + if (parent.getPdfPanel().isCharge()) { + String TITRE = "Fermeture du document"; + String MESSAGE = "Etes vous sûr de vouloir fermer le document ?"; + + if (Popup.OuiNonPopup(parent, TITRE, MESSAGE) == JOptionPane.YES_OPTION) parent.fermerPdf(); + } } } diff --git a/src/lecteur_pdf/menuBar/menuItems/MenuItem.java b/src/lecteur_pdf/menuBar/menuItems/MenuItem.java index 32c447d..dadb7b5 100644 --- a/src/lecteur_pdf/menuBar/menuItems/MenuItem.java +++ b/src/lecteur_pdf/menuBar/menuItems/MenuItem.java @@ -6,14 +6,14 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import javax.swing.*; 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 Lucas Vabre @@ -23,25 +23,26 @@ import java.awt.event.ActionEvent; 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 name Nom de l'action */ - public MenuItem(IhmPdf parent, String name) { + public MenuItem(Fenetre parent, String name) { super(name); this.parent = parent; addActionListener(this::action); RaccourcisClavier.listeMenuItems.add(this); } + /** + * Action de l'element lors du clic + * @param evt Action de l'utilisateur (clic) + */ protected abstract void action(ActionEvent evt); - - - } diff --git a/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java b/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java index 8c1dc18..4ad329d 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java +++ b/src/lecteur_pdf/menuBar/menuItems/ModeSepare.java @@ -7,7 +7,6 @@ package lecteur_pdf.menuBar.menuItems; import lecteur_pdf.GestionMode; -import lecteur_pdf.IhmPdf; import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import javax.swing.*; @@ -24,15 +23,10 @@ public class ModeSepare extends JRadioButtonMenuItem { /** * TODO - * @param parent Référence de la fenêtre qui possède l'instance de ce MenuItem */ public ModeSepare() { super("Mode Séparé"); - - addActionListener(e -> { - GestionMode.setModeSepare(); - }); - + addActionListener(e -> GestionMode.setModeSepare()); RaccourcisClavier.listeMenuItems.add(this); } } diff --git a/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java b/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java index 0b18119..b2c71c5 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java +++ b/src/lecteur_pdf/menuBar/menuItems/ModeSynchronise.java @@ -7,7 +7,6 @@ package lecteur_pdf.menuBar.menuItems; import lecteur_pdf.GestionMode; -import lecteur_pdf.IhmPdf; import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import javax.swing.*; @@ -22,13 +21,12 @@ import javax.swing.*; */ public class ModeSynchronise extends JRadioButtonMenuItem { + /** + * TODO + */ public ModeSynchronise() { super("Mode Synchronisé"); - - addActionListener(e -> { - GestionMode.setModeSynchronise(); - }); - + addActionListener(e -> GestionMode.setModeSynchronise()); RaccourcisClavier.listeMenuItems.add(this); } } \ No newline at end of file diff --git a/src/lecteur_pdf/menuBar/menuItems/ModifierTouches.java b/src/lecteur_pdf/menuBar/menuItems/ModifierTouches.java index d4dbaf2..ff6f625 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ModifierTouches.java +++ b/src/lecteur_pdf/menuBar/menuItems/ModifierTouches.java @@ -6,7 +6,7 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import lecteur_pdf.raccourcisClavier.RaccourcisClavier; import java.awt.event.ActionEvent; @@ -25,7 +25,7 @@ public class ModifierTouches extends MenuItem { * TODO * @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"); } diff --git a/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java b/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java index 7470135..aafa273 100644 --- a/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java +++ b/src/lecteur_pdf/menuBar/menuItems/NouvelleFenetre.java @@ -7,8 +7,8 @@ package lecteur_pdf.menuBar.menuItems; import lecteur_pdf.GestionMode; -import lecteur_pdf.GestionPdf; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.GestionFenetre; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; @@ -26,16 +26,16 @@ public class NouvelleFenetre extends MenuItem { * TODO * @param parent */ - public NouvelleFenetre(IhmPdf parent) { + public NouvelleFenetre(Fenetre parent) { super(parent, "Nouvelle Fenêtre"); } @Override public void action(ActionEvent evt) { /* Essaye de créer une nouvelle fenêtre */ - GestionPdf.newIhmPdf(); + GestionFenetre.newIhmPdf(); /* 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(); } } \ No newline at end of file diff --git a/src/lecteur_pdf/menuBar/menuItems/OuvrirFichier.java b/src/lecteur_pdf/menuBar/menuItems/OuvrirFichier.java index 10624ec..73c5ef8 100644 --- a/src/lecteur_pdf/menuBar/menuItems/OuvrirFichier.java +++ b/src/lecteur_pdf/menuBar/menuItems/OuvrirFichier.java @@ -6,12 +6,11 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.GestionPdf; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; +import lecteur_pdf.Popup; import lecteur_pdf.SelectionnerFichier; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; import java.io.File; /** @@ -28,7 +27,7 @@ public class OuvrirFichier extends MenuItem { * TODO * */ - public OuvrirFichier(IhmPdf parent) { + public OuvrirFichier(Fenetre parent) { super(parent, "Ouvrir"); // 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 */ parent.getPdfPanel().dechargerPdf(); - parent.setTitle(GestionPdf.TITRE_APPLICATION); + parent.setTitle(Fenetre.TITRE); parent.pack(); if (parent.getPdfPanel().chargerPdf(fichier)) { - parent.setTitle(GestionPdf.TITRE_APPLICATION + " - " + fichier.getName()); + parent.setTitle(Fenetre.TITRE + " - " + fichier.getName()); parent.pack(); } 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); } } } diff --git a/src/lecteur_pdf/menuBar/menuItems/PageEntiere.java b/src/lecteur_pdf/menuBar/menuItems/PageEntiere.java index b500bd4..66f0709 100644 --- a/src/lecteur_pdf/menuBar/menuItems/PageEntiere.java +++ b/src/lecteur_pdf/menuBar/menuItems/PageEntiere.java @@ -1,6 +1,6 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; @@ -9,7 +9,7 @@ public class PageEntiere extends MenuItem { * TODO * @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"); } diff --git a/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java b/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java index 7185521..3c3c6f0 100644 --- a/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java +++ b/src/lecteur_pdf/menuBar/menuItems/PagePrecedente.java @@ -7,11 +7,10 @@ package lecteur_pdf.menuBar.menuItems; import lecteur_pdf.GestionMode; -import lecteur_pdf.GestionPdf; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.GestionFenetre; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -27,13 +26,13 @@ public class PagePrecedente extends MenuItem { * TODO * @param parent */ - public PagePrecedente(IhmPdf parent) { + public PagePrecedente(Fenetre parent) { super(parent, "Page précédente"); } @Override protected void action(ActionEvent evt) { if (GestionMode.isModeSepare()) parent.getPdfPanel().previousPage(); - else GestionPdf.previousPages(); + else GestionFenetre.previousPages(); } } diff --git a/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java b/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java index 4f3460f..e913d55 100644 --- a/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java +++ b/src/lecteur_pdf/menuBar/menuItems/PageSuivante.java @@ -7,11 +7,10 @@ package lecteur_pdf.menuBar.menuItems; import lecteur_pdf.GestionMode; -import lecteur_pdf.GestionPdf; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.GestionFenetre; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -27,13 +26,13 @@ public class PageSuivante extends MenuItem { * TODO * @param parent */ - public PageSuivante(IhmPdf parent) { + public PageSuivante(Fenetre parent) { super(parent, "Page suivante"); } @Override protected void action(ActionEvent evt) { if (GestionMode.isModeSepare()) parent.getPdfPanel().nextPage(); - else GestionPdf.nextPages(); + else GestionFenetre.nextPages(); } } diff --git a/src/lecteur_pdf/menuBar/menuItems/PleinEcran.java b/src/lecteur_pdf/menuBar/menuItems/PleinEcran.java index 419f843..15bf19b 100644 --- a/src/lecteur_pdf/menuBar/menuItems/PleinEcran.java +++ b/src/lecteur_pdf/menuBar/menuItems/PleinEcran.java @@ -6,10 +6,9 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -25,10 +24,8 @@ public class PleinEcran extends MenuItem { * TODO * @param parent */ - public PleinEcran(IhmPdf parent) { + public PleinEcran(Fenetre parent) { super(parent, "Mode Plein Ecran"); - -// setRaccourcis(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK); } @Override diff --git a/src/lecteur_pdf/menuBar/menuItems/PleineLargeur.java b/src/lecteur_pdf/menuBar/menuItems/PleineLargeur.java index 90435bf..0ec48f9 100644 --- a/src/lecteur_pdf/menuBar/menuItems/PleineLargeur.java +++ b/src/lecteur_pdf/menuBar/menuItems/PleineLargeur.java @@ -1,6 +1,6 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; @@ -11,7 +11,7 @@ public class PleineLargeur extends MenuItem{ * TODO * @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"); } diff --git a/src/lecteur_pdf/menuBar/menuItems/Quitter.java b/src/lecteur_pdf/menuBar/menuItems/Quitter.java index b517bed..562d43b 100644 --- a/src/lecteur_pdf/menuBar/menuItems/Quitter.java +++ b/src/lecteur_pdf/menuBar/menuItems/Quitter.java @@ -6,12 +6,11 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; +import lecteur_pdf.Popup; import javax.swing.*; -import java.awt.*; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -27,28 +26,14 @@ public class Quitter extends MenuItem { * TODO * @param parent */ - public Quitter(IhmPdf parent) { + public Quitter(Fenetre parent) { super(parent, "Quitter"); - -// setRaccourcis(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK); } @Override protected void action(ActionEvent evt) { - JDialog jd = new JDialog(); - jd.setLayout(new FlowLayout()); - jd.setBounds(500,300,400,100); - 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); + final String TITRE = "Quitter"; + final String MESSAGE = "Etes-vous sûr de vouloir quitter l'application ?"; + if (Popup.OuiNonPopup(parent, TITRE, MESSAGE) == JOptionPane.YES_OPTION) parent.quitter(); } } diff --git a/src/lecteur_pdf/menuBar/menuItems/ZoomDefaut.java b/src/lecteur_pdf/menuBar/menuItems/ZoomDefaut.java index 9659568..fcab1da 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ZoomDefaut.java +++ b/src/lecteur_pdf/menuBar/menuItems/ZoomDefaut.java @@ -6,10 +6,9 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -25,11 +24,8 @@ public class ZoomDefaut extends MenuItem { * TODO * @param parent */ - public ZoomDefaut(IhmPdf parent) { + public ZoomDefaut(Fenetre parent) { super(parent, "Zoom 100%"); - -// setRaccourcis(KeyEvent.VK_G, KeyEvent.CTRL_DOWN_MASK); - } @Override diff --git a/src/lecteur_pdf/menuBar/menuItems/ZoomMoins.java b/src/lecteur_pdf/menuBar/menuItems/ZoomMoins.java index 2bb964f..4f03485 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ZoomMoins.java +++ b/src/lecteur_pdf/menuBar/menuItems/ZoomMoins.java @@ -6,10 +6,9 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -25,11 +24,8 @@ public class ZoomMoins extends MenuItem { * TODO * @param parent */ - public ZoomMoins(IhmPdf parent) { + public ZoomMoins(Fenetre parent) { super(parent, "Zoom 50%"); - -// setRaccourcis(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK); - } @Override diff --git a/src/lecteur_pdf/menuBar/menuItems/ZoomPlus.java b/src/lecteur_pdf/menuBar/menuItems/ZoomPlus.java index b4f5fac..76db36f 100644 --- a/src/lecteur_pdf/menuBar/menuItems/ZoomPlus.java +++ b/src/lecteur_pdf/menuBar/menuItems/ZoomPlus.java @@ -6,10 +6,9 @@ package lecteur_pdf.menuBar.menuItems; -import lecteur_pdf.IhmPdf; +import lecteur_pdf.Fenetre; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; /** * TODO commentaires @@ -25,11 +24,8 @@ public class ZoomPlus extends MenuItem { * TODO * @param parent */ - public ZoomPlus(IhmPdf parent) { + public ZoomPlus(Fenetre parent) { super(parent, "Zoom 150%"); - -// setRaccourcis(KeyEvent.VK_H, KeyEvent.CTRL_DOWN_MASK); - } @Override diff --git a/src/lecteur_pdf/pdf/PdfLoader.java b/src/lecteur_pdf/pdf/DocumentPdf.java similarity index 88% rename from src/lecteur_pdf/pdf/PdfLoader.java rename to src/lecteur_pdf/pdf/DocumentPdf.java index 998281d..0d0a01b 100644 --- a/src/lecteur_pdf/pdf/PdfLoader.java +++ b/src/lecteur_pdf/pdf/DocumentPdf.java @@ -21,7 +21,7 @@ import java.io.IOException; * @author Noé Villeneuve * @author Tristan Nogaret */ -public class PdfLoader { +public class DocumentPdf { /** * TODO @@ -42,7 +42,7 @@ public class PdfLoader { * @param file * @throws IOException */ - public PdfLoader(File file) throws IOException { + public DocumentPdf(File file) throws IOException { document = PDDocument.load(file); renderer = new PDFRenderer(document); minWidth = -1; @@ -112,16 +112,4 @@ public class PdfLoader { minHeight = -1; } catch (IOException ignored) {} } - - /** - * TODO - * - * @param file - */ - public void load(File file) { - try { - document = PDDocument.load(file); - } catch (IOException ignored) { - } - } } diff --git a/src/lecteur_pdf/pdf/OutilsImage.java b/src/lecteur_pdf/pdf/OutilsImage.java index 5c1edfd..8d0f9b8 100644 --- a/src/lecteur_pdf/pdf/OutilsImage.java +++ b/src/lecteur_pdf/pdf/OutilsImage.java @@ -1,60 +1,60 @@ -package lecteur_pdf.pdf; - -import javax.swing.*; -import java.awt.*; -import java.awt.image.BufferedImage; - -public class OutilsImage { - - /** - * Change la taille d'une image - * @param img - * @param newW - * @param newH - * @return - */ - public static BufferedImage resize(BufferedImage img, int newW, int newH) { - int w = img.getWidth(); - int h = img.getHeight(); - BufferedImage dimg = new BufferedImage(newW, newH, img.getType()); - Graphics2D g = dimg.createGraphics(); - g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, - RenderingHints.VALUE_INTERPOLATION_BILINEAR); - g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null); - g.dispose(); - return dimg; - } - - /** - * - * @param img - * @param newW - * @return - */ - public static BufferedImage resizeWidth(PdfLoader a, Icon img, int newW) { - int w = a.getMinWidth(); - int h = a.getMinHeight(); - - float ratio = (float)newW / (float)w; - - return a.setScale(ratio); - } - - /** - * - * @param img - * @param newH - * @return - */ - public static BufferedImage resizeHeight(BufferedImage img, int newH) { - int w = img.getWidth(); - int h = img.getHeight(); - - int ratio = newH / (1+h); - - int newW = w * ratio; - - return resize(img, newW, newH); - } - -} +//package lecteur_pdf.pdf; +// +//import javax.swing.*; +//import java.awt.*; +//import java.awt.image.BufferedImage; +// +//public class OutilsImage { +// +// /** +// * Change la taille d'une image +// * @param img +// * @param newW +// * @param newH +// * @return +// */ +// public static BufferedImage resize(BufferedImage img, int newW, int newH) { +// int w = img.getWidth(); +// int h = img.getHeight(); +// BufferedImage dimg = new BufferedImage(newW, newH, img.getType()); +// Graphics2D g = dimg.createGraphics(); +// g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, +// RenderingHints.VALUE_INTERPOLATION_BILINEAR); +// g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null); +// g.dispose(); +// return dimg; +// } +// +// /** +// * +// * @param img +// * @param newW +// * @return +// */ +// public static BufferedImage resizeWidth(DocumentPdf a, Icon img, int newW) { +// int w = a.getMinWidth(); +// int h = a.getMinHeight(); +// +// float ratio = (float)newW / (float)w; +// +// return a.setScale(ratio); +// } +// +// /** +// * +// * @param img +// * @param newH +// * @return +// */ +// public static BufferedImage resizeHeight(BufferedImage img, int newH) { +// int w = img.getWidth(); +// int h = img.getHeight(); +// +// int ratio = newH / (1+h); +// +// int newW = w * ratio; +// +// return resize(img, newW, newH); +// } +// +//} diff --git a/src/lecteur_pdf/pdf/PdfPanel.java b/src/lecteur_pdf/pdf/PdfPanel.java index 2967c9e..7ae8dc4 100644 --- a/src/lecteur_pdf/pdf/PdfPanel.java +++ b/src/lecteur_pdf/pdf/PdfPanel.java @@ -7,7 +7,8 @@ package lecteur_pdf.pdf; import lecteur_pdf.GestionMode; -import lecteur_pdf.GestionPdf; +import lecteur_pdf.GestionFenetre; +import lecteur_pdf.Popup; import javax.swing.*; import java.awt.*; @@ -33,7 +34,7 @@ public class PdfPanel extends JPanel { private boolean processing; /* Chargeur de Pdf */ - private PdfLoader pdfLoader; + private DocumentPdf pdfLoader; /* Interface */ private final JTextField indexPageInput; @@ -123,7 +124,7 @@ public class PdfPanel extends JPanel { */ private void btnSuivantAction(ActionEvent evt) { if (GestionMode.isModeSepare()) nextPage(); - else GestionPdf.nextPages(); + else GestionFenetre.nextPages(); } /** @@ -131,7 +132,7 @@ public class PdfPanel extends JPanel { */ private void btnPrecedentAction(ActionEvent evt) { if (GestionMode.isModeSepare()) previousPage(); - else GestionPdf.previousPages(); + else GestionFenetre.previousPages(); } public void resize() { @@ -167,44 +168,44 @@ public class PdfPanel extends JPanel { */ public boolean chargerPdf(File pdfFile) { try { - setPdfLoader(new PdfLoader(pdfFile)); + setPdfLoader(new DocumentPdf(pdfFile)); setPage(0); + return true; } 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 */ - public void setPdfLoader(PdfLoader pdfLoader) { + public void setPdfLoader(DocumentPdf pdfLoader) { this.pdfLoader = pdfLoader; } /** - * TODO + * Décharge le document courrant si il y en a un */ 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 */ - pdfLoader.close(); - pdfLoader = null; + /* Efface l'image de la page */ + page.setIcon(null); + currentPage = 0; - /* Efface l'image de la page */ - page.setIcon(null); - currentPage = 0; + /* Interface Vide */ + indexPageInput.setText(""); + maxPageLabel.setText("/ -"); - /* Interface Vide */ - indexPageInput.setText(""); - maxPageLabel.setText("/ -"); + /* Efface les données relatives au zoom */ + scaleSizing = 0.0f; + scaleZoom = 1.0f; - /* Efface les données relatives au zoom */ - scaleSizing = 0.0f; - scaleZoom = 1.0f; - - validate(); + validate(); + } } /** @@ -247,15 +248,24 @@ public class PdfPanel extends JPanel { * @param index Le numéro de la page où l'on veut se rendre */ private void setPage(int index) { - if (!isPageValide(index)) return; + if (isPageValide(index)) { - processing = true; - try { - page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing))); - currentPage = index; - indexPageInput.setText(Integer.toString(currentPage + 1)); - maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages())); - } catch (IOException ignored) {} - processing = false; + processing = true; + try { + page.setIcon(new ImageIcon(pdfLoader.renderPage(index, scaleZoom + scaleSizing))); + currentPage = index; + indexPageInput.setText(Integer.toString(currentPage + 1)); + maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages())); + } catch (IOException ignored) {} + 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; } } diff --git a/src/lecteur_pdf/raccourcisClavier/RaccourcisClavier.java b/src/lecteur_pdf/raccourcisClavier/RaccourcisClavier.java index 18bec79..e8ea813 100644 --- a/src/lecteur_pdf/raccourcisClavier/RaccourcisClavier.java +++ b/src/lecteur_pdf/raccourcisClavier/RaccourcisClavier.java @@ -6,7 +6,7 @@ package lecteur_pdf.raccourcisClavier; -import lecteur_pdf.GestionPdf; +import lecteur_pdf.GestionFenetre; import javax.swing.*; import java.awt.*; @@ -27,10 +27,10 @@ import java.util.Map; */ public class RaccourcisClavier extends JFrame { - public static boolean saisieBloquee; - 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 */ @@ -82,7 +82,7 @@ public class RaccourcisClavier extends JFrame { public RaccourcisClavier() { super("Modification des raccourcis claviers"); saisieBloquee = false; - setIconImage(GestionPdf.ICONE); + setIconImage(GestionFenetre.ICONE); /* Charge le fichier et affecte les raccourcis aux MenuItems */ chargerRaccourcis();