package org.vaadin.touchkit.itest; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.vaadin.touchkit.AbstractTouchKitIntegrationTest; import org.vaadin.touchkit.gwt.client.vcom.DatePickerState.Resolution; import org.vaadin.touchkit.ui.DatePicker; import com.ibm.icu.util.Calendar; import com.vaadin.v7.data.Property; import com.vaadin.v7.data.Property.ValueChangeEvent; import com.vaadin.v7.data.Property.ValueChangeListener; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.v7.ui.CheckBox; import com.vaadin.v7.ui.HorizontalLayout; import com.vaadin.v7.ui.Label; import com.vaadin.v7.ui.NativeSelect; import com.vaadin.v7.ui.OptionGroup; @SuppressWarnings("serial") public class DatePickerTest extends AbstractTouchKitIntegrationTest { private final DatePicker pickerA = new DatePicker("Pick day"); private final Label pickerALabel; private final static String NULL_VALUE = "null"; private final static DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); public DatePickerTest() { // setDescription("Testing for DatePicker"); pickerA.setResolution(Resolution.DAY); Calendar cal = Calendar.getInstance(); cal.set(1982, 10, 28, 9, 17); pickerA.setValue(cal.getTime()); createResolutionOptions(); addComponent(pickerA); pickerA.addValueChangeListener(new Property.ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { Date value = (Date) event.getProperty().getValue(); pickerALabel.setValue(value != null ? value.toString() : "null"); } }); pickerALabel = new Label(pickerA.getValue().toString()); pickerALabel.setCaption("Value sent by client"); addComponent(pickerALabel); HorizontalLayout optionsLayout = new HorizontalLayout(); optionsLayout.setCaption("Options"); addComponent(optionsLayout); final CheckBox useNative = new CheckBox("Use native"); useNative.setId("usenative"); useNative.setImmediate(true); useNative.setValue(pickerA.isUseNative()); optionsLayout.addComponent(useNative); useNative.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { pickerA.setUseNative((Boolean) event.getProperty().getValue()); } }); addComponent(new Button("Toggle enabled state", new ClickListener() { @Override public void buttonClick(ClickEvent event) { pickerA.setEnabled(!pickerA.isEnabled()); } })); HorizontalLayout buttonLayout = new HorizontalLayout(); buttonLayout.setWidth("100%"); buttonLayout.setCaption("Set date value"); addComponent(buttonLayout); buttonLayout.addComponent(new Button(NULL_VALUE, dateButtonListener)); buttonLayout.addComponent(new Button("1982-10-25", dateButtonListener)); buttonLayout.addComponent(new Button("2011-02-11", dateButtonListener)); buttonLayout.addComponent(new Button("2013-01-31", dateButtonListener)); buttonLayout.addComponent(new Button("2015-06-23", dateButtonListener)); buttonLayout.addComponent(new Button("2078-12-25", dateButtonListener)); OptionGroup mingroup = new OptionGroup("Min value"); mingroup.setImmediate(true); mingroup.addItem(NULL_VALUE); mingroup.setValue(NULL_VALUE); mingroup.addItem("1982-01-01"); mingroup.addItem("2011-01-01"); mingroup.addItem("2011-02-01"); mingroup.addItem("2011-02-10"); mingroup.addItem("2011-02-12"); mingroup.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { String val = (String) event.getProperty().getValue(); if (val.equals(NULL_VALUE)) { System.out.println("Null min value"); pickerA.setMin(null); } else { try { System.out.println("Set min value to: " + val); pickerA.setMin(df.parse(val)); } catch (ParseException e) { e.printStackTrace(); } } } }); OptionGroup maxgroup = new OptionGroup("Max value"); maxgroup.setImmediate(true); maxgroup.addItem(NULL_VALUE); maxgroup.setValue(NULL_VALUE); maxgroup.addItem("1982-01-01"); maxgroup.addItem("2011-02-01"); maxgroup.addItem("2011-02-12"); maxgroup.addItem("2011-02-27"); maxgroup.addItem("2011-03-01"); maxgroup.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { String val = (String) event.getProperty().getValue(); if (val.equals(NULL_VALUE)) { System.out.println("Null max value"); pickerA.setMax(null); } else { try { System.out.println("Set max value to: " + val); pickerA.setMax(df.parse(val)); } catch (ParseException e) { e.printStackTrace(); } } } }); HorizontalLayout minmax = new HorizontalLayout(); minmax.setSpacing(true); minmax.addComponents(mingroup, maxgroup); addComponent(minmax); final OptionGroup localeGroup = new OptionGroup("Change the locale"); localeGroup.setId("locale"); localeGroup.setEnabled(!useNative.getValue()); localeGroup.addContainerProperty("locale", Locale.class, null); localeGroup.addItem("Default"); localeGroup.addItem("Finnish").getItemProperty("locale").setValue(new Locale("fi", "FI")); localeGroup.addItem("US").getItemProperty("locale").setValue(Locale.US); localeGroup.addItem("UK").getItemProperty("locale").setValue(Locale.UK); localeGroup.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { Locale locale = (Locale) localeGroup.getItem(event.getProperty().getValue()).getItemProperty("locale").getValue(); pickerA.setLocale(locale); } }); useNative.addValueChangeListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent valueChangeEvent) { localeGroup.setEnabled(!useNative.getValue()); } }); localeGroup.select("Default"); addComponent(localeGroup); } private final Button.ClickListener dateButtonListener = new ClickListener() { @Override public void buttonClick(ClickEvent event) { try { String caption = event.getButton().getCaption(); if (caption.equals(NULL_VALUE)) { pickerA.setValue(null); } else { pickerA.setValue(df.parse(caption)); } } catch (Exception e) { e.printStackTrace(); } } }; private void createResolutionOptions() { HorizontalLayout buttonLayout = new HorizontalLayout(); NativeSelect resolution = new NativeSelect("Resolution"); resolution.setNullSelectionAllowed(false); resolution.setImmediate(true); buttonLayout.addComponent(resolution); for (Resolution res : Resolution.values()) { resolution.addItem(res); } resolution.setValue(pickerA.getResolution()); resolution.addValueChangeListener(new Property.ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { Resolution res = (Resolution) event.getProperty().getValue(); System.out.println("Resolution: " + res); pickerA.setResolution(res); } }); addComponent(buttonLayout); } }