package fr.iutfbleau.papillon;

import javax.swing.Icon;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;

/**
 * La classe <code>ColorIcon</code> permet d’afficher un petit carré coloré
 * servant d’icône dans l’interface de l’application <b>Papillon</b>.
 * <p>
 * Elle est utilisée notamment pour représenter visuellement un thème de couleur
 * associé à un rappel ou un élément d’interface.
 * </p>
 *
 * @version 1.0
 * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
 */
public class ColorIcon implements Icon {

    /** Couleur à afficher dans l’icône. */
    private final Color couleur;

    /** Largeur de l’icône. */
    private final int largeur;

    /** Hauteur de l’icône. */
    private final int hauteur;

    /**
     * Constructeur de l’icône colorée.
     *
     * @param couleur la couleur de l’icône
     * @param largeur la largeur de l’icône
     * @param hauteur la hauteur de l’icône
     */
    public ColorIcon(Color couleur, int largeur, int hauteur) {
        this.couleur = couleur;
        this.largeur = largeur;
        this.hauteur = hauteur;
    }

    /**
     * Renvoie la largeur de l’icône.
     *
     * @return la largeur de l’icône
     */
    @Override
    public int getIconWidth() {
        return largeur;
    }

    /**
     * Renvoie la hauteur de l’icône.
     *
     * @return la hauteur de l’icône
     */
    @Override
    public int getIconHeight() {
        return hauteur;
    }

    /**
     * Dessine l’icône sur le composant spécifié.
     *
     * @param c le composant sur lequel l’icône est dessinée
     * @param g le contexte graphique utilisé pour le dessin
     * @param x la position horizontale du coin supérieur gauche
     * @param y la position verticale du coin supérieur gauche
     */
    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.setColor(couleur);
        g.fillRect(x, y, largeur, hauteur);
        g.setColor(Color.DARK_GRAY);
        g.drawRect(x, y, largeur - 1, hauteur - 1);
    }
}
