Skip to content

Commit

Permalink
Merge pull request projet-gl2#20 from projet-gl2/Interface
Browse files Browse the repository at this point in the history
Interface pull request, test unitaire et fin de l'interface des menus
  • Loading branch information
enimaloc authored Apr 2, 2024
2 parents 4ddbc25 + 606c2a6 commit 639a8af
Show file tree
Hide file tree
Showing 13 changed files with 834 additions and 3 deletions.
7 changes: 7 additions & 0 deletions src/main/java/fr/hashimiste/core/gui/JFrameTemplate.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import fr.hashimiste.impl.gui.dev.DebugFrame;
import fr.hashimiste.impl.gui.theme.DebugTheme;
import fr.hashimiste.impl.gui.theme.DefaultTheme;
import fr.hashimiste.impl.gui.theme.CandyTheme;
import fr.hashimiste.impl.gui.theme.DarkTheme;


import javax.swing.*;
import java.awt.*;
Expand Down Expand Up @@ -182,6 +185,10 @@ protected void rechargerTheme() {
this.theme = DefaultTheme.INSTANCE;
if (properties.getProperty("theme").equals("debug")) {
this.theme = DebugTheme.INSTANCE;
}else if(properties.getProperty("theme").equals("candy")){
this.theme = CandyTheme.INSTANCE;
}else if(properties.getProperty("theme").equals("dark")){
this.theme = DarkTheme.INSTANCE;
}
appliquerTheme(composantStylise.toArray(new JComponent[0]));
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/fr/hashimiste/impl/gui/menu/Parametre.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class Parametre extends JFrameTemplateProfil {

private final JButton butMenu = creerBoutton("Menu", fenetreParente);
private final JLabel labTheme = new JLabel("Thème : ");
private final JComboBox<String> themes = new JComboBox<>(new String[]{"default", "debug"});
private final JComboBox<String> themes = new JComboBox<>(new String[]{"default", "debug", "candy", "dark"});
private final JButton butSave = creerBoutton("Sauvegarder", this::sauvegarder);

/**
Expand Down
89 changes: 89 additions & 0 deletions src/main/java/fr/hashimiste/impl/gui/theme/CandyTheme.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package fr.hashimiste.impl.gui.theme;

import fr.hashimiste.core.gui.Theme;

import java.awt.*;

/**
* La classe DefaultTheme implémente l'interface Theme.
* Elle définit un thème par défaut avec des couleurs spécifiques pour les différents éléments de l'interface utilisateur.
*/
public class CandyTheme implements Theme {
/**
* L'instance unique de la classe DefaultTheme.
*/
public static final Theme INSTANCE = new CandyTheme();

/**
* La couleur des boutons dans le thème par défaut.
*/
private static final Color BOUTON = new Color(255, 10, 84);

/**
* La couleur du texte des boutons dans le thème par défaut.
*/
private static final Color TEXTE_BOUTON;

static {
String osName = System.getProperty("os.name").toLowerCase();
if (osName.contains("mac")) {
// Mac
TEXTE_BOUTON = Color.BLACK;
} else {
// Autres systèmes (Linux, etc.)
TEXTE_BOUTON = new Color(251, 250, 242); // Couleur par défaut
}
}

/**
* La couleur des boutons désactivés dans le thème par défaut.
*/
private static final Color BOUTON_DESACTIVE = new Color(255, 92, 138);

/**
* La couleur de fond dans le thème par défaut.
*/
private static final Color FOND = new Color(255, 153, 172);

/**
* La couleur transparente dans le thème par défaut.
*/
private static final Color TRANSPARENT = new Color(0, 0, 0, 0);

/**
* Le constructeur privé de la classe DefaultTheme.
* Il est privé pour empêcher l'instanciation directe de cette classe.
*/
private CandyTheme() {
}

@Override
public Color getButtonColor() {
return BOUTON;
}

@Override
public Color getButtonTextColor() {
return TEXTE_BOUTON;
}

@Override
public Color getDisabledButtonColor() {
return BOUTON_DESACTIVE;
}

@Override
public Color getBackgroundColor() {
return FOND;
}

@Override
public Color getTransparentColor() {
return TRANSPARENT;
}

@Override
public Color getTextColor() {
return Color.BLACK;
}
}
89 changes: 89 additions & 0 deletions src/main/java/fr/hashimiste/impl/gui/theme/DarkTheme.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package fr.hashimiste.impl.gui.theme;

import fr.hashimiste.core.gui.Theme;

import java.awt.*;

/**
* La classe DefaultTheme implémente l'interface Theme.
* Elle définit un thème par défaut avec des couleurs spécifiques pour les différents éléments de l'interface utilisateur.
*/
public class DarkTheme implements Theme {
/**
* L'instance unique de la classe DefaultTheme.
*/
public static final Theme INSTANCE = new DarkTheme();

/**
* La couleur des boutons dans le thème par défaut.
*/
private static final Color BOUTON = new Color(58, 1, 92);

/**
* La couleur du texte des boutons dans le thème par défaut.
*/
private static final Color TEXTE_BOUTON;

static {
String osName = System.getProperty("os.name").toLowerCase();
if (osName.contains("mac")) {
// Mac
TEXTE_BOUTON = Color.BLACK;
} else {
// Autres systèmes (Linux, etc.)
TEXTE_BOUTON = new Color(251, 250, 242); // Couleur par défaut
}
}

/**
* La couleur des boutons désactivés dans le thème par défaut.
*/
private static final Color BOUTON_DESACTIVE = new Color(79, 1, 71);

/**
* La couleur de fond dans le thème par défaut.
*/
private static final Color FOND = new Color(110, 30, 82);

/**
* La couleur transparente dans le thème par défaut.
*/
private static final Color TRANSPARENT = new Color(0, 0, 0, 0);

/**
* Le constructeur privé de la classe DefaultTheme.
* Il est privé pour empêcher l'instanciation directe de cette classe.
*/
private DarkTheme() {
}

@Override
public Color getButtonColor() {
return BOUTON;
}

@Override
public Color getButtonTextColor() {
return TEXTE_BOUTON;
}

@Override
public Color getDisabledButtonColor() {
return BOUTON_DESACTIVE;
}

@Override
public Color getBackgroundColor() {
return FOND;
}

@Override
public Color getTransparentColor() {
return TRANSPARENT;
}

@Override
public Color getTextColor() {
return Color.WHITE;
}
}
13 changes: 12 additions & 1 deletion src/main/java/fr/hashimiste/impl/gui/theme/DebugTheme.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,18 @@ public class DebugTheme implements Theme {
/**
* La couleur du texte des boutons dans le thème de débogage.
*/
private static final Color TEXTE_BOUTON = new Color(251, 250, 242);
private static final Color TEXTE_BOUTON;

static {
String osName = System.getProperty("os.name").toLowerCase();
if (osName.contains("mac")) {
// Mac
TEXTE_BOUTON = Color.BLACK; // Pour Mac
} else {
// Autres systèmes (Linux, etc.)
TEXTE_BOUTON = new Color(251, 250, 242); // Couleur par défaut
}
}

/**
* La couleur des boutons désactivés dans le thème de débogage.
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/fr/hashimiste/impl/gui/theme/DefaultTheme.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,20 @@ public class DefaultTheme implements Theme {

/**
* La couleur du texte des boutons dans le thème par défaut.
* Si windows, alors 251, 250, 242, sur mac, 0, 0, 0
*/
private static final Color TEXTE_BOUTON = new Color(251, 250, 242);
private static final Color TEXTE_BOUTON;

static {
String osName = System.getProperty("os.name").toLowerCase();
if (osName.contains("mac")) {
// Mac
TEXTE_BOUTON = Color.BLACK;
} else {
// Autres systèmes (Linux, etc.)
TEXTE_BOUTON = new Color(251, 250, 242); // Couleur par défaut
}
}

/**
* La couleur des boutons désactivés dans le thème par défaut.
Expand Down
68 changes: 68 additions & 0 deletions src/test/java/fr/hashimiste/impl/gui/menu/AventureTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package fr.hashimiste.impl.gui.menu;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.awt.*;
import java.io.IOException;
import java.util.*;

class AventureTest extends TestMenu{
private Aventure aventure;

/**
* Renvoie le conteneur à tester
* @return le conteneur à tester
*/
@Override
protected Container getTestContainer() {
return aventure;
}

/**
* Teste l'initialisation du menu
* @throws IOException si une erreur d'entrée/sortie survient
*/
@BeforeEach
void testMenuInitialisation() throws IOException {
aventure = (Aventure) testMenuInitialisations(aventure, "Aventure");

System.out.println("L'initialisation du menu réussi");
}

/**
* Teste le menu Paramètre
*/
@Test
void testMenuParametre(){
testerMenu(aventure, "Hashimiste", new Dimension(800, 600));

testThemeMenu(aventure, "default");
testThemeMenu(aventure, "candy");

System.out.println("Le test du changement de thème réussi");
}

/**
* Teste tous les boutons du menu
*/
@Test
void testTousLesBoutons() {
// Création d'une carte pour mapper le nom du bouton à son état attendu (true pour actif, false pour inactif)
Map<String, Boolean> boutonsEtEtats = new HashMap<>();
boutonsEtEtats.put("Menu", true);
boutonsEtEtats.put("Niveau 1", false);
boutonsEtEtats.put("Niveau 2", false);
boutonsEtEtats.put("Niveau 3", false);
boutonsEtEtats.put("Niveau 4", false);
boutonsEtEtats.put("Niveau 5", false);
boutonsEtEtats.put("Niveau 6", false);
boutonsEtEtats.put("Niveau 7", false);
boutonsEtEtats.put("Niveau 8", false);
boutonsEtEtats.put("Niveau 9", false);
boutonsEtEtats.put("Niveau 10", false);

// Itération sur chaque entrée de la carte pour vérifier chaque bouton
boutonsEtEtats.forEach(this::verifierEtatBouton);
}
}
Loading

0 comments on commit 639a8af

Please sign in to comment.