package org.jabref.gui.fieldeditors; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.time.temporal.TemporalAccessor; import javafx.util.StringConverter; import org.jabref.model.entry.Date; import org.jabref.model.strings.StringUtil; public class DateEditorViewModel extends AbstractEditorViewModel { private final DateTimeFormatter dateFormatter; public DateEditorViewModel(DateTimeFormatter dateFormatter) { this.dateFormatter = dateFormatter; } public StringConverter<TemporalAccessor> getDateToStringConverter() { return new StringConverter<TemporalAccessor>() { @Override public String toString(TemporalAccessor date) { if (date != null) { return dateFormatter.format(date); } else { return ""; } } @Override public TemporalAccessor fromString(String string) { if (StringUtil.isNotBlank(string)) { try { return dateFormatter.parse(string); } catch (DateTimeParseException exception) { // We accept all kinds of dates (not just in the format specified) return Date.parse(string).map(Date::toTemporalAccessor).orElse(null); } } else { return null; } } }; } }