SAE21_2023/src/MusicButton.java

64 lines
1.9 KiB
Java

import javax.swing.*;
/**
* Fournit un bouton qui bascule entre la lecture et l'arrêt de la musique lorsqu'il est cliqué.
* @version 1.0
* @author Moncef STITI
* @author Marco ORFAO
*/
public class MusicButton extends JButton {
/**
* Représente le lecteur de musique actuellement en cours de lecture.
*/
private static MusicPlayer currentMusicPlayer;
/**
* L'icône à afficher lorsque la musique est activée.
*/
private ImageIcon iconOn;
/**
* L'icône à afficher lorsque la musique est désactivée.
*/
private ImageIcon iconOff;
/**
* Le lecteur de musique associé à ce bouton.
*/
private MusicPlayer musicPlayer;
/**
* Constructeur : Construit un MusicButton.
* @param onIconPath Le chemin du fichier d'icône lorsque la musique est activée.
* @param offIconPath Le chemin du fichier d'icône lorsque la musique est désactivée.
* @param musicFilePath Le chemin du fichier musical à jouer.
*/
public MusicButton(String onIconPath, String offIconPath, String musicFilePath) {
this.iconOn = new ImageIcon(onIconPath);
this.iconOff = new ImageIcon(offIconPath);
setIcon(this.iconOff);
// Vérifie s'il y a déjà une musique en cours de lecture et l'arrête si nécessaire
if (currentMusicPlayer != null && currentMusicPlayer.isPlaying()) {
currentMusicPlayer.stop();
currentMusicPlayer = null;
}
this.musicPlayer = new MusicPlayer(musicFilePath);
this.addActionListener(e -> {
if (currentMusicPlayer != null && currentMusicPlayer.isPlaying()) {
currentMusicPlayer.stop();
currentMusicPlayer = null;
setIcon(this.iconOff);
} else {
this.musicPlayer.play();
setIcon(this.iconOn);
currentMusicPlayer = this.musicPlayer;
}
});
}
}