SA MARCHE

This commit is contained in:
LucasV-IUT
2021-11-28 20:46:50 +01:00
parent 555c1006cd
commit 0ce4f8ed85
5 changed files with 187 additions and 164 deletions
+52 -11
View File
@@ -8,10 +8,12 @@ package lecteur_pdf.affichage;
import lecteur_pdf.document.PDF; import lecteur_pdf.document.PDF;
import lecteur_pdf.menu.Menu; import lecteur_pdf.menu.Menu;
import javax.swing.*; import javax.swing.*;
import java.io.File;
/** /**
* classe correspondant à l'objet Fenetre * classe correspondant à lobjet Fenêtre
* *
* @author Léo FRANCH * @author Léo FRANCH
* @author Tristan NOGARET * @author Tristan NOGARET
@@ -21,31 +23,70 @@ import javax.swing.*;
*/ */
public class Fenetre extends JFrame { public class Fenetre extends JFrame {
//private JFrame frame;
/**
* TODO
*/
private String titre; private String titre;
private Menu menu = new Menu(this);
private PDF pdf ;
/**
* TODO
*/
private Menu menu;
/**
* TODO
*/
private PDF fichierPDF;
/**
* TODO
*/
public Fenetre() { public Fenetre() {
//création du frame
// Création du menu // Création du menu
Menu menu = new Menu(this); menu = new Menu(this);
// Ajout de la barre de menu au frame // Ajout de la barre de menu au frame
this.setJMenuBar(menu.getMenuBar()); this.setJMenuBar(menu);
this.setSize(300, 300); this.setSize(300, 300);
this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null); this.setLocationRelativeTo(null);
this.setVisible(true); 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();
}
} }
+5 -6
View File
@@ -43,15 +43,14 @@ public class PDF extends JPanel {
* @param fichier Le fichier PDF que lon veut ouvrir * @param fichier Le fichier PDF que lon veut ouvrir
* @throws IllegalArgumentException si le fichier nexiste pas * @throws IllegalArgumentException si le fichier nexiste pas
*/ */
public PDF(File fichier) throws IOException { public PDF(File fichier) {
if (!fichier.exists()) { try {
throw new IllegalArgumentException();
}
this.document = PDDocument.load(fichier); this.document = PDDocument.load(fichier);
this.pages = new Page[document.getNumberOfPages()]; this.pages = new Page[document.getNumberOfPages()];
this.loadPages(); this.loadPages();
} catch (IOException e) {
throw new IllegalArgumentException();
}
} }
/** /**
+44 -51
View File
@@ -7,12 +7,10 @@
package lecteur_pdf.menu; package lecteur_pdf.menu;
import lecteur_pdf.affichage.Fenetre; import lecteur_pdf.affichage.Fenetre;
import lecteur_pdf.document.PDF;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
@@ -24,29 +22,37 @@ import java.util.ArrayList;
* @author Noé VILLENEUVE * @author Noé VILLENEUVE
* @version 1.0 * @version 1.0
*/ */
public class Menu { public class Menu extends JMenuBar {
public static File fichier ;
/** Array list contenant les JMenu */
private ArrayList<JMenu> menuList = new ArrayList<JMenu>();
/** Array list contenant les JMenuItem */
private ArrayList<JMenuItem> itemList = new ArrayList<JMenuItem>();
/** Création de la barre de menu */
JMenuBar menubar = new JMenuBar();
JFrame frame;
/** /**
* Appelle la fonction createMenuFichier * La Fenêtre mère de la barre des menus
*/ */
public Menu(JFrame frame) { private final Fenetre fenetre;
this.frame = frame;
/**
* Liste contenant les différents menus
*/
private final ArrayList<JMenu> menuList = new ArrayList<>();
/**
* Liste contenant les différents sous menus
*/
private final ArrayList<JMenuItem> 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(); createMenuFichier();
// createMenuAfficher();
} }
/** /**
* Fonction pour créer le Menu fichier et ses items * Créé le menu Fichier et ses sous-menus
*/ */
private void createMenuFichier() { private void createMenuFichier() {
@@ -61,66 +67,53 @@ public class Menu {
Ouvrir.addActionListener(this::actionPerformed); Ouvrir.addActionListener(this::actionPerformed);
Fermer.addActionListener(this::actionPerformed); Fermer.addActionListener(this::actionPerformed);
// TODO raccourcis
// Ajouter les éléments au menu "Fichier" // Ajouter les éléments au menu "Fichier"
Fichier.add(Ouvrir); Fichier.add(Ouvrir);
Fichier.add(Fermer); Fichier.add(Fermer);
// Ajouter le menu à la barre de menu // Ajoute le menu "Fichier" dans la liste des menus
menubar.add(Fichier);
// Création du menu "Fichier"
menuList.add(Fichier); 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(Ouvrir);
itemList.add(Fermer); 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 * @param ae un action event
*/ */
public void actionPerformed(ActionEvent ae) { public void actionPerformed(ActionEvent ae) {
String choice = ae.getActionCommand(); 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 */ switch (choice) {
frame.add(scrollPane); case "Ouvrir" -> {
frame.validate(); File fichier = SelectionnerFichier.ouvrirFichier();
} catch (IOException e) { fenetre.chargerPdf(fichier);
e.printStackTrace();
} }
case "Fermer" -> System.exit(
0); // TODO à changer pour que ça quitte vraiment
}else if (choice.equals("Fermer")) {
System.exit(0); // TODO à changer pour que ça quitte vraiment
} }
} }
/** /**
* @return le menubar * @return la liste des JMenuItem
*/
public JMenuBar getMenuBar() {
return menubar;
}
/**
* @return l'ArrayList des JMenuItem
*/ */
public ArrayList<JMenuItem> getMenuItems() { public ArrayList<JMenuItem> getMenuItems() {
return itemList; 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) { public JMenuItem getMenuItem(int index) {
return itemList.get(index); return itemList.get(index);
+67 -68
View File
@@ -1,68 +1,67 @@
/* ///*
* MenuTest.java, 25/11/2021 // * MenuTest.java, 25/11/2021
* IUT Rodez 2021-2022, INFO 2 // * IUT Rodez 2021-2022, INFO 2
* pas de copyright, aucun droits // * pas de copyright, aucun droits
*/ // */
//
package lecteur_pdf.menu; //package lecteur_pdf.menu;
//
import lecteur_pdf.document.Page; //import lecteur_pdf.document.Page;
import org.junit.jupiter.api.Test; //import org.junit.jupiter.api.Test;
//
import javax.swing.*; //import javax.swing.*;
//
import java.sql.SQLOutput; //import java.util.ArrayList;
import java.util.ArrayList; //
//import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*; //
///**
/** // * Tests de la classe {@link Page}
* Tests de la classe {@link Page} // *
* // * @author Léo FRANCH
* @author Léo FRANCH // * @author Tristan NOGARET
* @author Tristan NOGARET // * @author Lucàs VABRE
* @author Lucàs VABRE // * @author Noé VILLENEUVE
* @author Noé VILLENEUVE // */
*/ //class MenuTest {
class MenuTest { //
// @Test
@Test // void getMenuItems() {
void getMenuItems() { //
// final String[] itemAttendu = {"Ouvrir", "Fermer"};
final String[] itemAttendu = {"Ouvrir", "Fermer"}; //
// Menu menuTest = new Menu(this);
Menu menuTest = new Menu(new JFrame()); // ArrayList<JMenuItem> menuItemTest = menuTest.getMenuItems();
ArrayList<JMenuItem> menuItemTest = menuTest.getMenuItems(); //
// for (int i = 0; i < menuItemTest.size(); i++) {
for (int i = 0; i < menuItemTest.size(); i++) { // assertEquals(itemAttendu[i], menuItemTest.get(i).getText());
assertEquals(itemAttendu[i], menuItemTest.get(i).getText()); // }
} // }
} //
// @Test
@Test // void getMenuItem() {
void getMenuItem() { //
// final String[] itemAttendu = {"Ouvrir", "Fermer"};
final String[] itemAttendu = {"Ouvrir", "Fermer"}; //
// Menu menuTest = new Menu(this);
Menu menuTest = new Menu(new JFrame()); //
// for (int i = 0; i < itemAttendu.length; i++) {
for (int i = 0; i < itemAttendu.length; i++) { // assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]);
assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]); // }
} // }
} //
// @Test
@Test // void testMenu() {
void testMenu() { // // Frame de test
// Frame de test // JFrame frame = new JFrame("Menu ouverture");
JFrame frame = new JFrame("Menu ouverture"); //
// // Créer le Menu
// Créer le Menu // Menu menu = new Menu(this);
Menu menu = new Menu(new JFrame()); //
// // Ajouter la barre de menu au frame
// Ajouter la barre de menu au frame // frame.setJMenuBar(menu.getMenuBar());
frame.setJMenuBar(menu.getMenuBar()); // frame.setSize(300,300);
frame.setSize(300,300); // frame.setLayout(null);
frame.setLayout(null); // frame.setVisible(true);
frame.setVisible(true); // }
} //}
}
@@ -1,27 +1,18 @@
package lecteur_pdf.menu; 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 { class SelectionnerFichierTest {
/** // /**
* TODO comment main // * TODO comment main
* // *
* @param args // * @param args
*/ // */
public static void main(String[] args) { // public static void main(String[] args) {
JFrame frame = new JFrame("Test Menu ouverture"); // JFrame frame = new JFrame("Menu ouverture");
Menu menu = new Menu(frame); // Menu menu = new Menu(this);
frame.setJMenuBar(menu.getMenuBar()); // frame.setJMenuBar(menu.getMenuBar());
frame.setSize(300,300); // frame.setSize(300,300);
frame.setLayout(null); // frame.setLayout(null);
frame.setVisible(true); // frame.setVisible(true);
} // }
} }