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.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();
}
}
@@ -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<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() {
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) {}
+1 -1
View File
@@ -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);
+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;
/**
* 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) {
+2 -2
View File
@@ -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));
@@ -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));
}
@@ -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));
+2 -2
View File
@@ -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 */
@@ -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));
}
@@ -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();
}
}
}
@@ -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);
}
@@ -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);
}
}
@@ -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);
}
}
@@ -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");
}
@@ -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();
}
}
@@ -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);
}
}
}
@@ -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");
}
@@ -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();
}
}
@@ -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();
}
}
@@ -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
@@ -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");
}
+6 -21
View File
@@ -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();
}
}
@@ -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
@@ -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
@@ -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
@@ -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) {
}
}
}
+60 -60
View File
@@ -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);
// }
//
//}
+43 -33
View File
@@ -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;
}
}
@@ -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();