blob: c68edbb39abc253eba7cc634a971293236c5a7be (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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);
}
}
|