diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-04 22:11:28 +0200 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-04 22:11:28 +0200 |
| commit | 3b5728de6f2d8d2852fbb86fa8cac21e6dccc19b (patch) | |
| tree | 54965319a9aafeb294dac8e36e4ce1371ec76ef3 /src/de/fhswf/fbin/java2fx/tables | |
| parent | af7b9bd6a962b9a290fc5d78c08c83653961811f (diff) | |
| download | Java2-3b5728de6f2d8d2852fbb86fa8cac21e6dccc19b.tar.gz Java2-3b5728de6f2d8d2852fbb86fa8cac21e6dccc19b.zip | |
Build a file browser looking like Finder
Diffstat (limited to 'src/de/fhswf/fbin/java2fx/tables')
4 files changed, 176 insertions, 0 deletions
diff --git a/src/de/fhswf/fbin/java2fx/tables/CheckBoxTableCellFactory.java b/src/de/fhswf/fbin/java2fx/tables/CheckBoxTableCellFactory.java new file mode 100644 index 0000000..f609860 --- /dev/null +++ b/src/de/fhswf/fbin/java2fx/tables/CheckBoxTableCellFactory.java @@ -0,0 +1,16 @@ +package de.fhswf.fbin.java2fx.tables; + +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.cell.CheckBoxTableCell; +import javafx.util.Callback; + +public class CheckBoxTableCellFactory<S> implements Callback<TableColumn<S, Boolean>, TableCell<S, Boolean>> +{ + @Override + public TableCell<S, Boolean> call( + TableColumn<S, Boolean> param) + { + return new CheckBoxTableCell<S, Boolean>(); + } +} diff --git a/src/de/fhswf/fbin/java2fx/tables/DatePickerTableCell.java b/src/de/fhswf/fbin/java2fx/tables/DatePickerTableCell.java new file mode 100644 index 0000000..c68edbb --- /dev/null +++ b/src/de/fhswf/fbin/java2fx/tables/DatePickerTableCell.java @@ -0,0 +1,88 @@ +package de.fhswf.fbin.java2fx.tables; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableCell; + +public class DatePickerTableCell<S> extends TableCell<S, LocalDate> +{ + private DatePicker datePicker; + + @Override + public void startEdit() + { + if (!isEmpty()) + { + super.startEdit(); + createDatePicker(); + setText(null); + setGraphic(datePicker); + } + } + + @Override + public void cancelEdit() + { + super.cancelEdit(); + + setText(getItem().format(DateTimeFormatter.RFC_1123_DATE_TIME)); + setGraphic(null); + } + + @Override + public void updateItem(LocalDate item, boolean empty) + { + super.updateItem(item, empty); + + if (empty) + { + setText(null); + setGraphic(null); + } + else + { + if (isEditing()) + { + if (datePicker != null) + { + datePicker.setValue(item); + } + setText(null); + setGraphic(datePicker); + } + else + { + setText(item.format(DateTimeFormatter.RFC_1123_DATE_TIME)); + setGraphic(null); + } + } + } + + private void createDatePicker() + { + datePicker = new DatePicker(); + datePicker.setValue(getItem()); + datePicker.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2); + datePicker.focusedProperty().addListener(new ChangeListener<Boolean>() + { + @Override + public void changed(ObservableValue<? extends Boolean> arg0, + Boolean oldVAlue, Boolean newValue) + { + if (!newValue) + { + commitEdit(datePicker.getValue()); + } + } + }); + } + + private String getString() + { + return getItem() == null ? "" : getItem().format(DateTimeFormatter.RFC_1123_DATE_TIME); + } +} diff --git a/src/de/fhswf/fbin/java2fx/tables/LocalDateTimeTableCellFactory.java b/src/de/fhswf/fbin/java2fx/tables/LocalDateTimeTableCellFactory.java new file mode 100644 index 0000000..0c5c41d --- /dev/null +++ b/src/de/fhswf/fbin/java2fx/tables/LocalDateTimeTableCellFactory.java @@ -0,0 +1,37 @@ +package de.fhswf.fbin.java2fx.tables; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; + +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.util.Callback; + +public class LocalDateTimeTableCellFactory<S> implements + Callback<TableColumn<S, LocalDateTime>, TableCell<S, LocalDateTime>> +{ + @Override + public TableCell<S, LocalDateTime> call(TableColumn<S, LocalDateTime> param) + { + return new TableCell<S, LocalDateTime>() + { + @Override + protected void updateItem(LocalDateTime item, boolean empty) + { + super.updateItem(item, empty); + + if (!empty) + { + ZonedDateTime zdt = ZonedDateTime.of(item, ZoneId.systemDefault()); + setText(zdt.format(DateTimeFormatter.RFC_1123_DATE_TIME)); + } + else + { + setText(null); + } + } + }; + } +} diff --git a/src/de/fhswf/fbin/java2fx/tables/NumberTableCellFactory.java b/src/de/fhswf/fbin/java2fx/tables/NumberTableCellFactory.java new file mode 100644 index 0000000..2bfce82 --- /dev/null +++ b/src/de/fhswf/fbin/java2fx/tables/NumberTableCellFactory.java @@ -0,0 +1,35 @@ +package de.fhswf.fbin.java2fx.tables; + +import javafx.geometry.Pos; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.util.Callback; + +public class NumberTableCellFactory<S> + implements + Callback<TableColumn<S, Number>, TableCell<S, Number>> +{ + @Override + public TableCell<S, Number> call( + TableColumn<S, Number> param) + { + return (TableCell<S, Number>) new TableCell<S, Number>() + { + @Override + protected void updateItem(Number item, boolean empty) + { + super.updateItem(item, empty); + + if (!empty) + { + setText(item.toString()); + setAlignment(Pos.TOP_RIGHT); + } + else + { + setText(null); + } + } + }; + } +} |
