diff --git a/src/lecteur_pdf/affichage/Fenetre.java b/src/lecteur_pdf/affichage/Fenetre.java index 880493e..58f7f3e 100644 --- a/src/lecteur_pdf/affichage/Fenetre.java +++ b/src/lecteur_pdf/affichage/Fenetre.java @@ -8,44 +8,85 @@ package lecteur_pdf.affichage; import lecteur_pdf.document.PDF; import lecteur_pdf.menu.Menu; + import javax.swing.*; +import java.io.File; /** - * classe correspondant à l'objet Fenetre + * classe correspondant à l’objet Fenêtre * * @author Léo FRANCH * @author Tristan NOGARET * @author Lucàs VABRE * @author Noé VILLENEUVE - * @version 1.0 + * @version 1.0 */ public class Fenetre extends JFrame { - //private JFrame frame; - private String titre ; - private Menu menu = new Menu(this); - private PDF pdf ; + /** + * TODO + */ + private String titre; + /** + * TODO + */ + private Menu menu; - public Fenetre(){ - //création du frame + /** + * TODO + */ + private PDF fichierPDF; + + /** + * TODO + */ + public Fenetre() { // Création du menu - Menu menu = new Menu(this); + menu = new Menu(this); // Ajout de la barre de menu au frame - this.setJMenuBar(menu.getMenuBar()); - this.setSize( 300 ,300); - this.setLayout(null); + this.setJMenuBar(menu); + + this.setSize(300, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setVisible(true); - - - } + /** + * TODO + * + * @param fichier + */ + public void chargerPdf(File fichier) { + fichierPDF = new PDF(fichier); + /* Crée l’élément scrollable */ + JScrollPane scrollPane = new JScrollPane(fichierPDF); + scrollPane.setHorizontalScrollBarPolicy( + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + scrollPane.setVerticalScrollBarPolicy( + JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + scrollPane.getVerticalScrollBar().setUnitIncrement(16); + + /* Supprime le précédent PDF */ + this.getContentPane().removeAll(); + + /* Affiche le nouveau PDF */ + this.getContentPane().add(scrollPane); + this.validate(); + } + + /** + * TODO comment main + * + * @param args non utilisé + */ + public static void main(String[] args) { + new Fenetre(); + } } \ No newline at end of file diff --git a/src/lecteur_pdf/document/PDF.java b/src/lecteur_pdf/document/PDF.java index 8a05d6b..14f03e1 100644 --- a/src/lecteur_pdf/document/PDF.java +++ b/src/lecteur_pdf/document/PDF.java @@ -43,15 +43,14 @@ public class PDF extends JPanel { * @param fichier Le fichier PDF que l’on veut ouvrir * @throws IllegalArgumentException si le fichier n’existe pas */ - public PDF(File fichier) throws IOException { - if (!fichier.exists()) { + public PDF(File fichier) { + try { + this.document = PDDocument.load(fichier); + this.pages = new Page[document.getNumberOfPages()]; + this.loadPages(); + } catch (IOException e) { throw new IllegalArgumentException(); } - - this.document = PDDocument.load(fichier); - this.pages = new Page[document.getNumberOfPages()]; - - this.loadPages(); } /** diff --git a/src/lecteur_pdf/menu/Menu.java b/src/lecteur_pdf/menu/Menu.java index 6dd397d..69bbe14 100644 --- a/src/lecteur_pdf/menu/Menu.java +++ b/src/lecteur_pdf/menu/Menu.java @@ -7,12 +7,10 @@ package lecteur_pdf.menu; import lecteur_pdf.affichage.Fenetre; -import lecteur_pdf.document.PDF; import javax.swing.*; import java.awt.event.ActionEvent; import java.io.File; -import java.io.IOException; import java.util.ArrayList; /** @@ -22,31 +20,39 @@ import java.util.ArrayList; * @author Tristan NOGARET * @author Lucàs VABRE * @author Noé VILLENEUVE - * @version 1.0 + * @version 1.0 */ -public class Menu { - public static File fichier ; - /** Array list contenant les JMenu */ - private ArrayList menuList = new ArrayList(); - - /** Array list contenant les JMenuItem */ - private ArrayList itemList = new ArrayList(); - - /** Création de la barre de menu */ - JMenuBar menubar = new JMenuBar(); - - JFrame frame; +public class Menu extends JMenuBar { /** - * Appelle la fonction createMenuFichier + * La Fenêtre mère de la barre des menus */ - public Menu(JFrame frame) { - this.frame = frame; + private final Fenetre fenetre; + + /** + * Liste contenant les différents menus + */ + private final ArrayList menuList = new ArrayList<>(); + + /** + * Liste contenant les différents sous menus + */ + private final ArrayList itemList = new ArrayList<>(); + + /** + * Constructeur du menu + * + * @param fenetre La Fenêtre mère de la barre des menus + */ + public Menu(Fenetre fenetre) { + this.fenetre = fenetre; + createMenuFichier(); + // createMenuAfficher(); } /** - * Fonction pour créer le Menu fichier et ses items + * Créé le menu Fichier et ses sous-menus */ private void createMenuFichier() { @@ -61,66 +67,53 @@ public class Menu { Ouvrir.addActionListener(this::actionPerformed); Fermer.addActionListener(this::actionPerformed); + // TODO raccourcis + // Ajouter les éléments au menu "Fichier" Fichier.add(Ouvrir); Fichier.add(Fermer); - // Ajouter le menu à la barre de menu - menubar.add(Fichier); - - // Création du menu "Fichier" + // Ajoute le menu "Fichier" dans la liste des menus menuList.add(Fichier); - // Créer les éléments du menu et sous menu + // Ajoute Ouvrir et Fermer dans la liste des sous menu itemList.add(Ouvrir); itemList.add(Fermer); + + // Ajoute le menu à la barre de menu + this.add(Fichier); } /** - * Méthode qui gère les actions des JMenuItem + * Méthode qui gère les actions des sous-menus + * * @param ae un action event */ public void actionPerformed(ActionEvent ae) { String choice = ae.getActionCommand(); - if (choice.equals("Ouvrir")) { - try { - PDF doc; - doc = new PDF(SelectionnerFichier.ouvrirFichier()); - /* Creation du JScrollPane contenant notre PDF pour pouvoir scroller */ - JScrollPane scrollPane = new JScrollPane(doc); - scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); - /* Ajout du ScrollPane dans la frame et mise à jour de la frame */ - frame.add(scrollPane); - frame.validate(); - } catch (IOException e) { - e.printStackTrace(); + switch (choice) { + case "Ouvrir" -> { + File fichier = SelectionnerFichier.ouvrirFichier(); + fenetre.chargerPdf(fichier); } - - - }else if (choice.equals("Fermer")) { - System.exit(0); // TODO à changer pour que ça quitte vraiment + case "Fermer" -> System.exit( + 0); // TODO à changer pour que ça quitte vraiment } - } /** - * @return le menubar - */ - public JMenuBar getMenuBar() { - return menubar; - } - - /** - * @return l'ArrayList des JMenuItem + * @return la liste des JMenuItem */ public ArrayList getMenuItems() { return itemList; } /** - * @return l'item de l'ArrayList des JMenuBar à l'index indiqué + * Methode qui renvoie le sous menu demandé + * + * @param index Indice du sous menu + * @return Le sous menu demandé */ public JMenuItem getMenuItem(int index) { return itemList.get(index); diff --git a/tests/lecteur_pdf/menu/MenuTest.java b/tests/lecteur_pdf/menu/MenuTest.java index 4bc414d..145fad4 100644 --- a/tests/lecteur_pdf/menu/MenuTest.java +++ b/tests/lecteur_pdf/menu/MenuTest.java @@ -1,68 +1,67 @@ -/* - * MenuTest.java, 25/11/2021 - * IUT Rodez 2021-2022, INFO 2 - * pas de copyright, aucun droits - */ - -package lecteur_pdf.menu; - -import lecteur_pdf.document.Page; -import org.junit.jupiter.api.Test; - -import javax.swing.*; - -import java.sql.SQLOutput; -import java.util.ArrayList; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * Tests de la classe {@link Page} - * - * @author Léo FRANCH - * @author Tristan NOGARET - * @author Lucàs VABRE - * @author Noé VILLENEUVE - */ -class MenuTest { - - @Test - void getMenuItems() { - - final String[] itemAttendu = {"Ouvrir", "Fermer"}; - - Menu menuTest = new Menu(new JFrame()); - ArrayList menuItemTest = menuTest.getMenuItems(); - - for (int i = 0; i < menuItemTest.size(); i++) { - assertEquals(itemAttendu[i], menuItemTest.get(i).getText()); - } - } - - @Test - void getMenuItem() { - - final String[] itemAttendu = {"Ouvrir", "Fermer"}; - - Menu menuTest = new Menu(new JFrame()); - - for (int i = 0; i < itemAttendu.length; i++) { - assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]); - } - } - - @Test - void testMenu() { - // Frame de test - JFrame frame = new JFrame("Menu ouverture"); - - // Créer le Menu - Menu menu = new Menu(new JFrame()); - - // Ajouter la barre de menu au frame - frame.setJMenuBar(menu.getMenuBar()); - frame.setSize(300,300); - frame.setLayout(null); - frame.setVisible(true); - } -} \ No newline at end of file +///* +// * MenuTest.java, 25/11/2021 +// * IUT Rodez 2021-2022, INFO 2 +// * pas de copyright, aucun droits +// */ +// +//package lecteur_pdf.menu; +// +//import lecteur_pdf.document.Page; +//import org.junit.jupiter.api.Test; +// +//import javax.swing.*; +// +//import java.util.ArrayList; +// +//import static org.junit.jupiter.api.Assertions.*; +// +///** +// * Tests de la classe {@link Page} +// * +// * @author Léo FRANCH +// * @author Tristan NOGARET +// * @author Lucàs VABRE +// * @author Noé VILLENEUVE +// */ +//class MenuTest { +// +// @Test +// void getMenuItems() { +// +// final String[] itemAttendu = {"Ouvrir", "Fermer"}; +// +// Menu menuTest = new Menu(this); +// ArrayList menuItemTest = menuTest.getMenuItems(); +// +// for (int i = 0; i < menuItemTest.size(); i++) { +// assertEquals(itemAttendu[i], menuItemTest.get(i).getText()); +// } +// } +// +// @Test +// void getMenuItem() { +// +// final String[] itemAttendu = {"Ouvrir", "Fermer"}; +// +// Menu menuTest = new Menu(this); +// +// for (int i = 0; i < itemAttendu.length; i++) { +// assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]); +// } +// } +// +// @Test +// void testMenu() { +// // Frame de test +// JFrame frame = new JFrame("Menu ouverture"); +// +// // Créer le Menu +// Menu menu = new Menu(this); +// +// // Ajouter la barre de menu au frame +// frame.setJMenuBar(menu.getMenuBar()); +// frame.setSize(300,300); +// frame.setLayout(null); +// frame.setVisible(true); +// } +//} \ No newline at end of file diff --git a/tests/lecteur_pdf/menu/SelectionnerFichierTest.java b/tests/lecteur_pdf/menu/SelectionnerFichierTest.java index d5b1f55..cfdf1e8 100644 --- a/tests/lecteur_pdf/menu/SelectionnerFichierTest.java +++ b/tests/lecteur_pdf/menu/SelectionnerFichierTest.java @@ -1,27 +1,18 @@ package lecteur_pdf.menu; -import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - -import java.io.File; - -import lecteur_pdf.menu.Menu; - -import javax.swing.*; - class SelectionnerFichierTest { - /** - * TODO comment main - * - * @param args - */ - public static void main(String[] args) { - JFrame frame = new JFrame("Test Menu ouverture"); - Menu menu = new Menu(frame); - frame.setJMenuBar(menu.getMenuBar()); - frame.setSize(300,300); - frame.setLayout(null); - frame.setVisible(true); - } +// /** +// * TODO comment main +// * +// * @param args +// */ +// public static void main(String[] args) { +// JFrame frame = new JFrame("Menu ouverture"); +// Menu menu = new Menu(this); +// frame.setJMenuBar(menu.getMenuBar()); +// frame.setSize(300,300); +// frame.setLayout(null); +// frame.setVisible(true); +// } } \ No newline at end of file