package com.twasyl.slideshowfx.controls; import com.twasyl.slideshowfx.engine.presentation.configuration.Slide; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.scene.Node; import javafx.scene.control.Label; import javafx.scene.control.MenuItem; import javafx.scene.image.ImageView; public class SlideMenuItem extends MenuItem { private final ObjectProperty<Slide> slide = new SimpleObjectProperty<>(); public SlideMenuItem(Slide slide) { if(slide == null) throw new IllegalArgumentException("The slide can not be null"); this.slide.set(slide); Node graphic; if(slide.getThumbnail() != null) { ImageView view = new ImageView(slide.getThumbnail()); view.setFitWidth(200); view.setSmooth(true); view.setPreserveRatio(true); graphic = view; } else { Label text = new Label(String.format("%1$s #%2$s", slide.getTemplate().getName(), slide.getSlideNumber())); graphic = text; } setGraphic(graphic); } public ObjectProperty<Slide> slideProperty() { return slide; } public Slide getSlide() { return slideProperty().get(); } public void setSlide(Slide slide) { this.slideProperty().set(slide); } }