package com.soundlooper.system;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.ListCell;
import javafx.scene.control.MenuItem;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import com.soundlooper.model.song.Song;
public class SongListCell extends ListCell<Song> {
@Override
protected void updateItem(Song item, boolean empty) {
super.updateItem(item, empty);
setGraphic(null);
setText(null);
if (item != null) {
this.setGraphic(ImageGetter.getIconeSong16());
setText(item.getFile().getName() + " ("
+ item.getFile().getParentFile().getPath() + ")");
configureDrag();
MenuItem deleteFavoriteMenu = new MenuItem(MessageReader
.getInstance().getMessage(
"window.manageFavorite.deleteFavorite"));
deleteFavoriteMenu.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
item.setFavorite(false);
}
});
this.setContextMenu(new ContextMenu(deleteFavoriteMenu));
}
}
private void configureDrag() {
this.setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
ClipboardContent content = new ClipboardContent();
Dragboard db = SongListCell.this
.startDragAndDrop(TransferMode.ANY);
content.putString(ManageFavoriteController.DRAG_TYPE_SONG);
db.setContent(content);
event.consume();
}
});
}
}