package io.haskins.java.cloudtrailviewer.controller.dialog.filechooser;
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIcon;
import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView;
import io.haskins.java.cloudtrailviewer.model.observable.FileListModel;
import javafx.geometry.Insets;
import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.layout.HBox;
/**
* Custom List cell for showing Files with associated icon
*
* Created by markhaskins on 18/02/2017.
*/
class FileListViewCell extends ListCell<FileListModel> {
private HBox layout = new HBox();
private Label icon = new Label();
private Label name = new Label();
private FontAwesomeIconView folder = new FontAwesomeIconView(FontAwesomeIcon.FOLDER);
private FontAwesomeIconView file = new FontAwesomeIconView(FontAwesomeIcon.FILE);
private FontAwesomeIconView parent = new FontAwesomeIconView(FontAwesomeIcon.ARROW_UP);
FileListViewCell() {
name.setPadding(new Insets(0, 0, 0, 10));
layout.getChildren().add(icon);
layout.getChildren().add(name);
folder.getStyleClass().add("file_dir");
file.getStyleClass().add("file_file");
}
@Override
public void updateItem(FileListModel model, boolean empty) {
super.updateItem(model, empty);
if (model != null) {
if (model.getFileType() == FileListModel.FILE_DIR) {
icon.setGraphic(folder);
} else if (model.getFileType() == FileListModel.FILE_DOC) {
icon.setGraphic(file);
} else {
icon.setGraphic(parent);
}
name.setText(model.getName());
setText(null);
setGraphic(layout);
} else {
setText(null);
setGraphic(null);
}
}
}