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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package com.vaadin.tests.components.datefield;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import com.vaadin.data.Binder;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.DateTimeResolution;
import com.vaadin.tests.components.AbstractTestUIWithLog;
import com.vaadin.ui.Button;
import com.vaadin.ui.DateTimeField;
import com.vaadin.ui.HorizontalLayout;
public class DateTimeFieldResolutionChange extends AbstractTestUIWithLog {
protected DateTimeFormatter DATE_FORMATTER = DateTimeFormatter
.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
@Override
protected void setup(VaadinRequest request) {
Binder<Pojo> binder = new Binder<>(Pojo.class);
HorizontalLayout horizontalLayout = new HorizontalLayout();
final DateTimeField monthField = new DateTimeField() {
@Override
public void setValue(LocalDateTime value) {
if (value != null) {
log("MonthField set value " + DATE_FORMATTER.format(value));
}
super.setValue(value);
}
};
monthField.setResolution(DateTimeResolution.MONTH);
monthField.setId("MonthField");
monthField.addValueChangeListener(
event -> log("MonthField value change event: "
+ DATE_FORMATTER.format(event.getValue())));
binder.bind(monthField, "value1");
final DateTimeField dayField = new DateTimeField() {
@Override
public void setValue(LocalDateTime value) {
if (value != null) {
log("DayField set value " + DATE_FORMATTER.format(value));
}
super.setValue(value);
}
};
dayField.setResolution(DateTimeResolution.DAY);
dayField.setId("DayField");
dayField.addValueChangeListener(
event -> log("DayField value change event: "
+ DATE_FORMATTER.format(event.getValue())));
binder.bind(dayField, "value2");
Pojo pojo = new Pojo();
binder.setBean(pojo);
Button monthButton = new Button("month", e -> {
monthField.setResolution(DateTimeResolution.MONTH);
dayField.setResolution(DateTimeResolution.MONTH);
});
Button dayButton = new Button("day", e -> {
monthField.setResolution(DateTimeResolution.DAY);
dayField.setResolution(DateTimeResolution.DAY);
});
Button logButton = new Button("log", e -> {
log("MonthField current value: "
+ DATE_FORMATTER.format(pojo.getValue1()));
log("DayField current value: "
+ DATE_FORMATTER.format(pojo.getValue2()));
});
Button setButton = new Button("set", e -> {
LocalDateTime newDate = LocalDateTime.of(2021, 2, 14, 16, 17);
pojo.setValue1(newDate);
pojo.setValue2(newDate);
binder.setBean(pojo);
});
horizontalLayout.addComponents(monthField, dayField, monthButton,
dayButton, logButton, setButton);
addComponent(horizontalLayout);
}
public class Pojo {
private LocalDateTime value1, value2 = null;
public LocalDateTime getValue1() {
return value1;
}
public void setValue1(LocalDateTime value1) {
this.value1 = value1;
}
public LocalDateTime getValue2() {
return value2;
}
public void setValue2(LocalDateTime value2) {
this.value2 = value2;
}
}
@Override
protected String getTestDescription() {
return "Date field value should immediately update to match resolution.";
}
}
|