package be.msyben.vinylManager.interfaces;

import be.msyben.vinylManager.entities.Album;

/**
 * Listener de changement.
 * @author Mathieu Syben
 */
public interface ChangeListener {
    /**
     * Est appelé quand on ouvre une nouvelle collection ou quand on crée une nouvelle.
     */
    public void onChange();

    /**
     * Est appelé lors de l'ajout ou de la mise à jour d'un album.
     * Ou lors de la suppression d'un disque.
     * @param album l'album
     */
    public void onChange(Album album);

    /**
     * Est appelé lors de l'ajout ou de la mise à jour d'un disque.
     * @param album l'album
     * @param disqueIdx l'index du disque dans la liste.
     */
    public void onChange(Album album, int disqueIdx);

    /**
     * Est appelé lors de la suppression d'un album.
     * @param album l'album
     */
    public void onDelete(Album album);

    /**
     * Est appelé quand il faut simplement mettre la cote à jour
     */
    public void refreshCote();
}
