import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;

/**
 * Affiche une barre de statut au pied de la fenêtre
 * @author V.BOULANGER
 */
public class AppThinkerStatusbar extends JPanel {

    private JLabel _statusLabel;
    private JLabel _posXLabel;
    private JLabel _posYLabel;
    private JLabel _sizeXLabel;
    private JLabel _sizeYLabel;
    private JLabel _fileLabel;

    /**
     * Constructeur de la classe AppThinkerStatusbar
     */
    public AppThinkerStatusbar(){
        //Création de la statusBar
        this.setBorder(new BevelBorder(BevelBorder.LOWERED));
        this.setLayout(new GridLayout(1,3));

        _statusLabel = new JLabel("Create or import a project to start.");
        this.add(_statusLabel);

        JPanel actionBar = new JPanel();

        _posXLabel = new JLabel("PX : - |");
        actionBar.add(_posXLabel);
        _posYLabel = new JLabel("PY : - |");
        actionBar.add(_posYLabel);
        _sizeXLabel = new JLabel("SX : - |");
        actionBar.add(_sizeXLabel);
        _sizeYLabel = new JLabel("SY : -");
        actionBar.add(_sizeYLabel);

        this.add(actionBar);

        _fileLabel = new JLabel("No project opened.");
        _fileLabel.setHorizontalAlignment(JLabel.RIGHT);
        this.add(_fileLabel);
    }

    /**
     * Met à jour le texte de statut de la barre de statut.
     * @param statusMessage Le message à afficher.
     */
    public void setStatusMessage(String statusMessage){
        this._statusLabel.setText(statusMessage);
    }

    /**
     * Met à jour le nom du fichier dans la barre de statut.
     * @param fileMessage Le nom du fichier à afficher.
     */
    public void setFileMessage(String fileMessage){
        this._fileLabel.setText(fileMessage);
    }

    /**
     * Met à jour les labels de position.
     * @param posX La position X.
     * @param posY La position Y.
     */
    public void setPosLabel(int posX, int posY){
        this._posXLabel.setText("X : " + Integer.toString(posX) + " |");
        this._posYLabel.setText("Y : " + Integer.toString(posY) + " |");
    }

    /**
     * Met à jour les labels de taille.
     * @param sizeX La taille X.
     * @param sizeY La taille Y.
     */
    public void setSizeLabel(int sizeX, int sizeY){
        this._sizeXLabel.setText("SX : " + ((sizeX == 0) ? "-" : Integer.toString(sizeX)) + " |");
        this._sizeYLabel.setText("SY : " + ((sizeY == 0) ? "-" : Integer.toString(sizeY)));
    }
}
