package com.vaadin.tests.components.datefield; import java.time.LocalDate; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import com.vaadin.shared.ui.datefield.DateResolution; import com.vaadin.tests.components.ComponentTestCase; import com.vaadin.ui.Component; import com.vaadin.ui.InlineDateField; @SuppressWarnings("serial") public class InlineDateFields extends ComponentTestCase<InlineDateField> { private static final Locale[] LOCALES = new Locale[] { Locale.US, Locale.TAIWAN, new Locale("fi", "FI") }; @Override protected Class<InlineDateField> getTestClass() { return InlineDateField.class; } @Override protected void initializeComponents() { InlineDateField hidden = new InlineDateField(); hidden.setVisible(false); // Used to break rest of layout #8693 addComponent(hidden); Locale locale = LOCALES[0]; InlineDateField pd = createInlineDateField("Undefined width", "-1", locale); pd.setId("Locale-" + locale.toString() + "-undefined-wide"); addTestComponent(pd); pd = createInlineDateField("300px width", "300px", locale); pd.setId("Locale-" + locale.toString() + "-300px-wide"); addTestComponent(pd); pd = createInlineDateField("Initially empty", "", locale); pd.setValue(null); pd.setId("Locale-" + locale.toString() + "-initially-empty"); addTestComponent(pd); } private InlineDateField createInlineDateField(String caption, String width, Locale locale) { InlineDateField pd = new InlineDateField( caption + "(" + locale.toString() + ")"); pd.setWidth(width); pd.setValue(LocalDate.of(1970, 05, 23)); pd.setLocale(locale); pd.setResolution(DateResolution.YEAR); return pd; } @Override protected String getTestDescription() { return "A generic test for InlineDateFields in different configurations"; } @Override protected List<Component> createActions() { List<Component> actions = super.createActions(); actions.add(createResolutionSelectAction()); actions.add(createLocaleSelectAction()); return actions; } private Component createResolutionSelectAction() { LinkedHashMap<String, DateResolution> options = new LinkedHashMap<>(); options.put("Year", DateResolution.YEAR); options.put("Month", DateResolution.MONTH); options.put("Day", DateResolution.DAY); return createSelectAction("Resolution", options, "Year", (field, value, data) -> field.setResolution(value)); } private Component createLocaleSelectAction() { LinkedHashMap<String, Locale> options = new LinkedHashMap<>(); for (Locale locale : LOCALES) { options.put(locale.toString(), locale); } return createSelectAction("Locale", options, LOCALES[0].toString(), new Command<InlineDateField, Locale>() { @Override public void execute(InlineDateField c, Locale value, Object data) { c.setCaption(c.getCaption().replaceAll( c.getLocale().toString(), value.toString())); c.setLocale(value); } }); } }