summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/java2/aufgabe05/view/DirectoryTableView.java
diff options
context:
space:
mode:
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.java88
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));
+
+ }
+}