package fr.iutfbleau.sae;

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;

/**
 * Fenetre principale du visualiseur d'images PIF.
 * Permet d'afficher une image et de la deplacer avec la souris.
 */
public class ViewerWindow extends JFrame {

    // le panneau qui affiche l'image avec double buffering
    private final ViewerImagePanel imagePanel;

    /**
     * Constructeur de la fenetre.
     * Initialise le titre, le comportement de fermeture et le panneau d'affichage.
     */
    public ViewerWindow() {
        super("PIF Viewer");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(true);
        
        // je cree le panneau qui va afficher l'image
        this.imagePanel = new ViewerImagePanel();
        this.add(imagePanel);
    }

    /**
     * Affiche une image dans la fenetre.
     * Adapte la taille de la fenetre a l'image sans depasser 90% de l'ecran.
     *
     * @param img l'image a afficher
     */
    public void displayImage(BufferedImage img) {
        // je passe l'image au panneau
        this.imagePanel.setImage(img);

        // je recupere la taille de l'ecran pour adapter la fenetre
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

        // je limite a 90% de l'ecran pour rester raisonnable
        int maxW = (int)(screen.width * 0.9);
        int maxH = (int)(screen.height * 0.9);

        // je prends le minimum entre la taille de l'image et la taille max
        int w = Math.min(img.getWidth(), maxW);
        int h = Math.min(img.getHeight(), maxH);

        // j'applique la taille calculee a la fenetre
        this.setSize(w, h);
        // je centre la fenetre sur l'ecran
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
}
