package org.Views;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import javax.swing.JFrame;

import org.Models.Grille;
import org.Models.Jeu;
/**
 * Fenêtre principale du jeu Tetris.
 * Affiche la grille de jeu et le bandeau de contrôle.
 */
public class VueTetris extends JFrame {
    private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    public static double tailleJFrameX = screenSize.getHeight() / 2;
    public static double tailleJFrameY = screenSize.getHeight() / 2;
    private VueGrille vueGrille;
    private VueBandeauControle vueControle;

    /**
     * Construit la fenêtre principale du jeu Tetris.
     *
     * @param grille le modèle de la grille
     * @param jeu le modèle du jeu
     */
    public VueTetris(Grille grille, Jeu jeu) {
        super("Tetris");

        this.vueGrille = new VueGrille(grille, jeu);
        this.vueControle = new VueBandeauControle(jeu);
        // TetrisBandeauControleur controleur = new
        // TetrisBandeauControleur(vueControle);
        this.vueGrille = new VueGrille(grille, jeu);
        this.vueControle = new VueBandeauControle(jeu);
        // TetrisBandeauControleur controleur = new
        // TetrisBandeauControleur(vueControle);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        add(vueGrille, BorderLayout.CENTER);
        add(vueControle, BorderLayout.EAST);

        setSize((int) tailleJFrameX, (int) tailleJFrameY);
        setLocationRelativeTo(null);

        // listener permettanbt de redimensionner les cases de la grille
        addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                vueGrille.resizeCases();
            }
        });

        // listener permettanbt de redimensionner les cases de la grille
        addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                vueGrille.resizeCases();
            }
        });

        setVisible(true);
        vueGrille.resizeCases();
        vueGrille.resizeCases();

        vueControle.afficherPieceSuivante(jeu.getPieceSuivante());
    }

    /**
     * Retourne la vue du bandeau de contrôle.
     *
     * @return la vue du bandeau de contrôle
     */
    public VueBandeauControle getVueBandeauControle() {
        return this.vueControle;
    }
}
