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

/**
 * A custom JButton designed to control music playback.
 * It provides a button that toggles between playing and stopping music when clicked.
 *
 * @version 1.0
 * @author Moncef STITI
 * @author Marco ORFAO
 */

public class MusicButton extends JButton {
    private boolean isMusicOn;
    private ImageIcon iconOn;
    private ImageIcon iconOff;
    private MusicPlayer musicPlayer;


    /**
    * Constructs a MusicButton.
    *    
    * @param onIconPath   The file path for the icon when music is on.
    * @param offIconPath  The file path for the icon when music is off.
    * @param musicFilePath The file path for the music file to be played.
    */
    public MusicButton(String onIconPath, String offIconPath, String musicFilePath) {

        this.iconOn = new ImageIcon(onIconPath);
        this.iconOff = new ImageIcon(offIconPath);
        setIcon(this.iconOff);
        this.isMusicOn = false;
        this.musicPlayer = new MusicPlayer(musicFilePath);

        addActionListener(e -> {
            if (this.isMusicOn) {
                this.musicPlayer.stop();
                setIcon(this.iconOff);
            } else {
                this.musicPlayer.play();
                setIcon(this.iconOn);
            }
            this.isMusicOn = !this.isMusicOn;
        });
    }
}
