package com.faforever.client.fx;
import javafx.geometry.Pos;
import javafx.scene.control.ListCell;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import java.util.Objects;
import java.util.function.Function;
public class StringListCell<T> extends ListCell<T> {
private final Function<T, Image> imageFunction;
private Function<T, String> function;
private Pos alignment;
private String[] cssClasses;
public StringListCell(Function<T, String> function) {
this(function, null);
}
public StringListCell(Function<T, String> function, Function<T, Image> imageFunction) {
this(function, imageFunction, Pos.CENTER_LEFT);
}
public StringListCell(Function<T, String> function, Function<T, Image> imageFunction, Pos alignment, String... cssClasses) {
this.function = function;
this.alignment = alignment;
this.cssClasses = cssClasses;
this.imageFunction = imageFunction;
}
@Override
protected void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
setGraphic(null);
} else {
if (imageFunction != null) {
setGraphic(new ImageView(imageFunction.apply(item)));
}
setText(Objects.toString(function.apply(item), ""));
setAlignment(alignment);
getStyleClass().addAll(cssClasses);
}
}
}