From 530b9aeb49e2707952baefb8cd6c59d5dee06362 Mon Sep 17 00:00:00 2001 From: Clement Date: Thu, 19 Sep 2024 16:51:20 +0200 Subject: [PATCH] =?UTF-8?q?Impl=C3=A9mentation=20activit=C3=A9s,=20main=20?= =?UTF-8?q?menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/beans/Drawing.java | 117 +++++++++------- src/main/java/beans/Question.java | 7 +- .../com/mycompany/groupe_05/ContentFrame.java | 129 ++++++++++++++++++ .../com/mycompany/groupe_05/Groupe_05.java | 1 + .../com/mycompany/groupe_05/TestFrame.java | 2 + src/main/java/gui/MainMenu.java | 77 +++++++++++ src/main/java/gui/QuestionsGui.java | 31 ++--- target/classes/beans/Drawing$DrawArea$1.class | Bin 1167 -> 1167 bytes target/classes/beans/Drawing$DrawArea$2.class | Bin 1530 -> 1686 bytes target/classes/beans/Drawing$DrawArea.class | Bin 2406 -> 2384 bytes target/classes/beans/Drawing.class | Bin 3647 -> 5506 bytes .../com/mycompany/groupe_05/Groupe_05.class | Bin 668 -> 538 bytes .../compile/default-compile/createdFiles.lst | 4 +- .../compile/default-compile/inputFiles.lst | 19 +-- 14 files changed, 298 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/mycompany/groupe_05/ContentFrame.java create mode 100644 src/main/java/gui/MainMenu.java diff --git a/src/main/java/beans/Drawing.java b/src/main/java/beans/Drawing.java index f296347..46ea309 100644 --- a/src/main/java/beans/Drawing.java +++ b/src/main/java/beans/Drawing.java @@ -1,64 +1,66 @@ package beans; - +import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; -public class Drawing extends JFrame { +public class Drawing extends JPanel { private Color currentColor = Color.BLACK; private int brushSize = 10; private boolean eraserMode = false; + private boolean hasDrawn = false; // Indicateur pour savoir si un dessin a été effectué + private DrawArea drawArea; + private JButton saveButton; // Bouton pour enregistrer public Drawing() { - setTitle("Application de Dessin"); + //setTitle("Application de Dessin"); setSize(800, 600); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - // Zone de dessin drawArea = new DrawArea(); drawArea.setBackground(Color.WHITE); - // Bouton pour choisir la couleur + // Créer les boutons et options (sans icônes ni curseur personnalisé) JButton colorButton = new JButton("Couleur"); - colorButton.setFocusable(false); colorButton.addActionListener(e -> chooseColor()); - // Bouton pour effacer tout JButton eraseButton = new JButton("Effacer tout"); - eraseButton.setFocusable(false); - eraseButton.addActionListener(e -> drawArea.clear()); + eraseButton.addActionListener(e -> { + drawArea.clear(); + hasDrawn = false; // Réinitialiser le statut + saveButton.setEnabled(false); // Désactiver le bouton d'enregistrement + }); - // Slider pour choisir la taille du pinceau JSlider sizeSlider = new JSlider(1, 50, brushSize); sizeSlider.setMajorTickSpacing(10); sizeSlider.setPaintTicks(true); sizeSlider.setPaintLabels(true); - sizeSlider.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - brushSize = sizeSlider.getValue(); - } - }); + sizeSlider.addChangeListener(e -> brushSize = sizeSlider.getValue()); - // Bouton pour activer/désactiver la gomme JButton eraserButton = new JButton("Gomme"); - eraserButton.setFocusable(false); eraserButton.addActionListener(e -> eraserMode = !eraserMode); - // Disposition des éléments d'interface dans un JPanel avec un FlowLayout + // Bouton "Enregistrer" désactivé par défaut + saveButton = new JButton("Enregistrer"); + saveButton.setEnabled(false); // Désactivé par défaut + saveButton.addActionListener(e -> saveDrawing()); + + // Disposition des éléments d'interface JPanel controls = new JPanel(); - controls.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10)); // Espacement entre les composants controls.add(colorButton); - controls.add(new JLabel("Taille du pinceau :")); + controls.add(new JLabel("Taille du stylo :")); controls.add(sizeSlider); controls.add(eraserButton); controls.add(eraseButton); + controls.add(saveButton); // Ajout du bouton d'enregistrement // Ajouter les composants à la fenêtre + setLayout(new BorderLayout()); add(controls, BorderLayout.NORTH); add(drawArea, BorderLayout.CENTER); @@ -74,10 +76,33 @@ public class Drawing extends JFrame { } } - // Zone de dessin personnalisée - private class DrawArea extends JPanel { + // Méthode pour enregistrer le dessin dans un fichier + private void saveDrawing() { + if (!hasDrawn) { + JOptionPane.showMessageDialog(this, "Rien n'a été dessiné à enregistrer.", "Erreur", JOptionPane.ERROR_MESSAGE); + return; + } + + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Enregistrer le dessin"); + int userSelection = fileChooser.showSaveDialog(this); + + if (userSelection == JFileChooser.APPROVE_OPTION) { + File fileToSave = fileChooser.getSelectedFile(); + try { + // Crée un fichier PNG + ImageIO.write(drawArea.getImage(), "png", new File(fileToSave.getAbsolutePath() + ".png")); + JOptionPane.showMessageDialog(this, "Dessin enregistré avec succès !"); + } catch (IOException ex) { + ex.printStackTrace(); + JOptionPane.showMessageDialog(this, "Erreur lors de l'enregistrement du fichier.", "Erreur", JOptionPane.ERROR_MESSAGE); + } + } + } - private Image image; + // Zone de dessin + private class DrawArea extends JPanel { + private BufferedImage image; private Graphics2D g2d; private int prevX, prevY; @@ -103,45 +128,26 @@ public class Drawing extends JFrame { int y = e.getY(); if (eraserMode) { - g2d.setColor(Color.WHITE); // Utiliser la gomme + g2d.setColor(Color.WHITE); // Mode gomme } else { - g2d.setColor(currentColor); // Utiliser la couleur sélectionnée + g2d.setColor(currentColor); // Mode pinceau } - // Dessiner un trait continu g2d.setStroke(new BasicStroke(brushSize, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); g2d.drawLine(prevX, prevY, x, y); - repaint(); prevX = x; prevY = y; - } - }); - // Redimensionner l'image lors du redimensionnement de la fenêtre - addComponentListener(new ComponentAdapter() { - @Override - public void componentResized(ComponentEvent e) { - if (g2d != null) { - Image newImage = createImage(getWidth(), getHeight()); - Graphics2D g2dNew = (Graphics2D) newImage.getGraphics(); - g2dNew.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g2dNew.setColor(Color.WHITE); - g2dNew.fillRect(0, 0, getWidth(), getHeight()); - g2dNew.drawImage(image, 0, 0, null); // Copie l'ancien contenu sur la nouvelle image - g2d = g2dNew; - image = newImage; - } else { - initDrawing(getSize().width, getSize().height); - } - repaint(); + hasDrawn = true; // Marque le fait qu'un dessin a été effectué + saveButton.setEnabled(true); // Active le bouton d'enregistrement } }); } - // Méthode pour initialiser l'image de dessin + // Initialisation de l'image de dessin private void initDrawing(int width, int height) { - image = createImage(width, height); + image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); g2d = (Graphics2D) image.getGraphics(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.WHITE); @@ -149,7 +155,7 @@ public class Drawing extends JFrame { g2d.setColor(Color.BLACK); } - // Méthode pour effacer le dessin + // Effacer tout public void clear() { g2d.setPaint(Color.WHITE); g2d.fillRect(0, 0, getSize().width, getSize().height); @@ -157,6 +163,11 @@ public class Drawing extends JFrame { repaint(); } + // Retourne l'image en cours de dessin + public BufferedImage getImage() { + return image; + } + @Override protected void paintComponent(Graphics g) { super.paintComponent(g); diff --git a/src/main/java/beans/Question.java b/src/main/java/beans/Question.java index 0372ce9..77b10dc 100644 --- a/src/main/java/beans/Question.java +++ b/src/main/java/beans/Question.java @@ -5,14 +5,13 @@ package beans; import java.io.Serializable; -import java.util.ArrayList; -import java.util.Random; /** * * @author Clément GROSSELLE */ public class Question implements Serializable { + private int id; private int level; private String statement; @@ -20,14 +19,14 @@ public class Question implements Serializable { public Question() { } - + public Question(Question q) { this.id = q.id; this.level = q.level; this.statement = q.statement; this.answer = q.answer; } - + public void setId(int id) { this.id = id; } diff --git a/src/main/java/com/mycompany/groupe_05/ContentFrame.java b/src/main/java/com/mycompany/groupe_05/ContentFrame.java new file mode 100644 index 0000000..0f07ae9 --- /dev/null +++ b/src/main/java/com/mycompany/groupe_05/ContentFrame.java @@ -0,0 +1,129 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.mycompany.groupe_05; + +import beans.Drawing; +import gui.MainMenu; +import gui.QuestionsGui; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; + +/** + * + * @author stag + */ +public class ContentFrame extends JFrame { + + private static final long serialVersionUID = 1L; + + private final JPanel content; + private final MainMenu menuPanel; + private final Drawing drawingPane; + private final Container mathPane; + private final QuestionsGui questionsPane; + private final JMenuBar menuBar; + + + + public ContentFrame() { + content = new JPanel(new BorderLayout()); + drawingPane = new Drawing(); + questionsPane = new QuestionsGui(); + mathPane = new JPanel(); + menuPanel = new MainMenu(); + menuBar = new JMenuBar(); + + setTitle("Multi Jeux"); + initGui(); + initEvent(); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setResizable(true); + setSize(800, 600); + setLocationRelativeTo(null); + setVisible(true); + + } + + private void initGui() { + initMenuBar(); + initMenuPanel(); + content.add(menuPanel, BorderLayout.WEST); + setJMenuBar(menuBar); + setContentPane(content); + } + + private void initEvent() { + menuPanel.getDrawButton().addActionListener((ActionEvent ae) -> { + switchActivities(drawingPane); + }); + menuPanel.getMathButton().addActionListener((ActionEvent ae) -> { + switchActivities(mathPane); + }); + menuPanel.getQuestButton().addActionListener((ActionEvent ae) -> { + switchActivities(questionsPane); + }); + } + + private void initMenuBar() { + //Définition des différents groupes de menus + JMenu activitiesMenu = new JMenu("Jeux"); + JMenu optionsMenu = new JMenu("Options"); + JMenu otherMenu = new JMenu("Infos"); + + JMenuItem drawI = new JMenuItem("Ardoise magique"); + JMenuItem mathI = new JMenuItem("Test de maths"); + JMenuItem questI = new JMenuItem("Culture générale"); + JMenuItem newQuestI = new JMenuItem("Créer nouvelle question"); + JMenuItem helpI = new JMenuItem("Besoin d'aide?"); + JMenuItem mainI = new JMenuItem("Menu Principal"); + JMenuItem exitI = new JMenuItem("Quitter"); + + activitiesMenu.add(drawI); + activitiesMenu.add(mathI); + activitiesMenu.add(questI); + + optionsMenu.add(mainI); + optionsMenu.add(newQuestI); + optionsMenu.add(exitI); + + otherMenu.add(helpI); + + menuBar.add(activitiesMenu); + menuBar.add(optionsMenu); + menuBar.add(otherMenu); + drawI.addActionListener(ae -> switchActivities(drawingPane)); + mathI.addActionListener(ae -> switchActivities(mathPane)); + questI.addActionListener(ae -> switchActivities(questionsPane)); + mainI.addActionListener((ActionEvent ae) -> { + content.add(menuPanel, BorderLayout.WEST); + }); + exitI.addActionListener(ae -> System.exit(0)); + + } + + private void initMenuPanel() { + } + + private void switchActivities(Container newActivitie) { + content.removeAll(); + //content.add(menuPanel, BorderLayout.WEST); + add(newActivitie, BorderLayout.CENTER); + revalidate(); + repaint(); + + } +} diff --git a/src/main/java/com/mycompany/groupe_05/Groupe_05.java b/src/main/java/com/mycompany/groupe_05/Groupe_05.java index 2a77405..762bfc9 100644 --- a/src/main/java/com/mycompany/groupe_05/Groupe_05.java +++ b/src/main/java/com/mycompany/groupe_05/Groupe_05.java @@ -3,6 +3,7 @@ package com.mycompany.groupe_05; public class Groupe_05 { public static void main(String[] args) { + ContentFrame content = new ContentFrame(); } } diff --git a/src/main/java/com/mycompany/groupe_05/TestFrame.java b/src/main/java/com/mycompany/groupe_05/TestFrame.java index caca067..a03ee5d 100644 --- a/src/main/java/com/mycompany/groupe_05/TestFrame.java +++ b/src/main/java/com/mycompany/groupe_05/TestFrame.java @@ -13,6 +13,8 @@ import javax.swing.JPanel; * @author stag */ public class TestFrame extends JFrame { + + private static final long serialVersionUID = 1L; JPanel qPane = new QuestionsGui(); public TestFrame() { diff --git a/src/main/java/gui/MainMenu.java b/src/main/java/gui/MainMenu.java new file mode 100644 index 0000000..17b787c --- /dev/null +++ b/src/main/java/gui/MainMenu.java @@ -0,0 +1,77 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package gui; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridLayout; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; + +/** + * + * @author stag + */ +public class MainMenu extends JPanel { + + private JLabel menuLabel; + private JPanel topMenuPanel; + private JButton drawButton, mathButton, questButton, hideButton; + + public MainMenu() { + initGui(); + initEvent(); + + } + + private void initEvent() { + } + + private void initGui() { + + topMenuPanel = new JPanel(new BorderLayout()); + menuLabel = new JLabel("Menu Principal"); + menuLabel.setHorizontalAlignment(JLabel.CENTER); + menuLabel.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); + hideButton = new JButton("<"); + hideButton.setPreferredSize(new Dimension(30, 30)); + topMenuPanel.add(menuLabel, BorderLayout.CENTER); + topMenuPanel.add(hideButton, BorderLayout.NORTH); + + drawButton = new JButton("Ardoise Magique"); + mathButton = new JButton("Test de maths"); + questButton = new JButton("Culture générale"); + + setLayout(new GridLayout(0, 1)); + //menuPanel.setBorder(BorderFactory.createLineBorder(Color.black)); + + add(topMenuPanel); + add(drawButton); + add(mathButton); + add(questButton); + + setPreferredSize(new Dimension(200, getHeight())); + } + + public JButton getDrawButton() { + return drawButton; + } + + public JButton getMathButton() { + return mathButton; + } + + public JButton getQuestButton() { + return questButton; + } + + public JButton getHideButton() { + return hideButton; + } + +} diff --git a/src/main/java/gui/QuestionsGui.java b/src/main/java/gui/QuestionsGui.java index 00d62d9..0becab0 100644 --- a/src/main/java/gui/QuestionsGui.java +++ b/src/main/java/gui/QuestionsGui.java @@ -6,6 +6,8 @@ package gui; import beans.Question; import dao.DaoQuestion; +import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; @@ -60,7 +62,7 @@ public class QuestionsGui extends JPanel { // Config labels: // Question - sLabel = new JLabel("" + q.getStatement() + ""); + sLabel = new JLabel(q.getStatement()); sLabel.setFont(labelFont); sLabel.setHorizontalAlignment(JLabel.CENTER); @@ -74,7 +76,7 @@ public class QuestionsGui extends JPanel { aLabel.setFont(helpFont); aLabel.setHorizontalAlignment(JLabel.CENTER); - atf = new JTextField(); + atf = new JTextField(5); // Paramétrage des dfférentes font confirmButton.setFont(buttonFont); @@ -89,23 +91,12 @@ public class QuestionsGui extends JPanel { private void initGui() { // Layout - questionsPane.setLayout(new BoxLayout(questionsPane, BoxLayout.Y_AXIS)); + questionsPane.setLayout(new BorderLayout()); answerPane.setLayout(new BoxLayout(answerPane, BoxLayout.Y_AXIS)); //Size - //questionsPane.setPreferredSize(new Dimension(600, 600)); - statmentPane.setPreferredSize(new Dimension(300, 50)); + statmentPane.setPreferredSize(new Dimension(600, 50)); helpPane.setPreferredSize(new Dimension(200, 50)); - //answerPane.setPreferredSize(new Dimension(50, 20)); - //buttonsPane.setPreferredSize(new Dimension(600, 150)); - - //Border - questionsPane.setBorder(BorderFactory.createEmptyBorder(30, 10, 10, 10)); - //this.setBorder(BorderFactory.createLineBorder(Color.green)); - //questionsPane.setBorder(BorderFactory.createLineBorder(Color.green)); - //statmentPane.setBorder(BorderFactory.createLineBorder(Color.yellow)); - //answerPane.setBorder(BorderFactory.createLineBorder(Color.green)); - //buttonsPane.setBorder(BorderFactory.createLineBorder(Color.blue)); //Ajout des composants //Question @@ -121,10 +112,10 @@ public class QuestionsGui extends JPanel { buttonsPane.add(nextButton); // Panneau principal de l'activité - questionsPane.add(statmentPane); - questionsPane.add(helpPane); - questionsPane.add(answerPane); - questionsPane.add(buttonsPane); + questionsPane.add(statmentPane, BorderLayout.NORTH); + questionsPane.add(helpPane, BorderLayout.CENTER); + questionsPane.add(answerPane, BorderLayout.CENTER); + questionsPane.add(buttonsPane, BorderLayout.SOUTH); // Pas sur pour ça this.add(questionsPane); @@ -164,7 +155,7 @@ public class QuestionsGui extends JPanel { hLabel.setText(""); System.out.println("bouton suivant\n Nombre de questions restantes:" + qlist.size()); if (!qlist.isEmpty()) { - // Si il reste des question dans la liste, on passa a la suivante + // Si il reste des question dans la liste, on passe à la suivante changeQuestion(); } else { // Sinon on réinjecte les questions de la bdd et zérapatis diff --git a/target/classes/beans/Drawing$DrawArea$1.class b/target/classes/beans/Drawing$DrawArea$1.class index 8010ec4c6b24722ecab7f797fdc34d6c9bd03767..2239d545ab2f88aad207e903b8058500bdd437e6 100644 GIT binary patch delta 35 qcmeC@?C0FDoSCt3@(Si!!4d{;hEfJGhB5{PhH?gLhRVriERg`PItaP| delta 35 qcmeC@?C0FDoS89V@(Si!!Dt3*CJz}coWKduT=3xk7P+?@?$Ve=9DM~EQ0||!lFoZKi zFfwozCzho;m6nv`=P@#f`eY@RC06JcmuKds>w7_jt+^PY7^2x3Vt5#08R8fjgt4dr znUh-LnwOZAlbXWFz@ibQ8OF$S$r`&Gb3ZcWDb^S)_4X+hJ?u(EDE-X3=9lx z42%p63^fc%3=9ln3``6R4Ezkq3@HpCz|X)6mS<#0Wk>_*Vqjp@VqjxnVPIfbGWjS= zSH0F22F5K6QY>2;f}qST452LB7$P?^FfcGPfGjX$;ALQ7sAphhXkg%CXkrj&Xl77n zXl1Zw=wOIs=wv8n=whg1=w@hQ=waw$=wq15(9f`#VFK7eS`e$?4qC#H&XB>t$iT`l zpCOaMmcf^afs0`lLl%QA12aQ50|NsG1Jhpybw);E1{Q`K1_lNuhFpd`1_lNe25E+T ehC;B20z(l41A`C)6N5B^0z)wa6WG@b3=9C}9#W$K delta 313 zcmbQn`-_|F)W2Q(7#J9A8PYd$Jz`>EWYE%>XeTkbnfX6s^5kZg=%gS9MuuPp1_oya zCI)5(1_pjD?X3)qS~^=9*tNDZaBpN_U|?bhVPIfjV_;-pU`S>NWnf?sV_*U)We8&k zX8-|y23D{o_5Fr+cCGNdzbF=R4` zGh{KSGvqK>GZZjHG88ftGZZsaF_bVgF_bcNF_eMr(}I`;x38NaiXobTk%5(=jUk4? zmVt?Zi=mMrmcf>RnIVpWfq{d8=`VviBcm__3qw4}2RaN142cX33@i-N3`q9tJr9EegX82DW-o4M1{Zb)R~`m82KUJ~ne{mI7(96xycoPE z^Rp;h>M{88F!(X}Gcs_bW#;4rr6!j!GO&aE0rrS9Lm&@B5Q94-1FMsdqq8>`gC0W& z4?`$J*yL;$RkjEohDe5}$k z&nV$yU}8w+VMt@(VPs%0N-apt%q!ty;9$t$VaR02nk>Pp!=1yB%g&I;!;sHVFxj8= zwGKymY6&=y85tBbH1UVvWDB-n#@5L_Y&wjclXtQi+G;RpGB7YOfdULn7cwM(=^_v< zAi%)Nz{bG9z{C!tJhgT+C`L-l zux@8i-pZh+rL~1YZ5xBu0S3LT3> z5RQTb(*g!AhJ_4@42u}F85T3>Gb{l+1`(3Qi-F@@5^6XDgCs*8Lp=kdGeZLd0|PSyqXYvpLnGK-O$^Oo lx`m;Qfq_AZfrWvIp@pHHfr&wo0Rp5T6hjAtDMJ?vCjcDy%F6%% delta 1128 zcmca0^h}8B)W2Q(7#J9A876MzTExgGG4Y&Oy^1jxgCc_n7XuT6Di4DigE}LFNMcHg zbAE0?eqL%`iBD#6Nornd5hH`DhEG;vS)zVod5L~%S!!O1K87M|%`lKbnmi0z4BCtg z+{s0$i6yC?xrynij0_?go}QWrBfz58&YTQP47xlFdJOuE46K
+FhxEKr>jMy2B zc^FI>Oc@#Y;O+n$GFg&I!^fPFK^QLVUX)mnk(pd<H!J3hQIo&9QkwFw; zI6|2%a;Gq)vNNRdFr+hNOpanv)=y!`;$g^U z$Y5k(%Sg>k&nN+fYc3B%9s>^}1A9?wL1JcJ2^RwgLjey%Aw$vRH7q*ZB@CtP3}rkF z*AG5rk{D(D=v3s%~n+{7qBZKs017_*TGueb~^%(RS7#Ns9VFIQr88X0h6^IrP zU|?lnV_;xlVPIt7W~gRhWT;_aU?^c=Wnf}pU@)8fl1-ytYd3>pq?Yz}2IXxGDjUI? zYZ(|Aq`(?O7&sY18Tc3?7^E4J88jHG7)%*@80r`p7MK}ImtGcfq`KH0~f3utn!#=d1wfV8wL>jytXk!gILVWTH6@nw=g6_ zsLX8)2nR)LZDYtmI7*Cxm4Sg_76TW7#1Fi0}AFtjo-GPE%;FfcPPN-!`pw1Z=&gP{{lcQN!ZFfeF=t?pvzWnf|u aWME*BW&lSvh-6?;gis8947LmtSU3Rzjoa%0 diff --git a/target/classes/beans/Drawing.class b/target/classes/beans/Drawing.class index 8446deb921d5b3066c847610903ca43ed4a29d4f..7f27ae2097e4af77efd5db3137274ea74deccc5c 100644 GIT binary patch literal 5506 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 PenKclc}7J>Wd=zACk?Ro delta 2025 zcmZqD-Y>&->ff$?3=9mm3}+{D$+Ef?CFZ71)LB{2!641ZAnI69kdv95Sdy8ar;w7W z;F4NgoSDbPz{eoV!yv~X&&a@0oLUl+S(1~=$RMiWla*MOsGpOVm#!aNQk0pOZmk&x zQmn|spv0ie$iQBlS`wUDmCDG#s^RGgkyGViP-9SMWRNIMEpbUrODxSPan8vv7Ekpr zNG$?e%*eo^;i(zM&Y;Q2AU4^aM~sV$L4!e?hk=zrXR;2XB%2-&gFb`7WN$_-2_qf` zV+I~Z2G(#7&k$FTI#V77GY0d?y^IP8Oul>hA5B}A56+8F)1~tn4KYpk%2!cH8HPP-=!!K6bLGYTny0+ zaUk2{85z_k`!lO?hk?vUqh8~9A$un3>q(JGZpNC-r0~;d)YjRF%ViCx) zNjwabC$Hp8pDfNIHkpsBQIIDmF*hkCQ6(?6T*ZiyL0)6BHMh)UBW_h@c7_#`Gr6@V z|L3-0TtC@{M~cOmonhl-8y;E4%^>dN5*~5BZCni78FsKU?BrqC#jtzxOdb|S?IrxI z4EsQq?dM@w#Q@?R1n~~>Fsuagj(~Vac^DQmESda@PnwnCBqM|BMQb;MMx@qu2Cc0Ox>{QpbT=^= zZeuXn&0rBJWVM~a#z&iZ8-ty;)-DDo28L}6ZeR(o?F=@)Iv@!htz8U0Pzm2i76Buz zEet~28T|cp1-P~`1nIJDV+aKi5xTn>qU$5Ibhk6aZevIQo077f!N!V3k_BXrB#YKA zhBT-_>5WG&nV2`$SA?!#4wG4fx!+EQw-A?W-u@?cr%=1n8`4UfsrAFVJpLIhFJ_u z3{4Ev8Rjs|WngAl#gNZ1k6{)A3&RnHP=@&o3m8}#m>4F*;+-Lffti7cfq_AaQK(I8 z3j^;Ch7KR?q+<-cTH0F~c(s_fGKhgff|&sn5@HOj3=9lz4BQOv4Ezip3?dAk43Z4q zU`L5TjDb3en}MHUAp;KsBf}yF1_llW#y<>_>{J7*ctfP8J06Ju`}>73NV4P2FOST1_m1jMzAwD zK#{qPp%3JACa}{X)+i!b!@*Dw2|$qh!1f3*f$|*GC`+hOtXkU`CZd}ogJcdX+_|h! z=dv)Y2Dy@94Z~Un1_n@(tHH32VFSY^hG>Q@3=9kk49pB$8JHOY_b}{b*aK$nVK@M1 s9cI|WaEt*ICTt8E415g78JHNN86aRCgksnLr8hz86AY&q&M-&<0EcCxKmY&$ diff --git a/target/classes/com/mycompany/groupe_05/Groupe_05.class b/target/classes/com/mycompany/groupe_05/Groupe_05.class index 78dca1628b6f5d3929f5e096eb60e2bce3725a62..a0eeebeb114dc683503b8f3fdb516b4ab30e50c9 100644 GIT binary patch delta 248 zcmbQkI*Wzt)W2Q(7#J9A86+oinJ}tMw3iTf&d)1J%`0&$O3Y2=Vqj-rW@q4LWKf(e z&!{-@*(@IRWQaT?gPPAodkG$7<&)PlD%Eo_Ffo7t69XdyD+3z?BLfcu1A{&TBLgD? z0|Tqpb_T|c3=9lR47>~sU}**hW(Gb61_mC80tS8t0R{#JP6j~+A*g0Y1}3nfoVyv= tBeyef`XCH|*v7`d!N3kSL`(sql0le3gn@y9gMpDjltBz^xj5KX2>_;~AejIF delta 400 zcmbQmGKZDx)W2Q(7#J9A8B`~7nJ_9&w3nz4Ni8mMD@x2wOGVrG)=Igs8<|AZy8JM{kco_tF7=##v85vm8GV@Xx8H6=F zHGNPGv1VrwWn@rH&d=4)txV3(ElA9()K4$UpBTVC@d4+={#p8rg^UaW=(-pgSW*)6 z3mF*%ebDTl9LcC8EW*IV00K-5j0~&{Yz&MHVw3wA#p=Zw7{ELbDZ#+Nz{9}Ez`(%D zAju%bz`(%CAk82HQp>==kjuctz|6qFAitY|J#sq(XZUUguE^~SJU+V_cq6wn@cZhp zY-14c*~q}az{CJDR*ZoaYy<}b7lQx;H-iKN4}%;7KLf}b1&C1$%CZb{3=9kc4Ezl8 Y3