diff options
Diffstat (limited to 'src/de/fhswf/in/inf/java2/aufgabe05/view/DirectoryTableView.java')
| -rw-r--r-- | src/de/fhswf/in/inf/java2/aufgabe05/view/DirectoryTableView.java | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/de/fhswf/in/inf/java2/aufgabe05/view/DirectoryTableView.java b/src/de/fhswf/in/inf/java2/aufgabe05/view/DirectoryTableView.java new file mode 100644 index 0000000..0b76632 --- /dev/null +++ b/src/de/fhswf/in/inf/java2/aufgabe05/view/DirectoryTableView.java @@ -0,0 +1,88 @@ +/** + * + */ + +package de.fhswf.in.inf.java2.aufgabe05.view; + +import java.io.File; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import javafx.beans.property.SimpleObjectProperty; +import javafx.collections.FXCollections; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import de.fhswf.fbin.java2fx.entities.FXFile; +import de.fhswf.fbin.java2fx.tables.CheckBoxTableCellFactory; +import de.fhswf.fbin.java2fx.tables.LocalDateTimeTableCellFactory; +import de.fhswf.fbin.java2fx.tables.NumberTableCellFactory; + +/** + * TODO Add comment here + * + * @author $Author: $ + * @version $Revision: $, $Date: $ UTC + */ +public class DirectoryTableView extends TableView<FXFile> +{ + private SimpleObjectProperty<FXFile> parentDirectoryProperty; + + public SimpleObjectProperty<FXFile> getParentDirectoryProperty() + { + return parentDirectoryProperty; + } + + public DirectoryTableView(FXFile parentDirectory) + { + this.parentDirectoryProperty = new SimpleObjectProperty<FXFile>(parentDirectory); + + // name column with default cell factory + TableColumn<FXFile, String> nameCol = new TableColumn<>("Name"); + nameCol.setCellValueFactory(new PropertyValueFactory<FXFile, String>( + "name")); + + // length column with custom number cell factory + TableColumn<FXFile, Number> lengthCol = new TableColumn<>("Length"); + lengthCol.setCellValueFactory(new PropertyValueFactory<FXFile, Number>( + "length")); + lengthCol.setCellFactory(new NumberTableCellFactory<FXFile>()); + + // last modified column with custom date cell factory + TableColumn<FXFile, LocalDateTime> lastModifiedCol = new TableColumn<>( + "Last Modified"); + lastModifiedCol + .setCellValueFactory(new PropertyValueFactory<FXFile, LocalDateTime>( + "lastModified")); + lastModifiedCol + .setCellFactory(new LocalDateTimeTableCellFactory<FXFile>()); + + // hidden attribute column with custom checkbox cell factory + TableColumn<FXFile, Boolean> hiddenCol = new TableColumn<>("Hidden"); + hiddenCol + .setCellValueFactory(new PropertyValueFactory<FXFile, Boolean>( + "hidden")); + hiddenCol.setCellFactory(new CheckBoxTableCellFactory<FXFile>()); + + this.getColumns() + .addAll(nameCol, lengthCol, lastModifiedCol, hiddenCol); + + this.parentDirectoryProperty + .addListener((ov, oldParent, newParent) -> { + updateContent(newParent); + }); + } + + private void updateContent(FXFile newParent) + { + File[] files = newParent.getFile().listFiles(f -> (f.isFile())); + List<FXFile> fxFiles = new ArrayList<>(); + for (File file : files) + { + fxFiles.add(new FXFile(file)); + } + this.getItems().setAll(FXCollections.observableArrayList(fxFiles)); + + } +} |
