package settlers;

import java.io.File;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javax.swing.JFileChooser;

public final class Player_label extends javax.swing.JLabel {

    private int number;
    private Media hit;
    private MediaPlayer media_player;
    private final java.util.ArrayList<File> LIST_FILES = new java.util.ArrayList<>();

    public Player_label(int x, int y, String tool_tip_text) {
        setBounds(x, y, 400, 20);
        setFont(new java.awt.Font("Times New Roman", 2, 20));
        setForeground(java.awt.Color.DARK_GRAY);
        setToolTipText(tool_tip_text);
    }

    public void choose_song() {
        number = -1;
        new javafx.embed.swing.JFXPanel();
        JFileChooser file_chooser = new JFileChooser("C:\\");
        file_chooser.setFileFilter(new javax.swing.filechooser.FileNameExtensionFilter("Music", "mp3", "wav", "flac"));
        file_chooser.setMultiSelectionEnabled(true);
        file_chooser.setControlButtonsAreShown(false);
        file_chooser.setCurrentDirectory(new File("C:\\"));
        file_chooser.showOpenDialog(null);
        LIST_FILES.addAll(java.util.Arrays.asList(file_chooser.getSelectedFiles()));
        if (LIST_FILES.size() > 0) {
            java.util.Collections.reverse(LIST_FILES);
            play();
        }
    }

    public void play() {
        number += 1;
        if (number < LIST_FILES.size()) {
            hit = new Media(new File(LIST_FILES.get(number).toString()).toURI().toString());
            setText(LIST_FILES.get(number).getName().substring(0, LIST_FILES.get(number).getName().lastIndexOf(".")));
            media_player = new MediaPlayer(hit);
            media_player.setOnEndOfMedia(() -> play());
            media_player.play();
        } else {
            LIST_FILES.clear();
            choose_song();
        }
    }

    public void play_pause() {
        if (media_player.getStatus().equals(MediaPlayer.Status.PLAYING)) {
            media_player.pause();
        } else {
            media_player.play();
        }
    }

    public void stop() {
        media_player.pause();
    }
}
