package fr.iutfbleau.projetAgile.Menu.View;

import javax.swing.JComponent;
import java.awt.*;

/**
 * Class Dessinant les boutons du menu
 */
public class BoutonsMenu extends JComponent{
    private String path;
    private boolean survol;
    private Image img;
    private boolean disponibiliter;
    /**
     * Constructeur
     * @param path0
     * il correspond au path de l'image qui devra être afficher
     */
    public BoutonsMenu(String path0, boolean disponibiliter0){
        super();
        this.path=path0;
        ClassLoader cl = Thread.currentThread().getContextClassLoader();
        this.img = Toolkit.getDefaultToolkit().getImage(cl.getResource("res/images/"+this.path+".png"));
        this.survol=false;
        this.disponibiliter=disponibiliter0;
    }
    /**
     * savoir si le bouton est survoler
     * @param bol 
     */
    public void setSurvol(boolean bol){
        this.survol=bol;
        this.repaint();
    }
    /**
     * Connaitre le chemin de l'image et donc le type du jeu
     * @return le String du jeu du boutons
     */
    public String getPath(){
        return this.path;
    }

    @Override
    protected void paintComponent(Graphics pinceau) {
      // obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard
      Graphics2D secondPinceau = (Graphics2D) pinceau.create();
      secondPinceau.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
      // obligatoire : si le composant n'est pas censé être transparent
      if (this.isOpaque()) {
        // obligatoire : on repeint toute la surface avec la couleur de fond
        secondPinceau.setColor(this.getBackground());
        secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
      }
      // maintenant on dessine ce que l'on veut
      String dispo;
      if(this.disponibiliter==true){
        secondPinceau.setColor(new Color(255,0,0,200));
        dispo="Disponible";
      }else{
        secondPinceau.setColor(new Color(100,100,100,200));
        dispo="Indisponible";
      }
      if(this.survol==false){
        secondPinceau.drawImage(this.img, 5, 5, this.getWidth()-10, this.getHeight()-10, this);
        secondPinceau.fillRoundRect(5, 5, this.getWidth()-10, this.getHeight()-10, this.getWidth()/100*9, this.getHeight()/100*29);
      }else{
        secondPinceau.drawImage(this.img, 0, 0, this.getWidth(), this.getHeight(), this);
        secondPinceau.fillRoundRect(0, 0, this.getWidth(), this.getHeight(), this.getWidth()/100*9, this.getHeight()/100*29);
        
      }
      secondPinceau.setColor(new Color(255, 255, 255));
      secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/10)));
      FontMetrics metrics = secondPinceau.getFontMetrics(secondPinceau.getFont());
      secondPinceau.drawString(this.path.toUpperCase(), (this.getWidth()/2-metrics.stringWidth(this.path.toUpperCase())/2), (this.getHeight()-metrics.getHeight())/3+metrics.getAscent());
      //DISPO OU PAS
      secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/20)));
      metrics = secondPinceau.getFontMetrics(secondPinceau.getFont());
      secondPinceau.drawString(dispo, (this.getWidth()/2-metrics.stringWidth(dispo)/2), (this.getHeight()-metrics.getHeight())/3*2+metrics.getAscent());
    }
  }
