package at.bestsolution.efxclipse.runtime.example.photoedit.ui; import java.io.InputStream; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Orientation; import javafx.geometry.Pos; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.util.Callback; import javax.inject.Inject; import org.eclipse.e4.core.di.annotations.Optional; import at.bestsolution.efxclipse.runtime.example.photoedit.model.photoedit.Album; import at.bestsolution.efxclipse.runtime.example.photoedit.model.photoedit.Media; import at.bestsolution.efxclipse.runtime.example.photoedit.model.photoedit.Photo; import at.bestsolution.efxclipse.runtime.example.photoedit.model.photoedit.PhotoeditPackage; @SuppressWarnings("restriction") public class AlbumContentView { private ListView<Media> listView; static class MediaCell extends ListCell<Media> { @Override protected void updateItem(Media item, boolean empty) { if( item != null ) { if(item instanceof Photo) { InputStream previewImageStream = ((Photo)item).getSource().getPreviewObjectStream(); Image img = new Image(previewImageStream,128,128,true,true); setAlignment(Pos.CENTER); setGraphic(new ImageView(img)); } } super.updateItem(item, empty); } } @Inject public AlbumContentView(BorderPane pane) { listView = new ListView<Media>(); listView.setOrientation(Orientation.HORIZONTAL); listView.setCellFactory(new Callback<ListView<Media>, ListCell<Media>>() { @Override public ListCell<Media> call(ListView<Media> param) { return new MediaCell(); } }); pane.setCenter(listView); } @Inject void setAlbum(@Optional Album album) { if( album != null ) { ObservableList<Media> list = EMFListHelper.adaptList(PhotoeditPackage.Literals.ALBUM__MEDIA, album); listView.setItems(list); } else { ObservableList<Media> list = FXCollections.emptyObservableList(); listView.setItems(list); } } }