From 78a922c5d794a6a8bc8578d7356653912cc56ee1 Mon Sep 17 00:00:00 2001 From: Argawen Date: Fri, 26 Mar 2021 15:03:31 +0100 Subject: [PATCH] ajout du projet --- .classpath | 28 +++ .gitignore | 1 + .project | 23 ++ .settings/org.eclipse.core.resources.prefs | 3 + .settings/org.eclipse.jdt.core.prefs | 8 + src/main/java/edu/mermet/tp8/Application.java | 197 +++++++++++++++--- .../mermet/tp8/fenetres/AbstractFenetre.java | 26 +++ .../mermet/tp8/fenetres/FenetreBoutons.java | 3 +- .../tp8/fenetres/FenetreConversion.java | 96 +++++++-- .../tp8/fenetres/FenetreSuggestion.java | 94 +++++++++ .../edu/mermet/tp8/fenetres/FenetreTexte.java | 2 +- .../edu/mermet/tp8/fenetres/FrameAide.java | 66 ++++++ .../tp8/fenetres/FrameConfiguration.java | 119 +++++++++++ .../java/utilisateur/InfoUtilisateur.java | 82 ++++++++ src/main/ressources/HowTo/textes.properties | 4 + src/main/ressources/HowTo/titres.properties | 4 + src/main/ressources/images/interrogation.png | Bin 0 -> 701 bytes .../suggestion/suggestions.properties | 10 + 18 files changed, 717 insertions(+), 49 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 src/main/java/edu/mermet/tp8/fenetres/AbstractFenetre.java create mode 100644 src/main/java/edu/mermet/tp8/fenetres/FenetreSuggestion.java create mode 100644 src/main/java/edu/mermet/tp8/fenetres/FrameAide.java create mode 100644 src/main/java/edu/mermet/tp8/fenetres/FrameConfiguration.java create mode 100644 src/main/java/utilisateur/InfoUtilisateur.java create mode 100644 src/main/ressources/HowTo/textes.properties create mode 100644 src/main/ressources/HowTo/titres.properties create mode 100644 src/main/ressources/images/interrogation.png create mode 100644 src/main/ressources/suggestion/suggestions.properties diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..bc443b6 --- /dev/null +++ b/.classpath @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index 2f7896d..ffff5ff 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target/ +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..a3caeb5 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + tp8ihm + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..e9441bb --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..2f5cc74 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/src/main/java/edu/mermet/tp8/Application.java b/src/main/java/edu/mermet/tp8/Application.java index 847fa3d..a54bbd8 100644 --- a/src/main/java/edu/mermet/tp8/Application.java +++ b/src/main/java/edu/mermet/tp8/Application.java @@ -1,31 +1,25 @@ package edu.mermet.tp8; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.InputEvent; -import java.awt.event.KeyEvent; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JDesktopPane; -import javax.swing.JFrame; -import javax.swing.JInternalFrame; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.KeyStroke; -import javax.swing.SwingUtilities; - -import edu.mermet.tp8.fenetres.FenetreBoutons; -import edu.mermet.tp8.fenetres.FenetreConversion; -import edu.mermet.tp8.fenetres.FenetreDiaporama; -import edu.mermet.tp8.fenetres.FenetreTexte; +import java.awt.event.*; +import java.io.*; +import java.nio.file.*; +import java.util.*; +import javax.swing.*; + +import edu.mermet.tp8.fenetres.*; +import utilisateur.InfoUtilisateur; /** * * @author brunomermet */ public class Application extends JFrame { + private static final String[] NOM_SUGGESTIONS = new String[] {"quitter", "diaporama", "conversion", "texte", "boutons"}; + private static final String[] NOM_BOUTONS = new String[] {"Conversion Celsius/Farenheit", "Saisie de texte", "Diaporama", "Boutons"}; + + private static InfoUtilisateur info; + private JInternalFrame conversion; private JInternalFrame texte; private JInternalFrame diaporama; @@ -34,12 +28,25 @@ public class Application extends JFrame { private Action actionAfficherTexte; private Action actionAfficherDiaporama; private Action actionAfficherBoutons; + private Action actionAfficherCommentFaire; + private Action actionAfficherConfiguration; + private JMenu menuApplication; + private JMenuItem itemConversion; + private JMenuItem itemTexte; + private JMenuItem itemDiaporama; + private JMenuItem itemBoutons; + private JDialog frameAide; + private JDialog frameConfiguration; + public Application() { super("multi-fenêtres"); this.setContentPane(new JDesktopPane()); + initialiserInfoUtilisateur(); + // ****** Barre de menu ****** JMenuBar barre = new JMenuBar(); + // ------ menu Fichier ------ JMenu menuFichier = new JMenu("Fichier"); menuFichier.setMnemonic(KeyEvent.VK_F); @@ -47,6 +54,8 @@ public class Application extends JFrame { quitter.addActionListener (new ActionListener() { @Override public void actionPerformed(ActionEvent aev) { + info.augmenterNiveau(1.0); + majApplicationsAffichees(); System.exit(0); } }); @@ -54,27 +63,38 @@ public class Application extends JFrame { menuFichier.add(quitter); barre.add(menuFichier); this.setJMenuBar(barre); + // ------ menu Applications ------ - JMenu menuApplication = new JMenu("Applications"); + this.menuApplication = new JMenu("Applications"); menuApplication.setMnemonic(KeyEvent.VK_A); actionAfficherConversion = new ActionAfficherConversion(); - JMenuItem itemConversion = new JMenuItem(actionAfficherConversion); - menuApplication.add(itemConversion); + this.itemConversion = new JMenuItem(actionAfficherConversion); actionAfficherTexte = new ActionAfficherTexte(); - JMenuItem itemTexte = new JMenuItem(actionAfficherTexte); - menuApplication.add(itemTexte); + this.itemTexte = new JMenuItem(actionAfficherTexte); actionAfficherDiaporama = new ActionAfficherDiaporama(); - JMenuItem itemDiaporama = new JMenuItem(actionAfficherDiaporama); - menuApplication.add(itemDiaporama); + this.itemDiaporama = new JMenuItem(actionAfficherDiaporama); actionAfficherBoutons = new ActionAfficherBoutons(); - JMenuItem itemBoutons = new JMenuItem(actionAfficherBoutons); - menuApplication.add(itemBoutons); + this.itemBoutons = new JMenuItem(actionAfficherBoutons); + majApplicationsAffichees(); barre.add(menuApplication); + + // ------ menu Aide ------ + JMenu menuAide = new JMenu("Aide"); + menuAide.setMnemonic(KeyEvent.VK_A); + actionAfficherCommentFaire = new ActionAfficherCommentFaire(); + JMenuItem itemCommentFaire = new JMenuItem(actionAfficherCommentFaire); + menuAide.add(itemCommentFaire); + + actionAfficherConfiguration = new ActionAfficherConfiguration(); + JMenuItem itemConfiguration = new JMenuItem(actionAfficherConfiguration); + menuAide.add(itemConfiguration); + barre.add(menuAide); + // ****** Fin barre de menu ****** // ****** Création des fenêtres ****** // ------ fenêtre conversion ------ - conversion = new FenetreConversion(actionAfficherConversion); + conversion = new FenetreConversion(this,actionAfficherConversion); this.add(conversion); // ------ fenêtre texte ------ texte = new FenetreTexte(actionAfficherTexte); @@ -85,11 +105,86 @@ public class Application extends JFrame { // ------ fenêtre boutons ------ boutons = new FenetreBoutons(this,actionAfficherBoutons); this.add(boutons); + // ------ frame aide ------ + frameAide = new FrameAide(actionAfficherCommentFaire, this); + // ------ frame configuration ------ + frameConfiguration = new FrameConfiguration(actionAfficherConfiguration, this); + // ****** Fin création fenêtres ****** setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(600,300); this.setLocationRelativeTo(null); setVisible(true); + + // ------ affichage de la suggestion du jour si nécessaire ------ + if (!toutesSuggestionsExclues()) + new FenetreSuggestion(this); + } + + public int getNbSuggestion() + { + double niveau = Double.parseDouble(info.getDonnee("niveau")); + + int nbSuggestions = 1; + + if (niveau >= 2.0) nbSuggestions += 1; + if (niveau >= 4.0) nbSuggestions += 2; + if (niveau >= 8.0) nbSuggestions += 1; + + return nbSuggestions; + } + + public void initialiserInfoUtilisateur() + { + info = InfoUtilisateur.getInstance(); + + for (int i=0; i= niveauRequis) + menuApplication.add(item); + else + menuApplication.remove(item); + } } private class ActionAfficherBoutons extends AbstractAction { @@ -101,8 +196,10 @@ public class Application extends JFrame { @Override public void actionPerformed(ActionEvent ae) { + info.augmenterNiveau(4.0); boutons.setVisible(true); enableBoutons(false); + majApplicationsAffichees(); } } @@ -115,8 +212,10 @@ public class Application extends JFrame { @Override public void actionPerformed(ActionEvent ae) { + info.augmenterNiveau(2.0); diaporama.setVisible(true); enableDiaporama(false); + majApplicationsAffichees(); } } @@ -129,8 +228,10 @@ public class Application extends JFrame { @Override public void actionPerformed(ActionEvent ae) { + info.augmenterNiveau(3.0); texte.setVisible(true); enableTexte(false); + majApplicationsAffichees(); } } @@ -143,8 +244,38 @@ public class Application extends JFrame { @Override public void actionPerformed(ActionEvent ae) { + info.augmenterNiveau(3.0); conversion.setVisible(true); enableConversion(false); + majApplicationsAffichees(); + } + } + + public class ActionAfficherCommentFaire extends AbstractAction { + public ActionAfficherCommentFaire() { + super("Comment faire ?"); + putValue(Action.ACCELERATOR_KEY,KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_DOWN_MASK)); + putValue(Action.MNEMONIC_KEY,KeyEvent.VK_F); + } + + @Override + public void actionPerformed(ActionEvent ae) { + frameAide.setVisible(true); + enableCommentFaire(false); + } + } + + public class ActionAfficherConfiguration extends AbstractAction { + public ActionAfficherConfiguration() { + super("Configuration des menus"); + putValue(Action.ACCELERATOR_KEY,KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_DOWN_MASK)); + putValue(Action.MNEMONIC_KEY,KeyEvent.VK_G); + } + + @Override + public void actionPerformed(ActionEvent ae) { + frameConfiguration.setVisible(true); + enableConfiguration(false); } } @@ -164,6 +295,14 @@ public class Application extends JFrame { actionAfficherBoutons.setEnabled(b); } + public void enableCommentFaire(boolean b) { + actionAfficherCommentFaire.setEnabled(b); + } + + public void enableConfiguration(boolean b) { + actionAfficherConfiguration.setEnabled(b); + } + public Action getActionAfficherConversion() { return actionAfficherConversion; } diff --git a/src/main/java/edu/mermet/tp8/fenetres/AbstractFenetre.java b/src/main/java/edu/mermet/tp8/fenetres/AbstractFenetre.java new file mode 100644 index 0000000..7518a24 --- /dev/null +++ b/src/main/java/edu/mermet/tp8/fenetres/AbstractFenetre.java @@ -0,0 +1,26 @@ +package edu.mermet.tp8.fenetres; + +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * @author brunomermet + */ +public abstract class AbstractFenetre extends JDialog { + private Action action; + public AbstractFenetre(JFrame frame, Action monAction, String nom) { + super(frame, nom, false); + action = monAction; + this.setDefaultCloseOperation(HIDE_ON_CLOSE); + this.addWindowListener(new EcouteurFenetre()); + } + + private class EcouteurFenetre extends WindowAdapter { + @Override + public void windowClosing(WindowEvent we) { + action.setEnabled(true); + } + } +} diff --git a/src/main/java/edu/mermet/tp8/fenetres/FenetreBoutons.java b/src/main/java/edu/mermet/tp8/fenetres/FenetreBoutons.java index 13694b1..16e24b9 100644 --- a/src/main/java/edu/mermet/tp8/fenetres/FenetreBoutons.java +++ b/src/main/java/edu/mermet/tp8/fenetres/FenetreBoutons.java @@ -15,7 +15,8 @@ import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; -import edu.mermet.tp8.Application; + +import edu.mermet.tp8.*; /** * diff --git a/src/main/java/edu/mermet/tp8/fenetres/FenetreConversion.java b/src/main/java/edu/mermet/tp8/fenetres/FenetreConversion.java index 2c134f4..8a04476 100644 --- a/src/main/java/edu/mermet/tp8/fenetres/FenetreConversion.java +++ b/src/main/java/edu/mermet/tp8/fenetres/FenetreConversion.java @@ -1,21 +1,10 @@ package edu.mermet.tp8.fenetres; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.FocusEvent; -import java.awt.event.FocusListener; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JButton; -import javax.swing.JInternalFrame; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.event.InternalFrameAdapter; -import javax.swing.event.InternalFrameEvent; -import edu.mermet.tp8.Application; +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import edu.mermet.tp8.*; /** * @@ -27,27 +16,44 @@ public class FenetreConversion extends AbstractFenetreInterne { private JButton boutonConvertir; private Action actionConvertir; private boolean celsiusAFocus; - public FenetreConversion(Action action) { + private JPopupMenu popupMenuC; + private JPopupMenu popupMenuF; + public FenetreConversion(JFrame frame, Action action) { super(action,"Conversion celsius/Farenheit"); this.setSize(new Dimension(100,50)); this.setLayout(new GridLayout(3,1)); + creerPopupMenu(); JPanel ligneCelsius = new JPanel(); ligneCelsius.setLayout(new FlowLayout(FlowLayout.TRAILING)); JLabel labCelsius = new JLabel("Celsius :"); champCelsius = new JTextField(15); labCelsius.setLabelFor(champCelsius); + JLabel iconeAideCelsius = new JLabel(new ImageIcon(this.getClass().getResource("/images/interrogation.png"))); + iconeAideCelsius.addMouseListener(new MouseAdapterAide(this, "Valeur en degré Celsius")); ligneCelsius.add(labCelsius); ligneCelsius.add(champCelsius); + ligneCelsius.add(iconeAideCelsius); this.add(ligneCelsius); celsiusAFocus = true; champCelsius.addFocusListener(new EcouteurFocus(true)); + champCelsius.setToolTipText("Valeur en degrés Celsius"); + champCelsius.addMouseListener(new MouseAdapterContextuel("Valeur en degrés Celsius", popupMenuC)); + champCelsius.add(popupMenuC); + champCelsius.setComponentPopupMenu(popupMenuC); JPanel ligneFarenheit = new JPanel(); ligneFarenheit.setLayout(new FlowLayout(FlowLayout.TRAILING)); JLabel labFarenheit = new JLabel("Farenheit :"); champFarenheit = new JTextField(15); + champFarenheit.setToolTipText("Valeur en degrés Farenheit"); + champFarenheit.addMouseListener(new MouseAdapterContextuel("Valeur en degrés Farenheit", popupMenuF)); + champFarenheit.add(popupMenuF); + champFarenheit.setComponentPopupMenu(popupMenuF); labFarenheit.setLabelFor(champFarenheit); + JLabel iconeAideFarenheit = new JLabel(new ImageIcon(this.getClass().getResource("/images/interrogation.png"))); + iconeAideFarenheit.addMouseListener(new MouseAdapterAide(this, "Valeur en degré Farenheit")); ligneFarenheit.add(labFarenheit); ligneFarenheit.add(champFarenheit); + ligneFarenheit.add(iconeAideFarenheit); this.add(ligneFarenheit); champFarenheit.addFocusListener(new EcouteurFocus(false)); JPanel ligneValider = new JPanel(); @@ -56,11 +62,32 @@ public class FenetreConversion extends AbstractFenetreInterne { boutonConvertir = new JButton(actionConvertir); ligneValider.add(boutonConvertir); this.add(ligneValider); - + pack(); getRootPane().setDefaultButton(boutonConvertir); } + public void creerPopupMenu() + { + popupMenuC = new JPopupMenu(); + JMenuItem menuAideC = new JMenuItem("Aide"); + menuAideC.setMnemonic('A'); + menuAideC.addMouseListener(new MouseAdapterAide(this, "Valeur en degré Celsius")); + popupMenuC.add(menuAideC); + + popupMenuF = new JPopupMenu(); + JMenuItem menuAideF = new JMenuItem("Aide"); + menuAideF.setMnemonic('A'); + menuAideF.addMouseListener(new MouseAdapterAide(this, "Valeur en degré Farenheit")); + popupMenuF.add(menuAideF); + } + + public void afficherDialog(String aide) + { + JOptionPane d = new JOptionPane(); + d.showMessageDialog(this, aide, "Aide", JOptionPane.INFORMATION_MESSAGE); + } + private class EcouteurFocus implements FocusListener { private boolean aStocker; @@ -112,5 +139,38 @@ public class FenetreConversion extends AbstractFenetreInterne { } } } + + private class MouseAdapterAide extends MouseAdapter { + FenetreConversion fenetre; + String aide; + + public MouseAdapterAide(FenetreConversion fenetre, String aide) { + this.fenetre = fenetre; + this.aide = aide; + } + + @Override + public void mousePressed(MouseEvent me) { + fenetre.afficherDialog(aide); + } + } + + private class MouseAdapterContextuel extends MouseAdapter { + String aide; + JPopupMenu popupMenu; + + public MouseAdapterContextuel(String aide, JPopupMenu popupMenu) + { + this.aide = aide; + this.popupMenu = popupMenu; + } + + @Override + public void mousePressed( MouseEvent event ) { + if ( event.isPopupTrigger() ) { + popupMenu.show( event.getComponent(), event.getX(), event.getY() ); + } + } + } } diff --git a/src/main/java/edu/mermet/tp8/fenetres/FenetreSuggestion.java b/src/main/java/edu/mermet/tp8/fenetres/FenetreSuggestion.java new file mode 100644 index 0000000..a2b5b1a --- /dev/null +++ b/src/main/java/edu/mermet/tp8/fenetres/FenetreSuggestion.java @@ -0,0 +1,94 @@ +package edu.mermet.tp8.fenetres; + +import edu.mermet.tp8.*; +import utilisateur.InfoUtilisateur; + +import java.awt.*; +import java.awt.event.*; +import java.util.*; +import javax.swing.*; + +/** + * + * @author Paul LEVRAGUE + */ +public class FenetreSuggestion extends JDialog { + private static final String[] NOM_SUGGESTIONS = new String[] {"quitter", "diaporama", "conversion", "texte", "boutons"}; + + private static InfoUtilisateur info = InfoUtilisateur.getInstance(); + + private String suggestion; + private JButton btnFermer; + private JButton btnNePlusAfficher; + + public FenetreSuggestion(Application app) { + super(app, "Suggestion du jour", true); + setLayout(new BorderLayout()); + setUndecorated(true); + getRootPane().setBorder(BorderFactory.createLineBorder(Color.BLACK)); + + JEditorPane editorPane = new JEditorPane("text/html", getSuggestionAlea(app.getNbSuggestion())); + + JPanel pnlBtn = new JPanel(new FlowLayout()); + + btnFermer = new JButton("Fermer"); + btnNePlusAfficher = new JButton("Ne plus afficher"); + + btnFermer.addActionListener(new ActionFermer()); + btnNePlusAfficher.addActionListener(new ActionNePlusAfficher()); + + pnlBtn.add(btnFermer); + pnlBtn.add(btnNePlusAfficher); + + add(editorPane); + add(pnlBtn, BorderLayout.SOUTH); + + pack(); + this.setLocationRelativeTo(null); + setVisible(true); + } + + public String getSuggestionAlea(int nbSuggestions) + { + do + { + int alea = (int)(Math.random()*nbSuggestions); + + suggestion = NOM_SUGGESTIONS[alea] + getTypeAlea(); + } while (suggestionExclue(suggestion)); + + ResourceBundle res = ResourceBundle.getBundle("suggestion.suggestions"); + String txtSuggestion = (String)res.getObject(suggestion); + + return txtSuggestion; + } + + //Les suggestions sont soit une suggestion de raccourci soit de description + public char getTypeAlea() + { + int alea = (int)(Math.random()*2); + + return (alea==0) ? 'R' : 'D'; + } + + public boolean suggestionExclue(String txt) + { + return info.getDonnee(txt) != null; + } + + class ActionFermer implements ActionListener { + @Override + public void actionPerformed(ActionEvent ae) { + dispose(); + } + } + + class ActionNePlusAfficher implements ActionListener { + @Override + public void actionPerformed(ActionEvent ae) { + info.sauvegarde(suggestion, "exclue"); + dispose(); + } + } + +} diff --git a/src/main/java/edu/mermet/tp8/fenetres/FenetreTexte.java b/src/main/java/edu/mermet/tp8/fenetres/FenetreTexte.java index 6d19145..b67504e 100644 --- a/src/main/java/edu/mermet/tp8/fenetres/FenetreTexte.java +++ b/src/main/java/edu/mermet/tp8/fenetres/FenetreTexte.java @@ -23,7 +23,7 @@ import javax.swing.JTextArea; import javax.swing.KeyStroke; import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; -import edu.mermet.tp8.Application; +import edu.mermet.tp8.*; /** * diff --git a/src/main/java/edu/mermet/tp8/fenetres/FrameAide.java b/src/main/java/edu/mermet/tp8/fenetres/FrameAide.java new file mode 100644 index 0000000..aef9429 --- /dev/null +++ b/src/main/java/edu/mermet/tp8/fenetres/FrameAide.java @@ -0,0 +1,66 @@ +package edu.mermet.tp8.fenetres; + +import edu.mermet.tp8.*; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.util.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * @author Paul LEVRAGUE + */ +public class FrameAide extends AbstractFenetre +{ + private static final String[] keyTitres = new String[] {"conversion_1", "conversion_2", "gras", "couleur"}; + + private JEditorPane editorPane; + private JList list; + + public FrameAide(Action monAction, JFrame frame) + { + super(frame, monAction, "Comment faire ?"); + setLayout(new BorderLayout()); + + this.list = new JList<>(chargerTitres()); + list.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION); + list.addListSelectionListener(new ListSelectionAide()); + + this.editorPane = new JEditorPane(); + editorPane.setContentType("text/html"); + editorPane.setEditable(false); + + list.setSelectedIndex(0); + JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, list, editorPane); + split.setResizeWeight(0.5); + split.setContinuousLayout(true); + add(split); + + this.setLocationRelativeTo(null); + pack(); + } + + public String[] chargerTitres() + { + ResourceBundle res = ResourceBundle.getBundle("HowTo.titres"); + String[] titres = new String[keyTitres.length]; + + for (int i=0; i InfoUtilisateur.LVL_MAX_UTILISATEUR) + niveauUtilisateur = InfoUtilisateur.LVL_MAX_UTILISATEUR; + + sauvegarde("niveau", "" + Math.round(niveauUtilisateur)); + } + + public static synchronized InfoUtilisateur getInstance() + { + if (INSTANCE == null) + { INSTANCE = new InfoUtilisateur(); + } + return INSTANCE; + } +} \ No newline at end of file diff --git a/src/main/ressources/HowTo/textes.properties b/src/main/ressources/HowTo/textes.properties new file mode 100644 index 0000000..c86ea8b --- /dev/null +++ b/src/main/ressources/HowTo/textes.properties @@ -0,0 +1,4 @@ +conversion_1=Saisir une valeur en °C pour la convertir en °F +conversion_2=Saisir une valeur en °F pour la convertir en °C +gras=Appuyer sur le bouton gras +couleur=Appuyer sur le bouton rouge \ No newline at end of file diff --git a/src/main/ressources/HowTo/titres.properties b/src/main/ressources/HowTo/titres.properties new file mode 100644 index 0000000..1eaca14 --- /dev/null +++ b/src/main/ressources/HowTo/titres.properties @@ -0,0 +1,4 @@ +conversion_1=conversion Celsius --> Farenheit +conversion_2=conversion Farenheit --> Celsius +gras=Texte en gras sur saisie de texte +couleur=Texte en couleur sur saisie de texte diff --git a/src/main/ressources/images/interrogation.png b/src/main/ressources/images/interrogation.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9288687e5d7654a113e391dd21f57db870ee17 GIT binary patch literal 701 zcmV;u0z&Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0#ZptK~y+Tos~UE zTTv9p&$~q%9ty=Ff<}lHq`^g6*G4D74vs>JbgPq4sY9ug2qF%4aw%?pEOB%YH*MCo zNI`5PQiX^lgH$Xr8hy|6Kkwf38Q+W8A6#Kd25(iV&EAz_~~r5X?Z-MzdVL!cSOw3yTKTx`kE=pSnRHg zoK2?>?|8O3(@hH-$6}kDVb8?kZ^^OYc}F8nrQ)(KA!9Kp%#rylt!(CHjDFsu(xoGp zl4z6YD#-c2S7Ixa25vJ5tQiod<5ty>59G3V;gCX|RhNdJNWG$GF`LpKy2yU~NW2V+ z2J>8*UdXkGM00000NkvXXu0mjf<>fX7 literal 0 HcmV?d00001 diff --git a/src/main/ressources/suggestion/suggestions.properties b/src/main/ressources/suggestion/suggestions.properties new file mode 100644 index 0000000..3a40c3c --- /dev/null +++ b/src/main/ressources/suggestion/suggestions.properties @@ -0,0 +1,10 @@ +quitterR=Appuyez sur CTRL et Q en même temps pour fermer l'application. +quitterD=L'option Quitter vous permet de quitter l'application. +diaporamaR=Appuyez sur CTRL et D en même temps pour ouvrir le diaporama. +diaporamaD=L'option Diaporama permet d'afficher un diaporama du Cotentin. +conversionR=Appuyez sur CTRL et C en même temps pour ouvrir le menu des conversions. +conversionD=La conversion Celsius-Farenheit convertit ces deux unités de température dans les deux sens. +texteR=Appuyez sur CTRL et T en même temps pour ouvrir le menu de saisie de texte. +texteD=La saisie de texte permet d'écrire du texte et de modifier sa forme. +boutonsR=Appuyez sur CTRL et B en même temps pour ouvrir le menu des boutons. +boutonsD=La fonctionnalité boutons permet d'ouvrir les autres applications avec des boutons. \ No newline at end of file -- GitLab