SAE21_2023/src/PlayMenuView.java

72 lines
2.6 KiB
Java

import javax.swing.*;
import java.awt.*;
public class PlayMenuView extends JPanel {
// View components
private final Dimension BUTTON_SIZE = new Dimension(300, 60);
private final Color BACKGROUND_COLOR = new Color(54, 91, 109);
private final Color TITLE_TEXT_COLOR = Color.WHITE;
private final Font TITLE_FONT = new Font("Copperplate", Font.BOLD, 40);
private final Font BUTTON_FONT = new Font("Copperplate", Font.BOLD, 24);
private final String[] BUTTON_TEXTS = {"Générer une grille", "Charger une grille"};
private Title titleLabel;
private Button[] playModeButtons;
private Button returnButton;
private JPanel buttonPanel; // Declare buttonPanel here
// Constructor to initialize components
public PlayMenuView(Window window) {
createComponents(window);
addComponentsToWindow(window);
}
// Method to create all components
private void createComponents(Window window) {
// Title
titleLabel = new Title("Choix du mode de jeu", TITLE_FONT, TITLE_TEXT_COLOR);
// Button Panel
GridLayout gestionnaireButtonPanel = new GridLayout(BUTTON_TEXTS.length, 1, 0, 10);
buttonPanel = new JPanel(gestionnaireButtonPanel); // Initialize buttonPanel here
buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
buttonPanel.setBackground(BACKGROUND_COLOR);
// Buttons
playModeButtons = new Button[BUTTON_TEXTS.length];
for (int i = 0; i < BUTTON_TEXTS.length; i++) {
Button button = new Button(BUTTON_TEXTS[i], BUTTON_SIZE, BUTTON_FONT, BACKGROUND_COLOR);
playModeButtons[i] = button;
button.addActionListener(new PlayButtonClickListener(window));
buttonPanel.add(button);
}
// Return Button
returnButton = new Button("Retour au menu principal", BUTTON_SIZE, BUTTON_FONT, BACKGROUND_COLOR);
returnButton.addActionListener(new PlayButtonClickListener(window));
}
// Method to add components to the window
private void addComponentsToWindow(Window window) {
// Layout
setLayout(new BorderLayout());
setBackground(BACKGROUND_COLOR);
// Adding components to the panel
add(titleLabel, BorderLayout.NORTH);
add(buttonPanel, BorderLayout.CENTER);
add(returnButton, BorderLayout.SOUTH);
// Add panel to the window
window.add(this);
}
// Method to remove all components from the window
public void removeAllComponents(Window window) {
window.remove(this);
window.revalidate();
window.repaint();
}
}