package com.charpentierbalocchi.dorfjavatik.view;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class FenetreDemarrage extends JFrame {

    public FenetreDemarrage() {
        super("Démarrage du jeu");
        initUI();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 200);
        setLocationRelativeTo(null); // Centre la fenêtre sur l'écran
        setVisible(true);
    }

    private void initUI() {
        // Création des composants
        JPanel panelPrincipal = new JPanel(new BorderLayout());
        JLabel label = new JLabel("Entrez la taille de la grille (1-15):");
        JTextField textField = new JTextField();
        textField.setText("5"); // Définir la valeur par défaut à 5
        JButton button = new JButton("Démarrer la partie");

        // Ajout des composants au panneau principal
        panelPrincipal.add(label, BorderLayout.NORTH);
        panelPrincipal.add(textField, BorderLayout.CENTER);
        panelPrincipal.add(button, BorderLayout.SOUTH);

        // Ajout du panneau principal à la fenêtre
        add(panelPrincipal);

        // Action listener pour le bouton
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    int taille = Integer.parseInt(textField.getText());
                    if (taille == 1) {
                        String gifPath = "src/com/charpentierbalocchi/dorfjavatik/resources/image.gif";

                        ImageIcon gifIcon = new ImageIcon(gifPath);

                        // Vérifier si le GIF est chargé correctement
                        if (gifIcon.getIconWidth() == -1) {
                            JOptionPane.showMessageDialog(null, "Le fichier GIF n'a pas pu être chargé.", "Erreur",
                                    JOptionPane.ERROR_MESSAGE);
                        } else {
                            // Créer un JLabel avec le GIF
                            JLabel gifLabel = new JLabel(gifIcon);
                            JPanel panelMessage = new JPanel(new BorderLayout());
                            panelMessage.add(new JLabel("UNE TUILE!"), BorderLayout.SOUTH);
                            panelMessage.add(gifLabel, BorderLayout.CENTER);

                            // Afficher le message avec le GIF dans un JOptionPane
                            JOptionPane.showMessageDialog(null, panelMessage, "UNE TUILE !",
                                    JOptionPane.WARNING_MESSAGE);
                        }
                    } else if (taille >= 2 && taille <= 4) {
                        int response = JOptionPane.showConfirmDialog(null,
                                "Êtes-vous sûr de vouloir continuer avec cette taille de grille ?",
                                "Confirmation",
                                JOptionPane.YES_NO_OPTION);
                        if (response == JOptionPane.YES_OPTION) {
                            new FenetreJeu(taille);
                            dispose();
                        } else {
                            textField.setText(""); // Réinitialiser le champ de texte pour permettre une nouvelle saisie
                        }
                    } else if (taille > 4 && taille <= 15) {
                        new FenetreJeu(taille);
                        dispose();
                    } else {
                        JOptionPane.showMessageDialog(null,
                                "Veuillez entrer une taille de grille comprise entre 1 et 15.",
                                "Erreur", JOptionPane.ERROR_MESSAGE);
                    }
                } catch (NumberFormatException ex) {
                    JOptionPane.showMessageDialog(null, "Veuillez entrer un nombre valide.", "Erreur",
                            JOptionPane.ERROR_MESSAGE);
                }
            }
        });
    }

    // Méthode principale pour démarrer l'application
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new FenetreDemarrage();
            }
        });
    }
}
