@SuppressWarnings("unchecked")
@Override
public Registration addValueChangeListener(
ValueChangeListener<? super ComponentValueChangeEvent<DateTimeField, LocalDateTime>> listener) {
ObjectUtils.argumentNotNull(listener, "ValueChangeListener must be not null");
this.valueChangeListeners
.add((ValueChangeListener<ComponentValueChangeEvent<DateTimeField, LocalDateTime>>) listener);
final Registration dl = this.date.addValueChangeListener(e -> {
if (e.isFromClient()) {
listener.valueChanged(new ComponentValueChangeEvent<>(DateTimeField.this, DateTimeField.this,
(e.getOldValue() == null) ? null : LocalDateTime.of(e.getOldValue(), getTimeValueOrDefault()),
e.isFromClient()));
}
});
final com.holonplatform.core.Registration tl = this.time.addValueChangeListener(e -> {
if (e.isUserOriginated()) {
listener.valueChanged(new ComponentValueChangeEvent<>(DateTimeField.this, DateTimeField.this,
getDateValue().map(date -> LocalDateTime.of(date, e.getOldValue())).orElse(null),
e.isUserOriginated()));
}
});
return () -> {
dl.remove();
tl.remove();
};
}