package de.calette.mephisto3.ui;
import callete.api.services.music.model.AlbumCollection;
import de.calette.mephisto3.resources.menu.MenuResourceLoader;
import de.calette.mephisto3.util.ComponentUtil;
import javafx.scene.canvas.Canvas;
import javafx.scene.layout.Pane;
import java.util.List;
/**
* UI Panel for selecting the album album sorted by name or artist.
*/
public class AlbumLetterSelector extends ControllableSelectorPanel<AlbumCollection> {
private ServiceChooser serviceChooser;
private List<AlbumCollection> collections;
public AlbumLetterSelector(ServiceChooser serviceChooser, Pane parent, List<AlbumCollection> collections) {
super(0, parent, AlbumLetterBox.LETTER_BOX_WIDTH, collections, AlbumLetterBox.class);
setBackButton(0);
this.collections = collections;
this.serviceChooser = serviceChooser;
}
@Override
public void showPanel() {
super.showPanel();
Canvas selectorCanvas = ComponentUtil.createImageCanvas(MenuResourceLoader.getResource("selector.png"), 40, 40);
getParentPane().getChildren().add(selectorCanvas);
}
@Override
public void hidePanel() {
super.hidePanel();
getParentPane().getChildren().clear();
}
@Override
protected void onLongPush() {
super.onLongPush();
setSelectionIndex(0);
hidePanel();
}
@Override
protected int getTopPadding() {
return 140;
}
@Override
protected void onHide(AlbumCollection albumCollection) {
//album selected
if(albumCollection != null) {
AlbumSlider albumSlider;
if(albumCollection.getAlbums().size() >= 2) {
albumSlider = new AlbumSlider(serviceChooser, getParentPane(), collections, albumCollection, albumCollection.getAlbums().subList(0, 2), 3);
}
else {
albumSlider = new AlbumSlider(serviceChooser, getParentPane(), collections, albumCollection, albumCollection.getAlbums(), 3);
}
albumSlider.showPanel();
}
//back button selected
else {
serviceChooser.showServiceChooser();
}
}
}