package de.pbauerochse.worklogviewer.fx.tablecolumns; import de.pbauerochse.worklogviewer.fx.tabs.domain.DisplayRow; import de.pbauerochse.worklogviewer.util.FormattingUtil; import javafx.beans.property.SimpleObjectProperty; import javafx.geometry.Pos; import javafx.scene.control.Tooltip; import javafx.scene.control.TreeTableCell; import javafx.scene.control.TreeTableColumn; import javafx.scene.image.ImageView; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.time.LocalDateTime; import java.util.Optional; /** * @author Patrick Bauerochse * @since 08.07.15 */ public class TaskStatusTreeTableColumn extends TreeTableColumn<DisplayRow, Optional<LocalDateTime>> { private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusTreeTableColumn.class); public TaskStatusTreeTableColumn() { super(FormattingUtil.getFormatted("view.main.resolved")); setSortable(false); setCellValueFactory(param -> new SimpleObjectProperty(param.getValue().getValue().getResolvedDate())); setCellFactory(param -> { TreeTableCell<DisplayRow, Optional<LocalDateTime>> statusCell = new TreeTableCell<DisplayRow, Optional<LocalDateTime>>() { @Override protected void updateItem(Optional<LocalDateTime> item, boolean empty) { super.updateItem(item, empty); setText(StringUtils.EMPTY); if (empty || !item.isPresent()) { setGraphic(null); setTooltip(null); } else { LOGGER.debug("Setting graphic on column with a resolved date"); setGraphic(new ImageView("/fx/img/accept.png")); setTooltip(new Tooltip(FormattingUtil.formatDateTime(item.get()))); } } }; statusCell.setAlignment(Pos.CENTER); return statusCell; }); setPrefWidth(120); } }