aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/main/java/com/vaadin/client/ui/datefield/DateFieldConnector.java4
-rw-r--r--client/src/main/java/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java4
-rw-r--r--server/src/main/java/com/vaadin/ui/AbstractDateField.java877
-rw-r--r--server/src/main/java/com/vaadin/ui/DateField.java843
-rw-r--r--server/src/main/java/com/vaadin/ui/InlineDateField.java4
-rw-r--r--server/src/main/java/com/vaadin/ui/PopupDateField.java151
-rw-r--r--server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java10
-rw-r--r--server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldDeclarativeTest.java92
-rw-r--r--server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java10
-rw-r--r--server/src/test/java/com/vaadin/tests/server/component/datefield/InlineDateFieldDeclarativeTest.java4
-rw-r--r--server/src/test/java/com/vaadin/tests/server/component/datefield/PopupDateFieldDeclarativeTest.java62
-rw-r--r--server/src/test/java/com/vaadin/ui/DateFieldTestCase.java5
-rw-r--r--uitest-common/src/main/java/com/vaadin/testbench/customelements/AbstractDateFieldElement.java7
-rw-r--r--uitest/src/main/java/com/vaadin/tests/FocusingComponents.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/PerformanceTestBasicComponentRendering.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/RandomLayoutStress.java13
-rw-r--r--uitest/src/main/java/com/vaadin/tests/TestCaptionWrapper.java7
-rw-r--r--uitest/src/main/java/com/vaadin/tests/TestDateField.java18
-rw-r--r--uitest/src/main/java/com/vaadin/tests/TestForAlignments.java7
-rw-r--r--uitest/src/main/java/com/vaadin/tests/TestForBasicApplicationLayout.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/TestSelectAndDatefieldInDeepLayouts.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/AbstractComponentContainerTest.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/FocusAndBlurListeners.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/TestDateField.java57
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/AbstractDateFieldTest.java146
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/AriaDisabled.java8
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormat.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormatEEE.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormats.java9
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldChangeResolution.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldClose.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffset.java9
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldElementUI.java (renamed from uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldConnector.java)8
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldExtendedRange.java14
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldIsValid.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldKeyboardInput.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldLocale.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldMinResolution.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosing.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetach.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupOffScreen.java9
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupPosition.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPrimaryStyleNames.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldRanges.java31
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldReadOnly.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTest.java145
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTextEnabled.java (renamed from uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldTextEnabled.java)6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTimezone.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java10
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldValueChangeEvents.java (renamed from uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldValueChangeEvents.java)8
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java23
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateFields.java (renamed from uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFields.java)22
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DatePopupStyleName.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DateRangeWithSqlDate.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldPopup.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledInlineDateField.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledParentLayout.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/DynamicallyChangeDateRange.java8
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/InlineDateFieldTest.java2
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/LenientMode.java11
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/LocaleChange.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/LowResolution.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/NarrowPopupDateFieldInTable.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java11
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java12
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPrompt.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldLocaleTest.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldStates.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldTest.java52
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/TestDatefieldYear.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/gridlayout/LayoutAfterHidingError.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/table/TableChildMeasurementHint.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/tabsheet/ScrollbarsInNestedTabsheets.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/uitest/components/DatesCssTest.java7
-rw-r--r--uitest/src/main/java/com/vaadin/tests/declarative/PotusForm.java6
-rw-r--r--uitest/src/main/java/com/vaadin/tests/fieldgroup/DateForm.java5
-rw-r--r--uitest/src/main/java/com/vaadin/tests/fields/TabIndexes.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/fonticon/FontIcons.java9
-rw-r--r--uitest/src/main/java/com/vaadin/tests/layouts/CaptionsInLayoutsWaiAria.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/layouts/layouttester/BaseRegError.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/layouts/layouttester/GridLayout/GridLayoutRegError.java4
-rw-r--r--uitest/src/main/java/com/vaadin/tests/themes/valo/DateFields.java56
-rw-r--r--uitest/src/main/java/com/vaadin/tests/themes/valo/Forms.java7
-rw-r--r--uitest/src/main/java/com/vaadin/tests/themes/valo/Tables.java5
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/AbstractDateFieldTestTest.java (renamed from uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldTestTest.java)2
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffsetTest.java4
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldElementTest.java26
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldIsValidTest.java4
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetachTest.java3
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingTest.java3
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldReadOnlyTest.java4
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldValueChangeEventsTest.java (renamed from uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldValueChangeEventsTest.java)6
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java21
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldConnectorTest.java21
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPromptTest.java9
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/uitest/ThemeTest.java10
-rw-r--r--uitest/src/test/java/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java2
-rw-r--r--uitest/src/test/java/com/vaadin/tests/fieldgroup/DateFormTest.java7
-rw-r--r--uitest/src/test/java/com/vaadin/tests/fonticon/FontIconsTest.java2
103 files changed, 1575 insertions, 1567 deletions
diff --git a/client/src/main/java/com/vaadin/client/ui/datefield/DateFieldConnector.java b/client/src/main/java/com/vaadin/client/ui/datefield/DateFieldConnector.java
index d483bd83f9..c7a2b50388 100644
--- a/client/src/main/java/com/vaadin/client/ui/datefield/DateFieldConnector.java
+++ b/client/src/main/java/com/vaadin/client/ui/datefield/DateFieldConnector.java
@@ -31,9 +31,9 @@ import com.vaadin.client.ui.VPopupCalendar;
import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.datefield.PopupDateFieldState;
import com.vaadin.shared.ui.datefield.Resolution;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
-@Connect(DateField.class)
+@Connect(AbstractDateField.class)
public class DateFieldConnector extends TextualDateConnector {
/*
diff --git a/client/src/main/java/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java b/client/src/main/java/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java
index e22a2ed8fd..bebefe96dd 100644
--- a/client/src/main/java/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java
+++ b/client/src/main/java/com/vaadin/client/ui/datefield/PopupDateFieldConnector.java
@@ -17,9 +17,9 @@
package com.vaadin.client.ui.datefield;
import com.vaadin.shared.ui.Connect;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
-@Connect(PopupDateField.class)
+@Connect(DateField.class)
public class PopupDateFieldConnector extends DateFieldConnector {
}
diff --git a/server/src/main/java/com/vaadin/ui/AbstractDateField.java b/server/src/main/java/com/vaadin/ui/AbstractDateField.java
new file mode 100644
index 0000000000..f8cda4f355
--- /dev/null
+++ b/server/src/main/java/com/vaadin/ui/AbstractDateField.java
@@ -0,0 +1,877 @@
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.ui;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.logging.Logger;
+
+import org.jsoup.nodes.Element;
+
+import com.vaadin.data.Result;
+import com.vaadin.data.validator.DateRangeValidator;
+import com.vaadin.event.FieldEvents.BlurEvent;
+import com.vaadin.event.FieldEvents.BlurListener;
+import com.vaadin.event.FieldEvents.FocusEvent;
+import com.vaadin.event.FieldEvents.FocusListener;
+import com.vaadin.server.PaintException;
+import com.vaadin.server.PaintTarget;
+import com.vaadin.server.UserError;
+import com.vaadin.shared.ui.datefield.DateFieldConstants;
+import com.vaadin.shared.ui.datefield.Resolution;
+import com.vaadin.shared.ui.datefield.TextualDateFieldState;
+import com.vaadin.ui.declarative.DesignAttributeHandler;
+import com.vaadin.ui.declarative.DesignContext;
+
+/**
+ * A date editor component with <code>java.util.Date</code> as an input value.
+ *
+ * @author Vaadin Ltd
+ *
+ * @since 8.0
+ *
+ */
+public abstract class AbstractDateField extends AbstractField<Date>
+ implements LegacyComponent {
+
+ /**
+ * Value of the field.
+ */
+ private Date value;
+
+ /**
+ * Specified smallest modifiable unit for the date field.
+ */
+ private Resolution resolution = Resolution.DAY;
+
+ /**
+ * The internal calendar to be used in java.utl.Date conversions.
+ */
+ private transient Calendar calendar;
+
+ /**
+ * Overridden format string
+ */
+ private String dateFormat;
+
+ private boolean lenient = false;
+
+ private String dateString = null;
+
+ private String currentParseErrorMessage;
+
+ /**
+ * Was the last entered string parsable? If this flag is false, datefields
+ * internal validator does not pass.
+ */
+ private boolean uiHasValidDateString = true;
+
+ /**
+ * Determines if week numbers are shown in the date selector.
+ */
+ private boolean showISOWeekNumbers = false;
+
+ private String defaultParseErrorMessage = "Date format not recognized";
+
+ private TimeZone timeZone = null;
+
+ private static Map<Resolution, String> variableNameForResolution = new HashMap<>();
+
+ private String dateOutOfRangeMessage = "Date is out of allowed range";
+
+ /**
+ * Determines whether the ValueChangeEvent should be fired. Used to prevent
+ * firing the event when UI has invalid string until uiHasValidDateString
+ * flag is set
+ */
+ private boolean preventValueChangeEvent;
+
+ static {
+ variableNameForResolution.put(Resolution.SECOND, "sec");
+ variableNameForResolution.put(Resolution.MINUTE, "min");
+ variableNameForResolution.put(Resolution.HOUR, "hour");
+ variableNameForResolution.put(Resolution.DAY, "day");
+ variableNameForResolution.put(Resolution.MONTH, "month");
+ variableNameForResolution.put(Resolution.YEAR, "year");
+ }
+
+ /* Constructors */
+
+ /**
+ * Constructs an empty <code>DateField</code> with no caption.
+ */
+ public AbstractDateField() {
+ }
+
+ /**
+ * Constructs an empty <code>DateField</code> with caption.
+ *
+ * @param caption
+ * the caption of the datefield.
+ */
+ public AbstractDateField(String caption) {
+ setCaption(caption);
+ }
+
+ /**
+ * Constructs a new <code>DateField</code> with the given caption and
+ * initial text contents.
+ *
+ * @param caption
+ * the caption <code>String</code> for the editor.
+ * @param value
+ * the Date value.
+ */
+ public AbstractDateField(String caption, Date value) {
+ setValue(value);
+ setCaption(caption);
+ }
+
+ /* Component basic features */
+
+ /*
+ * Paints this component. Don't add a JavaDoc comment here, we use the
+ * default documentation from implemented interface.
+ */
+ @Override
+ public void paintContent(PaintTarget target) throws PaintException {
+
+ // Adds the locale as attribute
+ final Locale l = getLocale();
+ if (l != null) {
+ target.addAttribute("locale", l.toString());
+ }
+
+ if (getDateFormat() != null) {
+ target.addAttribute("format", dateFormat);
+ }
+
+ if (!isLenient()) {
+ target.addAttribute("strict", true);
+ }
+
+ target.addAttribute(DateFieldConstants.ATTR_WEEK_NUMBERS,
+ isShowISOWeekNumbers());
+ target.addAttribute("parsable", uiHasValidDateString);
+ /*
+ * TODO communicate back the invalid date string? E.g. returning back to
+ * app or refresh.
+ */
+
+ // Gets the calendar
+ final Calendar calendar = getCalendar();
+ final Date currentDate = getValue();
+
+ // Only paint variables for the resolution and up, e.g. Resolution DAY
+ // paints DAY,MONTH,YEAR
+ for (Resolution res : Resolution
+ .getResolutionsHigherOrEqualTo(resolution)) {
+ int value = -1;
+ if (currentDate != null) {
+ value = calendar.get(res.getCalendarField());
+ if (res == Resolution.MONTH) {
+ // Calendar month is zero based
+ value++;
+ }
+ }
+ target.addVariable(this, variableNameForResolution.get(res), value);
+ }
+ }
+
+ /*
+ * Invoked when a variable of the component changes. Don't add a JavaDoc
+ * comment here, we use the default documentation from implemented
+ * interface.
+ */
+ @Override
+ public void changeVariables(Object source, Map<String, Object> variables) {
+
+ if (!isReadOnly() && (variables.containsKey("year")
+ || variables.containsKey("month")
+ || variables.containsKey("day") || variables.containsKey("hour")
+ || variables.containsKey("min") || variables.containsKey("sec")
+ || variables.containsKey("msec")
+ || variables.containsKey("dateString"))) {
+
+ // Old and new dates
+ final Date oldDate = getValue();
+ Date newDate = null;
+
+ // this enables analyzing invalid input on the server
+ final String newDateString = (String) variables.get("dateString");
+ dateString = newDateString;
+
+ // Gets the new date in parts
+ boolean hasChanges = false;
+ Map<Resolution, Integer> calendarFieldChanges = new HashMap<>();
+
+ for (Resolution r : Resolution
+ .getResolutionsHigherOrEqualTo(resolution)) {
+ // Only handle what the client is allowed to send. The same
+ // resolutions that are painted
+ String variableName = variableNameForResolution.get(r);
+
+ if (variables.containsKey(variableName)) {
+ Integer value = (Integer) variables.get(variableName);
+ if (r == Resolution.MONTH) {
+ // Calendar MONTH is zero based
+ value--;
+ }
+ if (value >= 0) {
+ hasChanges = true;
+ calendarFieldChanges.put(r, value);
+ }
+ }
+ }
+
+ // If no new variable values were received, use the previous value
+ if (!hasChanges) {
+ newDate = null;
+ } else {
+ // Clone the calendar for date operation
+ final Calendar cal = getCalendar();
+
+ // Update the value based on the received info
+ // Must set in this order to avoid invalid dates (or wrong
+ // dates if lenient is true) in calendar
+ for (int r = Resolution.YEAR.ordinal(); r >= 0; r--) {
+ Resolution res = Resolution.values()[r];
+ if (calendarFieldChanges.containsKey(res)) {
+
+ // Field resolution should be included. Others are
+ // skipped so that client can not make unexpected
+ // changes (e.g. day change even though resolution is
+ // year).
+ Integer newValue = calendarFieldChanges.get(res);
+ cal.set(res.getCalendarField(), newValue);
+ }
+ }
+ newDate = cal.getTime();
+ }
+
+ if (newDate == null && dateString != null
+ && !dateString.isEmpty()) {
+ Result<Date> parsedDate = handleUnparsableDateString(
+ dateString);
+ if (parsedDate.isError()) {
+
+ /*
+ * Saves the localized message of parse error. This can be
+ * overridden in handleUnparsableDateString. The message
+ * will later be used to show a validation error.
+ */
+ currentParseErrorMessage = parsedDate.getMessage().get();
+
+ /*
+ * The value of the DateField should be null if an invalid
+ * value has been given. Not using setValue() since we do
+ * not want to cause the client side value to change.
+ */
+ uiHasValidDateString = false;
+
+ /*
+ * Datefield now contains some text that could't be parsed
+ * into date. ValueChangeEvent is fired after the value is
+ * changed and the flags are set
+ */
+ if (oldDate != null) {
+ /*
+ * Set the logic value to null without firing the
+ * ValueChangeEvent
+ */
+ preventValueChangeEvent = true;
+ try {
+ setValue(null);
+ } finally {
+ preventValueChangeEvent = false;
+ }
+
+ /*
+ * Reset the dateString (overridden to null by setValue)
+ */
+ dateString = newDateString;
+ }
+
+ /*
+ * If value was changed fire the ValueChangeEvent
+ */
+ if (oldDate != null) {
+ fireEvent(createValueChange(true));
+ }
+
+ markAsDirty();
+ } else {
+ parsedDate.ifOk(value -> setValue(value, true));
+
+ /*
+ * Ensure the value is sent to the client if the value is
+ * set to the same as the previous (#4304). Does not repaint
+ * if handleUnparsableDateString throws an exception. In
+ * this case the invalid text remains in the DateField.
+ */
+ markAsDirty();
+ }
+
+ } else if (newDate != oldDate
+ && (newDate == null || !newDate.equals(oldDate))) {
+ setValue(newDate, true); // Don't require a repaint, client
+ // updates itself
+ } else if (!uiHasValidDateString) { // oldDate ==
+ // newDate == null
+ // Empty value set, previously contained unparsable date string,
+ // clear related internal fields
+ setValue(null);
+ }
+ }
+
+ if (variables.containsKey(FocusEvent.EVENT_ID)) {
+ fireEvent(new FocusEvent(this));
+ }
+
+ if (variables.containsKey(BlurEvent.EVENT_ID)) {
+ fireEvent(new BlurEvent(this));
+ }
+ }
+
+ /**
+ * Sets the start range for this component. If the value is set before this
+ * date (taking the resolution into account), the component will not
+ * validate. If <code>startDate</code> is set to <code>null</code>, any
+ * value before <code>endDate</code> will be accepted by the range
+ *
+ * @param startDate
+ * - the allowed range's start date
+ */
+ public void setRangeStart(Date startDate) {
+ if (startDate != null && getState().rangeEnd != null
+ && startDate.after(getState().rangeEnd)) {
+ throw new IllegalStateException(
+ "startDate cannot be later than endDate");
+ }
+
+ // Create a defensive copy against issues when using java.sql.Date (and
+ // also against mutable Date).
+ getState().rangeStart = startDate != null
+ ? new Date(startDate.getTime()) : null;
+ }
+
+ /**
+ * Sets the current error message if the range validation fails.
+ *
+ * @param dateOutOfRangeMessage
+ * - Localizable message which is shown when value (the date) is
+ * set outside allowed range
+ */
+ public void setDateOutOfRangeMessage(String dateOutOfRangeMessage) {
+ this.dateOutOfRangeMessage = dateOutOfRangeMessage;
+ }
+
+ /**
+ * Returns current date-out-of-range error message.
+ *
+ * @see #setDateOutOfRangeMessage(String)
+ * @return Current error message for dates out of range.
+ */
+ public String getDateOutOfRangeMessage() {
+ return dateOutOfRangeMessage;
+ }
+
+ /**
+ * Gets the resolution.
+ *
+ * @return int
+ */
+ public Resolution getResolution() {
+ return resolution;
+ }
+
+ /**
+ * Sets the resolution of the DateField.
+ *
+ * The default resolution is {@link Resolution#DAY} since Vaadin 7.0.
+ *
+ * @param resolution
+ * the resolution to set.
+ */
+ public void setResolution(Resolution resolution) {
+ this.resolution = resolution;
+ markAsDirty();
+ }
+
+ /**
+ * Sets the end range for this component. If the value is set after this
+ * date (taking the resolution into account), the component will not
+ * validate. If <code>endDate</code> is set to <code>null</code>, any value
+ * after <code>startDate</code> will be accepted by the range.
+ *
+ * @param endDate
+ * - the allowed range's end date (inclusive, based on the
+ * current resolution)
+ */
+ public void setRangeEnd(Date endDate) {
+ if (endDate != null && getState().rangeStart != null
+ && getState().rangeStart.after(endDate)) {
+ throw new IllegalStateException(
+ "endDate cannot be earlier than startDate");
+ }
+
+ // Create a defensive copy against issues when using java.sql.Date (and
+ // also against mutable Date).
+ getState().rangeEnd = endDate != null ? new Date(endDate.getTime())
+ : null;
+ }
+
+ /**
+ * Returns the precise rangeStart used.
+ *
+ * @return the precise rangeStart used
+ */
+ public Date getRangeStart() {
+ return getState(false).rangeStart;
+ }
+
+ /**
+ * Returns the precise rangeEnd used.
+ *
+ * @return the precise rangeEnd used
+ */
+ public Date getRangeEnd() {
+ return getState(false).rangeEnd;
+ }
+
+ /**
+ * Sets formatting used by some component implementations. See
+ * {@link SimpleDateFormat} for format details.
+ *
+ * By default it is encouraged to used default formatting defined by Locale,
+ * but due some JVM bugs it is sometimes necessary to use this method to
+ * override formatting. See Vaadin issue #2200.
+ *
+ * @param dateFormat
+ * the dateFormat to set
+ *
+ * @see com.vaadin.ui.AbstractComponent#setLocale(Locale))
+ */
+ public void setDateFormat(String dateFormat) {
+ this.dateFormat = dateFormat;
+ markAsDirty();
+ }
+
+ /**
+ * Returns a format string used to format date value on client side or null
+ * if default formatting from {@link Component#getLocale()} is used.
+ *
+ * @return the dateFormat
+ */
+ public String getDateFormat() {
+ return dateFormat;
+ }
+
+ /**
+ * Specifies whether or not date/time interpretation in component is to be
+ * lenient.
+ *
+ * @see Calendar#setLenient(boolean)
+ * @see #isLenient()
+ *
+ * @param lenient
+ * true if the lenient mode is to be turned on; false if it is to
+ * be turned off.
+ */
+ public void setLenient(boolean lenient) {
+ this.lenient = lenient;
+ markAsDirty();
+ }
+
+ /**
+ * Returns whether date/time interpretation is to be lenient.
+ *
+ * @see #setLenient(boolean)
+ *
+ * @return true if the interpretation mode of this calendar is lenient;
+ * false otherwise.
+ */
+ public boolean isLenient() {
+ return lenient;
+ }
+
+ @Override
+ public Date getValue() {
+ return value;
+ }
+
+ @Override
+ public void setValue(Date value) {
+ /*
+ * First handle special case when the client side component have a date
+ * string but value is null (e.g. unparsable date string typed in by the
+ * user). No value changes should happen, but we need to do some
+ * internal housekeeping.
+ */
+ if (value == null && !uiHasValidDateString) {
+ /*
+ * Side-effects of doSetValue clears possible previous strings and
+ * flags about invalid input.
+ */
+ doSetValue(null);
+
+ markAsDirty();
+ return;
+ }
+ super.setValue(value);
+ }
+
+ /**
+ * Checks whether ISO 8601 week numbers are shown in the date selector.
+ *
+ * @return true if week numbers are shown, false otherwise.
+ */
+ public boolean isShowISOWeekNumbers() {
+ return showISOWeekNumbers;
+ }
+
+ /**
+ * Sets the visibility of ISO 8601 week numbers in the date selector. ISO
+ * 8601 defines that a week always starts with a Monday so the week numbers
+ * are only shown if this is the case.
+ *
+ * @param showWeekNumbers
+ * true if week numbers should be shown, false otherwise.
+ */
+ public void setShowISOWeekNumbers(boolean showWeekNumbers) {
+ showISOWeekNumbers = showWeekNumbers;
+ markAsDirty();
+ }
+
+ /**
+ * Returns new instance calendar used in Date conversions.
+ *
+ * Returns new clone of the calendar object initialized using the the
+ * current date (if available)
+ *
+ * If this is no calendar is assigned the <code>Calendar.getInstance</code>
+ * is used.
+ *
+ * @return the Calendar.
+ * @see #setCalendar(Calendar)
+ */
+ private Calendar getCalendar() {
+
+ // Makes sure we have an calendar instance
+ if (calendar == null) {
+ calendar = Calendar.getInstance();
+ // Start by a zeroed calendar to avoid having values for lower
+ // resolution variables e.g. time when resolution is day
+ int min, field;
+ for (Resolution r : Resolution
+ .getResolutionsLowerThan(resolution)) {
+ field = r.getCalendarField();
+ min = calendar.getActualMinimum(field);
+ calendar.set(field, min);
+ }
+ calendar.set(Calendar.MILLISECOND, 0);
+ }
+
+ // Clone the instance
+ final Calendar newCal = (Calendar) calendar.clone();
+
+ final TimeZone currentTimeZone = getTimeZone();
+ if (currentTimeZone != null) {
+ newCal.setTimeZone(currentTimeZone);
+ }
+
+ final Date currentDate = getValue();
+ if (currentDate != null) {
+ newCal.setTime(currentDate);
+ }
+ return newCal;
+ }
+
+ /**
+ * Gets the time zone used by this field. The time zone is used to convert
+ * the absolute time in a Date object to a logical time displayed in the
+ * selector and to convert the select time back to a Date object.
+ *
+ * If {@code null} is returned, the current default time zone returned by
+ * {@code TimeZone.getDefault()} is used.
+ *
+ * @return the current time zone
+ */
+ public TimeZone getTimeZone() {
+ return timeZone;
+ }
+
+ /**
+ * Return the error message that is shown if the user inputted value can't
+ * be parsed into a Date object. If
+ * {@link #handleUnparsableDateString(String)} is overridden and it throws a
+ * custom exception, the message returned by
+ * {@link Exception#getLocalizedMessage()} will be used instead of the value
+ * returned by this method.
+ *
+ * @see #setParseErrorMessage(String)
+ *
+ * @return the error message that the DateField uses when it can't parse the
+ * textual input from user to a Date object
+ */
+ public String getParseErrorMessage() {
+ return defaultParseErrorMessage;
+ }
+
+ /**
+ * Sets the default error message used if the DateField cannot parse the
+ * text input by user to a Date field. Note that if the
+ * {@link #handleUnparsableDateString(String)} method is overridden, the
+ * localized message from its exception is used.
+ *
+ * @see #getParseErrorMessage()
+ * @see #handleUnparsableDateString(String)
+ * @param parsingErrorMessage
+ */
+ public void setParseErrorMessage(String parsingErrorMessage) {
+ defaultParseErrorMessage = parsingErrorMessage;
+ }
+
+ /**
+ * Sets the time zone used by this date field. The time zone is used to
+ * convert the absolute time in a Date object to a logical time displayed in
+ * the selector and to convert the select time back to a Date object.
+ *
+ * If no time zone has been set, the current default time zone returned by
+ * {@code TimeZone.getDefault()} is used.
+ *
+ * @see #getTimeZone()
+ * @param timeZone
+ * the time zone to use for time calculations.
+ */
+ public void setTimeZone(TimeZone timeZone) {
+ this.timeZone = timeZone;
+ markAsDirty();
+ }
+
+ /**
+ * Adds a <code>FocusListener</code> to the Component which gets fired when
+ * a <code>LegacyField</code> receives keyboard focus.
+ *
+ * @param listener
+ * @see FocusListener
+ */
+ public void addFocusListener(FocusListener listener) {
+ addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener,
+ FocusListener.focusMethod);
+ }
+
+ /**
+ * Removes a <code>FocusListener</code> from the Component.
+ *
+ * @param listener
+ * @see FocusListener
+ */
+ public void removeFocusListener(FocusListener listener) {
+ removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener);
+ }
+
+ /**
+ * Adds a <code>BlurListener</code> to the Component which gets fired when a
+ * <code>LegacyField</code> loses keyboard focus.
+ *
+ * @param listener
+ * @see BlurListener
+ */
+ public void addBlurListener(BlurListener listener) {
+ addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener,
+ BlurListener.blurMethod);
+ }
+
+ /**
+ * Removes a <code>BlurListener</code> from the Component.
+ *
+ * @param listener
+ * @see BlurListener
+ */
+ public void removeBlurListener(BlurListener listener) {
+ removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener);
+ }
+
+ @Override
+ public void readDesign(Element design, DesignContext designContext) {
+ super.readDesign(design, designContext);
+ if (design.hasAttr("value") && !design.attr("value").isEmpty()) {
+ Date date = DesignAttributeHandler.getFormatter()
+ .parse(design.attr("value"), Date.class);
+ // formatting will return null if it cannot parse the string
+ if (date == null) {
+ Logger.getLogger(AbstractDateField.class.getName()).info(
+ "cannot parse " + design.attr("value") + " as date");
+ }
+ setValue(date);
+ }
+ }
+
+ @Override
+ public void writeDesign(Element design, DesignContext designContext) {
+ super.writeDesign(design, designContext);
+ if (getValue() != null) {
+ design.attr("value",
+ DesignAttributeHandler.getFormatter().format(getValue()));
+ }
+ }
+
+ @Override
+ protected void fireEvent(EventObject event) {
+ if (event instanceof ValueChange) {
+ if (!preventValueChangeEvent) {
+ super.fireEvent(event);
+ }
+ } else {
+ super.fireEvent(event);
+ }
+ }
+
+ /**
+ * This method is called to handle a non-empty date string from the client
+ * if the client could not parse it as a Date.
+ *
+ * By default, an error result is returned whose error message is
+ * {@link #getParseErrorMessage()}.
+ *
+ * This can be overridden to handle conversions, to return a result with
+ * {@code null} value (equivalent to empty input) or to return a custom
+ * error.
+ *
+ * @param dateString
+ * date string to handle
+ * @return result that contains parsed Date as a value or an error
+ */
+ protected Result<Date> handleUnparsableDateString(String dateString) {
+ return Result.error(getParseErrorMessage());
+ }
+
+ @Override
+ protected TextualDateFieldState getState() {
+ return (TextualDateFieldState) super.getState();
+ }
+
+ @Override
+ protected TextualDateFieldState getState(boolean markAsDirty) {
+ return (TextualDateFieldState) super.getState(markAsDirty);
+ }
+
+ @Override
+ protected void doSetValue(Date value) {
+ // Also set the internal dateString
+ if (value != null) {
+ dateString = value.toString();
+ } else {
+ dateString = null;
+ }
+
+ this.value = value;
+ setComponentError(null);
+ if (!uiHasValidDateString) {
+ // clear component error and parsing flag
+ uiHasValidDateString = true;
+ setComponentError(new UserError(currentParseErrorMessage));
+ } else {
+ DateRangeValidator validator = new DateRangeValidator(
+ getDateOutOfRangeMessage(), getRangeStart(getResolution()),
+ getRangeEnd(getResolution()), getResolution());
+ Result<Date> result = validator.apply(value);
+ if (result.isError()) {
+ setComponentError(new UserError(getDateOutOfRangeMessage()));
+ }
+ }
+ }
+
+ /**
+ * Gets the start range for a certain resolution. The range is inclusive, so
+ * if <code>rangeStart</code> is set to one millisecond before year n and
+ * resolution is set to YEAR, any date in year n - 1 will be accepted.
+ * Lowest supported resolution is DAY.
+ *
+ * @param forResolution
+ * - the range conforms to the resolution
+ * @return
+ */
+ private Date getRangeStart(Resolution forResolution) {
+ if (getState(false).rangeStart == null) {
+ return null;
+ }
+ Calendar startCal = Calendar.getInstance();
+ startCal.setTime(getState(false).rangeStart);
+
+ if (forResolution == Resolution.YEAR) {
+ startCal.set(startCal.get(Calendar.YEAR), 0, 1, 0, 0, 0);
+ } else if (forResolution == Resolution.MONTH) {
+ startCal.set(startCal.get(Calendar.YEAR),
+ startCal.get(Calendar.MONTH), 1, 0, 0, 0);
+ } else {
+ startCal.set(startCal.get(Calendar.YEAR),
+ startCal.get(Calendar.MONTH), startCal.get(Calendar.DATE),
+ 0, 0, 0);
+ }
+
+ startCal.set(Calendar.MILLISECOND, 0);
+ return startCal.getTime();
+ }
+
+ /**
+ * Gets the end range for a certain resolution. The range is inclusive, so
+ * if rangeEnd is set to zero milliseconds past year n and resolution is set
+ * to YEAR, any date in year n will be accepted. Resolutions lower than DAY
+ * will be interpreted on a DAY level. That is, everything below DATE is
+ * cleared
+ *
+ * @param forResolution
+ * - the range conforms to the resolution
+ * @return
+ */
+ private Date getRangeEnd(Resolution forResolution) {
+ // We need to set the correct resolution for the dates,
+ // otherwise the range validator will complain
+
+ Date rangeEnd = getState(false).rangeEnd;
+ if (rangeEnd == null) {
+ return null;
+ }
+
+ Calendar endCal = Calendar.getInstance();
+ endCal.setTime(rangeEnd);
+
+ if (forResolution == Resolution.YEAR) {
+ // Adding one year (minresolution) and clearing the rest.
+ endCal.set(endCal.get(Calendar.YEAR) + 1, 0, 1, 0, 0, 0);
+ } else if (forResolution == Resolution.MONTH) {
+ // Adding one month (minresolution) and clearing the rest.
+ endCal.set(endCal.get(Calendar.YEAR),
+ endCal.get(Calendar.MONTH) + 1, 1, 0, 0, 0);
+ } else {
+ endCal.set(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH),
+ endCal.get(Calendar.DATE) + 1, 0, 0, 0);
+ }
+ // removing one millisecond will now get the endDate to return to
+ // current resolution's set time span (year or month)
+ endCal.set(Calendar.MILLISECOND, -1);
+ return endCal.getTime();
+ }
+
+}
diff --git a/server/src/main/java/com/vaadin/ui/DateField.java b/server/src/main/java/com/vaadin/ui/DateField.java
index 9fbfbabccb..00e71a6eff 100644
--- a/server/src/main/java/com/vaadin/ui/DateField.java
+++ b/server/src/main/java/com/vaadin/ui/DateField.java
@@ -15,124 +15,33 @@
*/
package com.vaadin.ui;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
import java.util.Date;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-import java.util.logging.Logger;
-import org.jsoup.nodes.Element;
-
-import com.vaadin.data.Result;
-import com.vaadin.data.validator.DateRangeValidator;
-import com.vaadin.event.FieldEvents.BlurEvent;
-import com.vaadin.event.FieldEvents.BlurListener;
-import com.vaadin.event.FieldEvents.FocusEvent;
-import com.vaadin.event.FieldEvents.FocusListener;
import com.vaadin.server.PaintException;
import com.vaadin.server.PaintTarget;
-import com.vaadin.server.UserError;
-import com.vaadin.shared.ui.datefield.DateFieldConstants;
-import com.vaadin.shared.ui.datefield.Resolution;
-import com.vaadin.shared.ui.datefield.TextualDateFieldState;
-import com.vaadin.ui.declarative.DesignAttributeHandler;
-import com.vaadin.ui.declarative.DesignContext;
+import com.vaadin.shared.ui.datefield.PopupDateFieldState;
/**
- * A date editor component with <code>java.util.Date</code> as an input value.
- *
- * @author Vaadin Ltd
+ * A date entry component, which displays the actual date selector as a popup.
*
+ * @see AbstractDateField
+ * @see InlineDateField
+ * @author Vaadin Ltd.
* @since 8.0
- *
*/
-public class DateField extends AbstractField<Date> implements LegacyComponent {
-
- /**
- * Value of the field.
- */
- private Date value;
-
- /**
- * Specified smallest modifiable unit for the date field.
- */
- private Resolution resolution = Resolution.DAY;
+public class DateField extends AbstractDateField {
- /**
- * The internal calendar to be used in java.utl.Date conversions.
- */
- private transient Calendar calendar;
+ private String inputPrompt = null;
/**
- * Overridden format string
- */
- private String dateFormat;
-
- private boolean lenient = false;
-
- private String dateString = null;
-
- private String currentParseErrorMessage;
-
- /**
- * Was the last entered string parsable? If this flag is false, datefields
- * internal validator does not pass.
- */
- private boolean uiHasValidDateString = true;
-
- /**
- * Determines if week numbers are shown in the date selector.
- */
- private boolean showISOWeekNumbers = false;
-
- private String defaultParseErrorMessage = "Date format not recognized";
-
- private TimeZone timeZone = null;
-
- private static Map<Resolution, String> variableNameForResolution = new HashMap<>();
-
- private String dateOutOfRangeMessage = "Date is out of allowed range";
-
- /**
- * Determines whether the ValueChangeEvent should be fired. Used to prevent
- * firing the event when UI has invalid string until uiHasValidDateString
- * flag is set
- */
- private boolean preventValueChangeEvent;
-
- static {
- variableNameForResolution.put(Resolution.SECOND, "sec");
- variableNameForResolution.put(Resolution.MINUTE, "min");
- variableNameForResolution.put(Resolution.HOUR, "hour");
- variableNameForResolution.put(Resolution.DAY, "day");
- variableNameForResolution.put(Resolution.MONTH, "month");
- variableNameForResolution.put(Resolution.YEAR, "year");
- }
-
- /* Constructors */
-
- /**
- * Constructs an empty <code>DateField</code> with no caption.
+ * Constructs an empty <code>PopupDateField</code> with no caption.
*/
public DateField() {
+ super();
}
/**
- * Constructs an empty <code>DateField</code> with caption.
- *
- * @param caption
- * the caption of the datefield.
- */
- public DateField(String caption) {
- setCaption(caption);
- }
-
- /**
- * Constructs a new <code>DateField</code> with the given caption and
+ * Constructs a new <code>PopupDateField</code> with the given caption and
* initial text contents.
*
* @param caption
@@ -141,736 +50,102 @@ public class DateField extends AbstractField<Date> implements LegacyComponent {
* the Date value.
*/
public DateField(String caption, Date value) {
- setValue(value);
- setCaption(caption);
- }
-
- /* Component basic features */
-
- /*
- * Paints this component. Don't add a JavaDoc comment here, we use the
- * default documentation from implemented interface.
- */
- @Override
- public void paintContent(PaintTarget target) throws PaintException {
-
- // Adds the locale as attribute
- final Locale l = getLocale();
- if (l != null) {
- target.addAttribute("locale", l.toString());
- }
-
- if (getDateFormat() != null) {
- target.addAttribute("format", dateFormat);
- }
-
- if (!isLenient()) {
- target.addAttribute("strict", true);
- }
-
- target.addAttribute(DateFieldConstants.ATTR_WEEK_NUMBERS,
- isShowISOWeekNumbers());
- target.addAttribute("parsable", uiHasValidDateString);
- /*
- * TODO communicate back the invalid date string? E.g. returning back to
- * app or refresh.
- */
-
- // Gets the calendar
- final Calendar calendar = getCalendar();
- final Date currentDate = getValue();
-
- // Only paint variables for the resolution and up, e.g. Resolution DAY
- // paints DAY,MONTH,YEAR
- for (Resolution res : Resolution
- .getResolutionsHigherOrEqualTo(resolution)) {
- int value = -1;
- if (currentDate != null) {
- value = calendar.get(res.getCalendarField());
- if (res == Resolution.MONTH) {
- // Calendar month is zero based
- value++;
- }
- }
- target.addVariable(this, variableNameForResolution.get(res), value);
- }
- }
-
- /*
- * Invoked when a variable of the component changes. Don't add a JavaDoc
- * comment here, we use the default documentation from implemented
- * interface.
- */
- @Override
- public void changeVariables(Object source, Map<String, Object> variables) {
-
- if (!isReadOnly() && (variables.containsKey("year")
- || variables.containsKey("month")
- || variables.containsKey("day") || variables.containsKey("hour")
- || variables.containsKey("min") || variables.containsKey("sec")
- || variables.containsKey("msec")
- || variables.containsKey("dateString"))) {
-
- // Old and new dates
- final Date oldDate = getValue();
- Date newDate = null;
-
- // this enables analyzing invalid input on the server
- final String newDateString = (String) variables.get("dateString");
- dateString = newDateString;
-
- // Gets the new date in parts
- boolean hasChanges = false;
- Map<Resolution, Integer> calendarFieldChanges = new HashMap<>();
-
- for (Resolution r : Resolution
- .getResolutionsHigherOrEqualTo(resolution)) {
- // Only handle what the client is allowed to send. The same
- // resolutions that are painted
- String variableName = variableNameForResolution.get(r);
-
- if (variables.containsKey(variableName)) {
- Integer value = (Integer) variables.get(variableName);
- if (r == Resolution.MONTH) {
- // Calendar MONTH is zero based
- value--;
- }
- if (value >= 0) {
- hasChanges = true;
- calendarFieldChanges.put(r, value);
- }
- }
- }
-
- // If no new variable values were received, use the previous value
- if (!hasChanges) {
- newDate = null;
- } else {
- // Clone the calendar for date operation
- final Calendar cal = getCalendar();
-
- // Update the value based on the received info
- // Must set in this order to avoid invalid dates (or wrong
- // dates if lenient is true) in calendar
- for (int r = Resolution.YEAR.ordinal(); r >= 0; r--) {
- Resolution res = Resolution.values()[r];
- if (calendarFieldChanges.containsKey(res)) {
-
- // Field resolution should be included. Others are
- // skipped so that client can not make unexpected
- // changes (e.g. day change even though resolution is
- // year).
- Integer newValue = calendarFieldChanges.get(res);
- cal.set(res.getCalendarField(), newValue);
- }
- }
- newDate = cal.getTime();
- }
-
- if (newDate == null && dateString != null
- && !dateString.isEmpty()) {
- Result<Date> parsedDate = handleUnparsableDateString(
- dateString);
- if (parsedDate.isError()) {
-
- /*
- * Saves the localized message of parse error. This can be
- * overridden in handleUnparsableDateString. The message
- * will later be used to show a validation error.
- */
- currentParseErrorMessage = parsedDate.getMessage().get();
-
- /*
- * The value of the DateField should be null if an invalid
- * value has been given. Not using setValue() since we do
- * not want to cause the client side value to change.
- */
- uiHasValidDateString = false;
-
- /*
- * Datefield now contains some text that could't be parsed
- * into date. ValueChangeEvent is fired after the value is
- * changed and the flags are set
- */
- if (oldDate != null) {
- /*
- * Set the logic value to null without firing the
- * ValueChangeEvent
- */
- preventValueChangeEvent = true;
- try {
- setValue(null);
- } finally {
- preventValueChangeEvent = false;
- }
-
- /*
- * Reset the dateString (overridden to null by setValue)
- */
- dateString = newDateString;
- }
-
- /*
- * If value was changed fire the ValueChangeEvent
- */
- if (oldDate != null) {
- fireEvent(createValueChange(true));
- }
-
- markAsDirty();
- } else {
- parsedDate.ifOk(value -> setValue(value, true));
-
- /*
- * Ensure the value is sent to the client if the value is
- * set to the same as the previous (#4304). Does not repaint
- * if handleUnparsableDateString throws an exception. In
- * this case the invalid text remains in the DateField.
- */
- markAsDirty();
- }
-
- } else if (newDate != oldDate
- && (newDate == null || !newDate.equals(oldDate))) {
- setValue(newDate, true); // Don't require a repaint, client
- // updates itself
- } else if (!uiHasValidDateString) { // oldDate ==
- // newDate == null
- // Empty value set, previously contained unparsable date string,
- // clear related internal fields
- setValue(null);
- }
- }
-
- if (variables.containsKey(FocusEvent.EVENT_ID)) {
- fireEvent(new FocusEvent(this));
- }
-
- if (variables.containsKey(BlurEvent.EVENT_ID)) {
- fireEvent(new BlurEvent(this));
- }
- }
-
- /**
- * Sets the start range for this component. If the value is set before this
- * date (taking the resolution into account), the component will not
- * validate. If <code>startDate</code> is set to <code>null</code>, any
- * value before <code>endDate</code> will be accepted by the range
- *
- * @param startDate
- * - the allowed range's start date
- */
- public void setRangeStart(Date startDate) {
- if (startDate != null && getState().rangeEnd != null
- && startDate.after(getState().rangeEnd)) {
- throw new IllegalStateException(
- "startDate cannot be later than endDate");
- }
-
- // Create a defensive copy against issues when using java.sql.Date (and
- // also against mutable Date).
- getState().rangeStart = startDate != null
- ? new Date(startDate.getTime()) : null;
+ super(caption, value);
}
/**
- * Sets the current error message if the range validation fails.
+ * Constructs an empty <code>PopupDateField</code> with caption.
*
- * @param dateOutOfRangeMessage
- * - Localizable message which is shown when value (the date) is
- * set outside allowed range
- */
- public void setDateOutOfRangeMessage(String dateOutOfRangeMessage) {
- this.dateOutOfRangeMessage = dateOutOfRangeMessage;
- }
-
- /**
- * Returns current date-out-of-range error message.
- *
- * @see #setDateOutOfRangeMessage(String)
- * @return Current error message for dates out of range.
- */
- public String getDateOutOfRangeMessage() {
- return dateOutOfRangeMessage;
- }
-
- /**
- * Gets the resolution.
- *
- * @return int
+ * @param caption
+ * the caption of the datefield.
*/
- public Resolution getResolution() {
- return resolution;
+ public DateField(String caption) {
+ super(caption);
}
- /**
- * Sets the resolution of the DateField.
- *
- * The default resolution is {@link Resolution#DAY} since Vaadin 7.0.
- *
- * @param resolution
- * the resolution to set.
- */
- public void setResolution(Resolution resolution) {
- this.resolution = resolution;
- markAsDirty();
- }
+ @Override
+ public void paintContent(PaintTarget target) throws PaintException {
+ super.paintContent(target);
- /**
- * Sets the end range for this component. If the value is set after this
- * date (taking the resolution into account), the component will not
- * validate. If <code>endDate</code> is set to <code>null</code>, any value
- * after <code>startDate</code> will be accepted by the range.
- *
- * @param endDate
- * - the allowed range's end date (inclusive, based on the
- * current resolution)
- */
- public void setRangeEnd(Date endDate) {
- if (endDate != null && getState().rangeStart != null
- && getState().rangeStart.after(endDate)) {
- throw new IllegalStateException(
- "endDate cannot be earlier than startDate");
+ if (inputPrompt != null) {
+ target.addAttribute("prompt", inputPrompt);
}
-
- // Create a defensive copy against issues when using java.sql.Date (and
- // also against mutable Date).
- getState().rangeEnd = endDate != null ? new Date(endDate.getTime())
- : null;
}
/**
- * Returns the precise rangeStart used.
+ * Gets the current input prompt.
*
- * @return the precise rangeStart used
+ * @see #setInputPrompt(String)
+ * @return the current input prompt, or null if not enabled
*/
- public Date getRangeStart() {
- return getState(false).rangeStart;
+ public String getInputPrompt() {
+ return inputPrompt;
}
/**
- * Returns the precise rangeEnd used.
+ * Sets the input prompt - a textual prompt that is displayed when the field
+ * would otherwise be empty, to prompt the user for input.
*
- * @return the precise rangeEnd used
+ * @param inputPrompt
*/
- public Date getRangeEnd() {
- return getState(false).rangeEnd;
- }
-
- /**
- * Sets formatting used by some component implementations. See
- * {@link SimpleDateFormat} for format details.
- *
- * By default it is encouraged to used default formatting defined by Locale,
- * but due some JVM bugs it is sometimes necessary to use this method to
- * override formatting. See Vaadin issue #2200.
- *
- * @param dateFormat
- * the dateFormat to set
- *
- * @see com.vaadin.ui.AbstractComponent#setLocale(Locale))
- */
- public void setDateFormat(String dateFormat) {
- this.dateFormat = dateFormat;
+ public void setInputPrompt(String inputPrompt) {
+ this.inputPrompt = inputPrompt;
markAsDirty();
}
- /**
- * Returns a format string used to format date value on client side or null
- * if default formatting from {@link Component#getLocale()} is used.
- *
- * @return the dateFormat
- */
- public String getDateFormat() {
- return dateFormat;
- }
-
- /**
- * Specifies whether or not date/time interpretation in component is to be
- * lenient.
- *
- * @see Calendar#setLenient(boolean)
- * @see #isLenient()
- *
- * @param lenient
- * true if the lenient mode is to be turned on; false if it is to
- * be turned off.
- */
- public void setLenient(boolean lenient) {
- this.lenient = lenient;
- markAsDirty();
- }
-
- /**
- * Returns whether date/time interpretation is to be lenient.
- *
- * @see #setLenient(boolean)
- *
- * @return true if the interpretation mode of this calendar is lenient;
- * false otherwise.
- */
- public boolean isLenient() {
- return lenient;
- }
-
@Override
- public Date getValue() {
- return value;
+ protected PopupDateFieldState getState() {
+ return (PopupDateFieldState) super.getState();
}
@Override
- public void setValue(Date value) {
- /*
- * First handle special case when the client side component have a date
- * string but value is null (e.g. unparsable date string typed in by the
- * user). No value changes should happen, but we need to do some
- * internal housekeeping.
- */
- if (value == null && !uiHasValidDateString) {
- /*
- * Side-effects of doSetValue clears possible previous strings and
- * flags about invalid input.
- */
- doSetValue(null);
-
- markAsDirty();
- return;
- }
- super.setValue(value);
- }
-
- /**
- * Checks whether ISO 8601 week numbers are shown in the date selector.
- *
- * @return true if week numbers are shown, false otherwise.
- */
- public boolean isShowISOWeekNumbers() {
- return showISOWeekNumbers;
- }
-
- /**
- * Sets the visibility of ISO 8601 week numbers in the date selector. ISO
- * 8601 defines that a week always starts with a Monday so the week numbers
- * are only shown if this is the case.
- *
- * @param showWeekNumbers
- * true if week numbers should be shown, false otherwise.
- */
- public void setShowISOWeekNumbers(boolean showWeekNumbers) {
- showISOWeekNumbers = showWeekNumbers;
- markAsDirty();
- }
-
- /**
- * Returns new instance calendar used in Date conversions.
- *
- * Returns new clone of the calendar object initialized using the the
- * current date (if available)
- *
- * If this is no calendar is assigned the <code>Calendar.getInstance</code>
- * is used.
- *
- * @return the Calendar.
- * @see #setCalendar(Calendar)
- */
- private Calendar getCalendar() {
-
- // Makes sure we have an calendar instance
- if (calendar == null) {
- calendar = Calendar.getInstance();
- // Start by a zeroed calendar to avoid having values for lower
- // resolution variables e.g. time when resolution is day
- int min, field;
- for (Resolution r : Resolution
- .getResolutionsLowerThan(resolution)) {
- field = r.getCalendarField();
- min = calendar.getActualMinimum(field);
- calendar.set(field, min);
- }
- calendar.set(Calendar.MILLISECOND, 0);
- }
-
- // Clone the instance
- final Calendar newCal = (Calendar) calendar.clone();
-
- final TimeZone currentTimeZone = getTimeZone();
- if (currentTimeZone != null) {
- newCal.setTimeZone(currentTimeZone);
- }
-
- final Date currentDate = getValue();
- if (currentDate != null) {
- newCal.setTime(currentDate);
- }
- return newCal;
- }
-
- /**
- * Gets the time zone used by this field. The time zone is used to convert
- * the absolute time in a Date object to a logical time displayed in the
- * selector and to convert the select time back to a Date object.
- *
- * If {@code null} is returned, the current default time zone returned by
- * {@code TimeZone.getDefault()} is used.
- *
- * @return the current time zone
- */
- public TimeZone getTimeZone() {
- return timeZone;
- }
-
- /**
- * Return the error message that is shown if the user inputted value can't
- * be parsed into a Date object. If
- * {@link #handleUnparsableDateString(String)} is overridden and it throws a
- * custom exception, the message returned by
- * {@link Exception#getLocalizedMessage()} will be used instead of the value
- * returned by this method.
- *
- * @see #setParseErrorMessage(String)
- *
- * @return the error message that the DateField uses when it can't parse the
- * textual input from user to a Date object
- */
- public String getParseErrorMessage() {
- return defaultParseErrorMessage;
- }
-
- /**
- * Sets the default error message used if the DateField cannot parse the
- * text input by user to a Date field. Note that if the
- * {@link #handleUnparsableDateString(String)} method is overridden, the
- * localized message from its exception is used.
- *
- * @see #getParseErrorMessage()
- * @see #handleUnparsableDateString(String)
- * @param parsingErrorMessage
- */
- public void setParseErrorMessage(String parsingErrorMessage) {
- defaultParseErrorMessage = parsingErrorMessage;
- }
-
- /**
- * Sets the time zone used by this date field. The time zone is used to
- * convert the absolute time in a Date object to a logical time displayed in
- * the selector and to convert the select time back to a Date object.
- *
- * If no time zone has been set, the current default time zone returned by
- * {@code TimeZone.getDefault()} is used.
- *
- * @see #getTimeZone()
- * @param timeZone
- * the time zone to use for time calculations.
- */
- public void setTimeZone(TimeZone timeZone) {
- this.timeZone = timeZone;
- markAsDirty();
- }
-
- /**
- * Adds a <code>FocusListener</code> to the Component which gets fired when
- * a <code>LegacyField</code> receives keyboard focus.
- *
- * @param listener
- * @see FocusListener
- */
- public void addFocusListener(FocusListener listener) {
- addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener,
- FocusListener.focusMethod);
+ protected PopupDateFieldState getState(boolean markAsDirty) {
+ return (PopupDateFieldState) super.getState(markAsDirty);
}
/**
- * Removes a <code>FocusListener</code> from the Component.
+ * Checks whether the text field is enabled (default) or not.
*
- * @param listener
- * @see FocusListener
- */
- public void removeFocusListener(FocusListener listener) {
- removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener);
- }
-
- /**
- * Adds a <code>BlurListener</code> to the Component which gets fired when a
- * <code>LegacyField</code> loses keyboard focus.
+ * @see PopupDateField#setTextFieldEnabled(boolean);
*
- * @param listener
- * @see BlurListener
+ * @return <b>true</b> if the text field is enabled, <b>false</b> otherwise.
*/
- public void addBlurListener(BlurListener listener) {
- addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener,
- BlurListener.blurMethod);
- }
-
- /**
- * Removes a <code>BlurListener</code> from the Component.
- *
- * @param listener
- * @see BlurListener
- */
- public void removeBlurListener(BlurListener listener) {
- removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener);
- }
-
- @Override
- public void readDesign(Element design, DesignContext designContext) {
- super.readDesign(design, designContext);
- if (design.hasAttr("value") && !design.attr("value").isEmpty()) {
- Date date = DesignAttributeHandler.getFormatter()
- .parse(design.attr("value"), Date.class);
- // formatting will return null if it cannot parse the string
- if (date == null) {
- Logger.getLogger(DateField.class.getName()).info(
- "cannot parse " + design.attr("value") + " as date");
- }
- setValue(date);
- }
- }
-
- @Override
- public void writeDesign(Element design, DesignContext designContext) {
- super.writeDesign(design, designContext);
- if (getValue() != null) {
- design.attr("value",
- DesignAttributeHandler.getFormatter().format(getValue()));
- }
- }
-
- @Override
- protected void fireEvent(EventObject event) {
- if (event instanceof ValueChange) {
- if (!preventValueChangeEvent) {
- super.fireEvent(event);
- }
- } else {
- super.fireEvent(event);
- }
+ public boolean isTextFieldEnabled() {
+ return getState(false).textFieldEnabled;
}
/**
- * This method is called to handle a non-empty date string from the client
- * if the client could not parse it as a Date.
- *
- * By default, an error result is returned whose error message is
- * {@link #getParseErrorMessage()}.
+ * Enables or disables the text field. By default the text field is enabled.
+ * Disabling it causes only the button for date selection to be active, thus
+ * preventing the user from entering invalid dates.
*
- * This can be overridden to handle conversions, to return a result with
- * {@code null} value (equivalent to empty input) or to return a custom
- * error.
+ * See {@link http://dev.vaadin.com/ticket/6790}.
*
- * @param dateString
- * date string to handle
- * @return result that contains parsed Date as a value or an error
+ * @param state
+ * <b>true</b> to enable text field, <b>false</b> to disable it.
*/
- protected Result<Date> handleUnparsableDateString(String dateString) {
- return Result.error(getParseErrorMessage());
- }
-
- @Override
- protected TextualDateFieldState getState() {
- return (TextualDateFieldState) super.getState();
- }
-
- @Override
- protected TextualDateFieldState getState(boolean markAsDirty) {
- return (TextualDateFieldState) super.getState(markAsDirty);
- }
-
- @Override
- protected void doSetValue(Date value) {
- // Also set the internal dateString
- if (value != null) {
- dateString = value.toString();
- } else {
- dateString = null;
- }
-
- this.value = value;
- setComponentError(null);
- if (!uiHasValidDateString) {
- // clear component error and parsing flag
- uiHasValidDateString = true;
- setComponentError(new UserError(currentParseErrorMessage));
- } else {
- DateRangeValidator validator = new DateRangeValidator(
- getDateOutOfRangeMessage(), getRangeStart(getResolution()),
- getRangeEnd(getResolution()), getResolution());
- Result<Date> result = validator.apply(value);
- if (result.isError()) {
- setComponentError(new UserError(getDateOutOfRangeMessage()));
- }
- }
+ public void setTextFieldEnabled(boolean state) {
+ getState().textFieldEnabled = state;
}
/**
- * Gets the start range for a certain resolution. The range is inclusive, so
- * if <code>rangeStart</code> is set to one millisecond before year n and
- * resolution is set to YEAR, any date in year n - 1 will be accepted.
- * Lowest supported resolution is DAY.
+ * Set a description that explains the usage of the Widget for users of
+ * assistive devices.
*
- * @param forResolution
- * - the range conforms to the resolution
- * @return
+ * @param description
+ * String with the description
*/
- private Date getRangeStart(Resolution forResolution) {
- if (getState(false).rangeStart == null) {
- return null;
- }
- Calendar startCal = Calendar.getInstance();
- startCal.setTime(getState(false).rangeStart);
-
- if (forResolution == Resolution.YEAR) {
- startCal.set(startCal.get(Calendar.YEAR), 0, 1, 0, 0, 0);
- } else if (forResolution == Resolution.MONTH) {
- startCal.set(startCal.get(Calendar.YEAR),
- startCal.get(Calendar.MONTH), 1, 0, 0, 0);
- } else {
- startCal.set(startCal.get(Calendar.YEAR),
- startCal.get(Calendar.MONTH), startCal.get(Calendar.DATE),
- 0, 0, 0);
- }
-
- startCal.set(Calendar.MILLISECOND, 0);
- return startCal.getTime();
+ public void setAssistiveText(String description) {
+ getState().descriptionForAssistiveDevices = description;
}
/**
- * Gets the end range for a certain resolution. The range is inclusive, so
- * if rangeEnd is set to zero milliseconds past year n and resolution is set
- * to YEAR, any date in year n will be accepted. Resolutions lower than DAY
- * will be interpreted on a DAY level. That is, everything below DATE is
- * cleared
+ * Get the description that explains the usage of the Widget for users of
+ * assistive devices.
*
- * @param forResolution
- * - the range conforms to the resolution
- * @return
+ * @return String with the description
*/
- private Date getRangeEnd(Resolution forResolution) {
- // We need to set the correct resolution for the dates,
- // otherwise the range validator will complain
-
- Date rangeEnd = getState(false).rangeEnd;
- if (rangeEnd == null) {
- return null;
- }
-
- Calendar endCal = Calendar.getInstance();
- endCal.setTime(rangeEnd);
-
- if (forResolution == Resolution.YEAR) {
- // Adding one year (minresolution) and clearing the rest.
- endCal.set(endCal.get(Calendar.YEAR) + 1, 0, 1, 0, 0, 0);
- } else if (forResolution == Resolution.MONTH) {
- // Adding one month (minresolution) and clearing the rest.
- endCal.set(endCal.get(Calendar.YEAR),
- endCal.get(Calendar.MONTH) + 1, 1, 0, 0, 0);
- } else {
- endCal.set(endCal.get(Calendar.YEAR), endCal.get(Calendar.MONTH),
- endCal.get(Calendar.DATE) + 1, 0, 0, 0);
- }
- // removing one millisecond will now get the endDate to return to
- // current resolution's set time span (year or month)
- endCal.set(Calendar.MILLISECOND, -1);
- return endCal.getTime();
+ public String getAssistiveText() {
+ return getState(false).descriptionForAssistiveDevices;
}
-
}
diff --git a/server/src/main/java/com/vaadin/ui/InlineDateField.java b/server/src/main/java/com/vaadin/ui/InlineDateField.java
index 7b15302220..8fd6656c2f 100644
--- a/server/src/main/java/com/vaadin/ui/InlineDateField.java
+++ b/server/src/main/java/com/vaadin/ui/InlineDateField.java
@@ -20,12 +20,12 @@ import java.util.Date;
/**
* A date entry component, which displays the actual date selector inline.
*
+ * @see AbstractDateField
* @see DateField
- * @see PopupDateField
* @author Vaadin Ltd.
* @since 8.0
*/
-public class InlineDateField extends DateField {
+public class InlineDateField extends AbstractDateField {
/**
* Constructs an empty <code>DateField</code> with no caption.
diff --git a/server/src/main/java/com/vaadin/ui/PopupDateField.java b/server/src/main/java/com/vaadin/ui/PopupDateField.java
deleted file mode 100644
index 005160ff11..0000000000
--- a/server/src/main/java/com/vaadin/ui/PopupDateField.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.vaadin.ui;
-
-import java.util.Date;
-
-import com.vaadin.server.PaintException;
-import com.vaadin.server.PaintTarget;
-import com.vaadin.shared.ui.datefield.PopupDateFieldState;
-
-/**
- * A date entry component, which displays the actual date selector as a popup.
- *
- * @see DateField
- * @see InlineDateField
- * @author Vaadin Ltd.
- * @since 8.0
- */
-public class PopupDateField extends DateField {
-
- private String inputPrompt = null;
-
- /**
- * Constructs an empty <code>PopupDateField</code> with no caption.
- */
- public PopupDateField() {
- super();
- }
-
- /**
- * Constructs a new <code>PopupDateField</code> with the given caption and
- * initial text contents.
- *
- * @param caption
- * the caption <code>String</code> for the editor.
- * @param value
- * the Date value.
- */
- public PopupDateField(String caption, Date value) {
- super(caption, value);
- }
-
- /**
- * Constructs an empty <code>PopupDateField</code> with caption.
- *
- * @param caption
- * the caption of the datefield.
- */
- public PopupDateField(String caption) {
- super(caption);
- }
-
- @Override
- public void paintContent(PaintTarget target) throws PaintException {
- super.paintContent(target);
-
- if (inputPrompt != null) {
- target.addAttribute("prompt", inputPrompt);
- }
- }
-
- /**
- * Gets the current input prompt.
- *
- * @see #setInputPrompt(String)
- * @return the current input prompt, or null if not enabled
- */
- public String getInputPrompt() {
- return inputPrompt;
- }
-
- /**
- * Sets the input prompt - a textual prompt that is displayed when the field
- * would otherwise be empty, to prompt the user for input.
- *
- * @param inputPrompt
- */
- public void setInputPrompt(String inputPrompt) {
- this.inputPrompt = inputPrompt;
- markAsDirty();
- }
-
- @Override
- protected PopupDateFieldState getState() {
- return (PopupDateFieldState) super.getState();
- }
-
- @Override
- protected PopupDateFieldState getState(boolean markAsDirty) {
- return (PopupDateFieldState) super.getState(markAsDirty);
- }
-
- /**
- * Checks whether the text field is enabled (default) or not.
- *
- * @see PopupDateField#setTextFieldEnabled(boolean);
- *
- * @return <b>true</b> if the text field is enabled, <b>false</b> otherwise.
- */
- public boolean isTextFieldEnabled() {
- return getState(false).textFieldEnabled;
- }
-
- /**
- * Enables or disables the text field. By default the text field is enabled.
- * Disabling it causes only the button for date selection to be active, thus
- * preventing the user from entering invalid dates.
- *
- * See {@link http://dev.vaadin.com/ticket/6790}.
- *
- * @param state
- * <b>true</b> to enable text field, <b>false</b> to disable it.
- */
- public void setTextFieldEnabled(boolean state) {
- getState().textFieldEnabled = state;
- }
-
- /**
- * Set a description that explains the usage of the Widget for users of
- * assistive devices.
- *
- * @param description
- * String with the description
- */
- public void setAssistiveText(String description) {
- getState().descriptionForAssistiveDevices = description;
- }
-
- /**
- * Get the description that explains the usage of the Widget for users of
- * assistive devices.
- *
- * @return String with the description
- */
- public String getAssistiveText() {
- return getState(false).descriptionForAssistiveDevices;
- }
-}
diff --git a/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java b/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java
index e5c0457cfb..41c9806165 100644
--- a/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java
+++ b/server/src/test/java/com/vaadin/data/BinderBookOfVaadinTest.java
@@ -35,7 +35,7 @@ import com.vaadin.server.AbstractErrorMessage;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.Notification;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
import com.vaadin.ui.Slider;
import com.vaadin.ui.TextField;
@@ -301,8 +301,8 @@ public class BinderBookOfVaadinTest {
@Test
public void crossFieldValidation_validateUsingBinder() {
Binder<Trip> binder = new Binder<>();
- PopupDateField departing = new PopupDateField("Departing");
- PopupDateField returning = new PopupDateField("Returning");
+ DateField departing = new DateField("Departing");
+ DateField returning = new DateField("Returning");
Binding<Trip, Date, Date> returnBinding = binder.forField(returning)
.withValidator(
@@ -356,8 +356,8 @@ public class BinderBookOfVaadinTest {
@Test
public void crossFieldValidation_validateUsingBinding() {
Binder<Trip> binder = new Binder<>();
- PopupDateField departing = new PopupDateField("Departing");
- PopupDateField returning = new PopupDateField("Returning");
+ DateField departing = new DateField("Departing");
+ DateField returning = new DateField("Returning");
Binding<Trip, Date, Date> returnBinding = binder.forField(returning)
.withValidator(
diff --git a/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldDeclarativeTest.java b/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldDeclarativeTest.java
index 18744b1b88..9d6e57b207 100644
--- a/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldDeclarativeTest.java
+++ b/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldDeclarativeTest.java
@@ -15,97 +15,49 @@
*/
package com.vaadin.tests.server.component.datefield;
-import java.text.SimpleDateFormat;
import java.util.Date;
-import java.util.TimeZone;
import org.junit.Test;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.design.DeclarativeTestBase;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.DateField;
/**
- * Tests the declarative support for implementations of {@link DateField}.
+ * Tests the declarative support for implementations of
+ * {@link AbstractDateField}.
*
- * @author Vaadin Ltd
* @since 7.4
+ * @author Vaadin Ltd
*/
-public class DateFieldDeclarativeTest extends DeclarativeTestBase<DateField> {
+public class DateFieldDeclarativeTest
+ extends DeclarativeTestBase<DateField> {
- private String getYearResolutionDesign() {
- return "<vaadin-date-field resolution='year' value='2020'/>";
+ private String getBasicDesign() {
+ return "<vaadin-date-field assistive-text='at' text-field-enabled='false' show-iso-week-numbers resolution=\"MINUTE\" range-end=\"2019-01-15\" input-prompt=\"Pick a day\" value=\"2003-02-27 07:15\"></vaadin-date-field>";
}
- private DateField getYearResolutionExpected() {
- DateField df = new DateField();
- df.setResolution(Resolution.YEAR);
- df.setValue(new Date(2020 - 1900, 1 - 1, 1));
- return df;
- }
-
- private String getTimezoneDesign() {
- String timeZone = new SimpleDateFormat("Z").format(new Date());
- return String.format(
- "<vaadin-date-field range-start=\"2014-05-05 00:00:00%1$s\" range-end=\"2014-06-05 00:00:00%1$s\" date-out-of-range-message=\"Please select a sensible date\" date-format=\"yyyy-MM-dd\" lenient show-iso-week-numbers parse-error-message=\"You are doing it wrong\" time-zone=\"GMT+05:00\" value=\"2014-05-15 00:00:00%1$s\"/>",
- timeZone);
- }
-
- private DateField getTimezoneExpected() {
- DateField df = new DateField();
-
- df.setRangeStart(new Date(2014 - 1900, 5 - 1, 5));
- df.setRangeEnd(new Date(2014 - 1900, 6 - 1, 5));
- df.setDateOutOfRangeMessage("Please select a sensible date");
- df.setResolution(Resolution.DAY);
- df.setDateFormat("yyyy-MM-dd");
- df.setLenient(true);
- df.setShowISOWeekNumbers(true);
- df.setParseErrorMessage("You are doing it wrong");
- df.setTimeZone(TimeZone.getTimeZone("GMT+5"));
- df.setValue(new Date(2014 - 1900, 5 - 1, 15));
-
- return df;
+ private DateField getBasicExpected() {
+ DateField pdf = new DateField();
+ pdf.setShowISOWeekNumbers(true);
+ pdf.setResolution(Resolution.MINUTE);
+ pdf.setRangeEnd(new Date(2019 - 1900, 1 - 1, 15));
+ pdf.setInputPrompt("Pick a day");
+ pdf.setValue(new Date(2003 - 1900, 2 - 1, 27, 7, 15));
+ pdf.setTextFieldEnabled(false);
+ pdf.setAssistiveText("at");
+ return pdf;
}
@Test
- public void readTimezone() {
- testRead(getTimezoneDesign(), getTimezoneExpected());
+ public void readBasic() throws Exception {
+ testRead(getBasicDesign(), getBasicExpected());
}
@Test
- public void writeTimezone() {
- testWrite(getTimezoneDesign(), getTimezoneExpected());
+ public void writeBasic() throws Exception {
+ testRead(getBasicDesign(), getBasicExpected());
}
- @Test
- public void readYearResolution() {
- testRead(getYearResolutionDesign(), getYearResolutionExpected());
- }
-
- @Test
- public void writeYearResolution() {
- // Writing is always done in full resolution..
- String timeZone = new SimpleDateFormat("Z")
- .format(new Date(2020 - 1900, 1 - 1, 1));
- testWrite(
- getYearResolutionDesign().replace("2020",
- "2020-01-01 00:00:00" + timeZone),
- getYearResolutionExpected());
- }
-
- @Test
- public void testReadOnlyValue() {
- Date date = new Date(2020 - 1900, 1 - 1, 1);
- String timeZone = new SimpleDateFormat("Z").format(date);
- String design = "<vaadin-date-field readonly resolution='year' value='2020-01-01 00:00:00"
- + timeZone + "'/>";
- DateField df = new DateField();
- df.setResolution(Resolution.YEAR);
- df.setValue(date);
- df.setReadOnly(true);
-
- testRead(design, df);
- testWrite(design, df);
- }
}
diff --git a/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java b/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java
index 8885573bd8..990fd9ceba 100644
--- a/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java
+++ b/server/src/test/java/com/vaadin/tests/server/component/datefield/DateFieldListenersTest.java
@@ -7,19 +7,23 @@ import com.vaadin.event.FieldEvents.BlurListener;
import com.vaadin.event.FieldEvents.FocusEvent;
import com.vaadin.event.FieldEvents.FocusListener;
import com.vaadin.tests.server.component.AbstractListenerMethodsTestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
public class DateFieldListenersTest extends AbstractListenerMethodsTestBase {
+ public static class TestDateField extends AbstractDateField {
+
+ }
+
@Test
public void testFocusListenerAddGetRemove() throws Exception {
- testListenerAddGetRemove(DateField.class, FocusEvent.class,
+ testListenerAddGetRemove(TestDateField.class, FocusEvent.class,
FocusListener.class);
}
@Test
public void testBlurListenerAddGetRemove() throws Exception {
- testListenerAddGetRemove(DateField.class, BlurEvent.class,
+ testListenerAddGetRemove(TestDateField.class, BlurEvent.class,
BlurListener.class);
}
}
diff --git a/server/src/test/java/com/vaadin/tests/server/component/datefield/InlineDateFieldDeclarativeTest.java b/server/src/test/java/com/vaadin/tests/server/component/datefield/InlineDateFieldDeclarativeTest.java
index 89ec565655..70309c7e7d 100644
--- a/server/src/test/java/com/vaadin/tests/server/component/datefield/InlineDateFieldDeclarativeTest.java
+++ b/server/src/test/java/com/vaadin/tests/server/component/datefield/InlineDateFieldDeclarativeTest.java
@@ -23,12 +23,12 @@ import org.junit.Test;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.design.DeclarativeTestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.InlineDateField;
import com.vaadin.ui.declarative.Design;
/**
- * Tests the declarative support for implementations of {@link DateField}.
+ * Tests the declarative support for implementations of {@link AbstractDateField}.
*
* @since 7.4
* @author Vaadin Ltd
diff --git a/server/src/test/java/com/vaadin/tests/server/component/datefield/PopupDateFieldDeclarativeTest.java b/server/src/test/java/com/vaadin/tests/server/component/datefield/PopupDateFieldDeclarativeTest.java
deleted file mode 100644
index b0f589ee05..0000000000
--- a/server/src/test/java/com/vaadin/tests/server/component/datefield/PopupDateFieldDeclarativeTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.vaadin.tests.server.component.datefield;
-
-import java.util.Date;
-
-import org.junit.Test;
-
-import com.vaadin.shared.ui.datefield.Resolution;
-import com.vaadin.tests.design.DeclarativeTestBase;
-import com.vaadin.ui.DateField;
-import com.vaadin.ui.PopupDateField;
-
-/**
- * Tests the declarative support for implementations of {@link DateField}.
- *
- * @since 7.4
- * @author Vaadin Ltd
- */
-public class PopupDateFieldDeclarativeTest
- extends DeclarativeTestBase<PopupDateField> {
-
- private String getBasicDesign() {
- return "<vaadin-popup-date-field assistive-text='at' text-field-enabled='false' show-iso-week-numbers resolution=\"MINUTE\" range-end=\"2019-01-15\" input-prompt=\"Pick a day\" value=\"2003-02-27 07:15\"></vaadin-popup-date-field>";
- }
-
- private PopupDateField getBasicExpected() {
- PopupDateField pdf = new PopupDateField();
- pdf.setShowISOWeekNumbers(true);
- pdf.setResolution(Resolution.MINUTE);
- pdf.setRangeEnd(new Date(2019 - 1900, 1 - 1, 15));
- pdf.setInputPrompt("Pick a day");
- pdf.setValue(new Date(2003 - 1900, 2 - 1, 27, 7, 15));
- pdf.setTextFieldEnabled(false);
- pdf.setAssistiveText("at");
- return pdf;
- }
-
- @Test
- public void readBasic() throws Exception {
- testRead(getBasicDesign(), getBasicExpected());
- }
-
- @Test
- public void writeBasic() throws Exception {
- testRead(getBasicDesign(), getBasicExpected());
- }
-
-}
diff --git a/server/src/test/java/com/vaadin/ui/DateFieldTestCase.java b/server/src/test/java/com/vaadin/ui/DateFieldTestCase.java
index 43bfefc681..b7b7dfd9f9 100644
--- a/server/src/test/java/com/vaadin/ui/DateFieldTestCase.java
+++ b/server/src/test/java/com/vaadin/ui/DateFieldTestCase.java
@@ -11,12 +11,13 @@ import org.junit.Test;
public class DateFieldTestCase {
- private DateField dateField;
+ private AbstractDateField dateField;
private Date date;
@Before
public void setup() {
- dateField = new DateField();
+ dateField = new AbstractDateField() {
+ };
date = new Date();
}
diff --git a/uitest-common/src/main/java/com/vaadin/testbench/customelements/AbstractDateFieldElement.java b/uitest-common/src/main/java/com/vaadin/testbench/customelements/AbstractDateFieldElement.java
new file mode 100644
index 0000000000..4d61a6a491
--- /dev/null
+++ b/uitest-common/src/main/java/com/vaadin/testbench/customelements/AbstractDateFieldElement.java
@@ -0,0 +1,7 @@
+package com.vaadin.testbench.customelements;
+
+import com.vaadin.testbench.elementsbase.ServerClass;
+
+@ServerClass("com.vaadin.ui.AbstractDateField")
+public class AbstractDateFieldElement extends DateFieldElement {
+}
diff --git a/uitest/src/main/java/com/vaadin/tests/FocusingComponents.java b/uitest/src/main/java/com/vaadin/tests/FocusingComponents.java
index 6173aea527..0de6a03986 100644
--- a/uitest/src/main/java/com/vaadin/tests/FocusingComponents.java
+++ b/uitest/src/main/java/com/vaadin/tests/FocusingComponents.java
@@ -1,9 +1,9 @@
package com.vaadin.tests;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.v7.ui.AbstractSelect;
import com.vaadin.v7.ui.ComboBox;
@@ -31,7 +31,7 @@ public class FocusingComponents extends CustomComponent {
addFocusableTest(f);
addFocusableTest(new ComboBox());
addFocusableTest(new TextField());
- addFocusableTest(new DateField());
+ addFocusableTest(new TestDateField());
addFocusableTest(new NativeSelect());
addFocusableTest(new ListSelect());
addFocusableTest(new OptionGroup());
diff --git a/uitest/src/main/java/com/vaadin/tests/PerformanceTestBasicComponentRendering.java b/uitest/src/main/java/com/vaadin/tests/PerformanceTestBasicComponentRendering.java
index 2617da651e..4cbfbb806a 100644
--- a/uitest/src/main/java/com/vaadin/tests/PerformanceTestBasicComponentRendering.java
+++ b/uitest/src/main/java/com/vaadin/tests/PerformanceTestBasicComponentRendering.java
@@ -21,9 +21,9 @@ import java.util.Map;
import com.vaadin.server.UserError;
import com.vaadin.shared.ui.label.ContentMode;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
@@ -85,7 +85,7 @@ public class PerformanceTestBasicComponentRendering extends CustomComponent {
tf.setComponentError(new UserError("dsfjklsdf"));
testContainer.addComponent(tf);
- testContainer.addComponent(new DateField("DateField" + i));
+ testContainer.addComponent(new TestDateField("DateField" + i));
testContainer.addComponent(new Button("Button" + i));
diff --git a/uitest/src/main/java/com/vaadin/tests/RandomLayoutStress.java b/uitest/src/main/java/com/vaadin/tests/RandomLayoutStress.java
index a558532f6b..f15263203e 100644
--- a/uitest/src/main/java/com/vaadin/tests/RandomLayoutStress.java
+++ b/uitest/src/main/java/com/vaadin/tests/RandomLayoutStress.java
@@ -19,10 +19,11 @@ package com.vaadin.tests;
import java.util.Random;
import com.vaadin.server.ExternalResource;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomLayout;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
@@ -181,15 +182,15 @@ public class RandomLayoutStress extends com.vaadin.server.LegacyApplication {
break;
case 6:
// Datefield
- result = new DateField();
- ((DateField) result).setStyleName("calendar");
- ((DateField) result).setValue(new java.util.Date());
+ result = new TestDateField();
+ ((AbstractDateField) result).setStyleName("calendar");
+ ((AbstractDateField) result).setValue(new java.util.Date());
result.setCaption("Calendar component " + caption);
break;
case 7:
// Datefield
- result = new DateField();
- ((DateField) result).setValue(new java.util.Date());
+ result = new TestDateField();
+ ((AbstractDateField) result).setValue(new java.util.Date());
result.setCaption("Calendar component " + caption);
break;
}
diff --git a/uitest/src/main/java/com/vaadin/tests/TestCaptionWrapper.java b/uitest/src/main/java/com/vaadin/tests/TestCaptionWrapper.java
index 4519b28a6d..108ed6b074 100644
--- a/uitest/src/main/java/com/vaadin/tests/TestCaptionWrapper.java
+++ b/uitest/src/main/java/com/vaadin/tests/TestCaptionWrapper.java
@@ -21,18 +21,20 @@ import com.vaadin.server.ErrorMessage;
import com.vaadin.server.ExternalResource;
import com.vaadin.server.UserError;
import com.vaadin.shared.ui.label.ContentMode;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Component.Listener;
import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Layout;
import com.vaadin.ui.Link;
import com.vaadin.ui.Panel;
+import com.vaadin.ui.RichTextArea;
import com.vaadin.ui.Slider;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.Upload;
@@ -41,7 +43,6 @@ import com.vaadin.ui.Window;
import com.vaadin.v7.ui.NativeSelect;
import com.vaadin.v7.ui.OptionGroup;
import com.vaadin.v7.ui.ProgressIndicator;
-import com.vaadin.ui.RichTextArea;
import com.vaadin.v7.ui.Select;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.TextField;
@@ -119,7 +120,7 @@ public class TestCaptionWrapper extends CustomComponent implements Listener {
test(layout, button);
button.addListener(this);
- final DateField df = new DateField("DateField " + count++);
+ final AbstractDateField df = new TestDateField("DateField " + count++);
test(layout, df);
final CheckBox cb = new CheckBox("Checkbox " + count++);
diff --git a/uitest/src/main/java/com/vaadin/tests/TestDateField.java b/uitest/src/main/java/com/vaadin/tests/TestDateField.java
index edc4b863cf..7a63c628b4 100644
--- a/uitest/src/main/java/com/vaadin/tests/TestDateField.java
+++ b/uitest/src/main/java/com/vaadin/tests/TestDateField.java
@@ -21,8 +21,8 @@ import java.util.Locale;
import com.vaadin.server.ClassResource;
import com.vaadin.server.ErrorMessage;
import com.vaadin.server.UserError;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
@@ -34,7 +34,7 @@ public class TestDateField extends CustomComponent {
VerticalLayout main = new VerticalLayout();
- DateField df;
+ AbstractDateField df;
public TestDateField() {
setCompositionRoot(main);
@@ -45,7 +45,7 @@ public class TestDateField extends CustomComponent {
main.removeAllComponents();
main.addComponent(new Label("DateField"));
- df = new DateField();
+ df = new com.vaadin.tests.components.TestDateField();
main.addComponent(df);
final ErrorMessage errorMsg = new UserError("User error " + df);
@@ -58,19 +58,23 @@ public class TestDateField extends CustomComponent {
df.addStyleName("thisShouldBeHarmless");
// Another test: locale
- final DateField df1 = new DateField("US locale");
+ final AbstractDateField df1 = new com.vaadin.tests.components.TestDateField(
+ "US locale");
main.addComponent(df1);
df1.setLocale(new Locale("en", "US"));
- final DateField df2 = new DateField("DE locale");
+ final AbstractDateField df2 = new com.vaadin.tests.components.TestDateField(
+ "DE locale");
main.addComponent(df2);
df2.setLocale(new Locale("de", "DE"));
- final DateField df3 = new DateField("RU locale");
+ final AbstractDateField df3 = new com.vaadin.tests.components.TestDateField(
+ "RU locale");
main.addComponent(df3);
df3.setLocale(new Locale("ru", "RU"));
- final DateField df4 = new DateField("FI locale");
+ final AbstractDateField df4 = new com.vaadin.tests.components.TestDateField(
+ "FI locale");
main.addComponent(df4);
df4.setLocale(new Locale("fi", "FI"));
}
diff --git a/uitest/src/main/java/com/vaadin/tests/TestForAlignments.java b/uitest/src/main/java/com/vaadin/tests/TestForAlignments.java
index 1d743a3c5f..b937c14120 100644
--- a/uitest/src/main/java/com/vaadin/tests/TestForAlignments.java
+++ b/uitest/src/main/java/com/vaadin/tests/TestForAlignments.java
@@ -16,10 +16,11 @@
package com.vaadin.tests;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.ui.TextField;
@@ -36,8 +37,8 @@ public class TestForAlignments extends CustomComponent {
final Button b4 = new Button("Top");
final TextField t1 = new TextField("Right aligned");
final TextField t2 = new TextField("Bottom aligned");
- final DateField d1 = new DateField("Center aligned");
- final DateField d2 = new DateField("Center aligned");
+ final AbstractDateField d1 = new TestDateField("Center aligned");
+ final AbstractDateField d2 = new TestDateField("Center aligned");
final VerticalLayout vert = new VerticalLayout();
vert.addComponent(b1);
diff --git a/uitest/src/main/java/com/vaadin/tests/TestForBasicApplicationLayout.java b/uitest/src/main/java/com/vaadin/tests/TestForBasicApplicationLayout.java
index 5b1b5c7f06..d5d70f65f5 100644
--- a/uitest/src/main/java/com/vaadin/tests/TestForBasicApplicationLayout.java
+++ b/uitest/src/main/java/com/vaadin/tests/TestForBasicApplicationLayout.java
@@ -20,11 +20,12 @@ import java.util.Locale;
import com.vaadin.server.Sizeable;
import com.vaadin.shared.ui.datefield.Resolution;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.HorizontalSplitPanel;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
@@ -81,7 +82,7 @@ public class TestForBasicApplicationLayout extends CustomComponent {
controls.addComponent(click);
controls.addComponent(click2);
reportLayout.addComponent(controls);
- final DateField cal = new DateField();
+ final AbstractDateField cal = new TestDateField();
cal.setResolution(Resolution.DAY);
cal.setLocale(new Locale("en", "US"));
reportLayout.addComponent(cal);
diff --git a/uitest/src/main/java/com/vaadin/tests/TestSelectAndDatefieldInDeepLayouts.java b/uitest/src/main/java/com/vaadin/tests/TestSelectAndDatefieldInDeepLayouts.java
index 80dbee4cfb..daf772f45b 100644
--- a/uitest/src/main/java/com/vaadin/tests/TestSelectAndDatefieldInDeepLayouts.java
+++ b/uitest/src/main/java/com/vaadin/tests/TestSelectAndDatefieldInDeepLayouts.java
@@ -19,11 +19,11 @@ package com.vaadin.tests;
import java.util.Collection;
import java.util.Vector;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.AbstractOrderedLayout;
import com.vaadin.ui.Component;
import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.ui.Select;
@@ -99,7 +99,7 @@ public class TestSelectAndDatefieldInDeepLayouts extends CustomComponent {
}
Component getDateField() {
- return new DateField(getCaption("datefield"));
+ return new TestDateField(getCaption("datefield"));
}
private Collection<String> getSelectOptions() {
diff --git a/uitest/src/main/java/com/vaadin/tests/components/AbstractComponentContainerTest.java b/uitest/src/main/java/com/vaadin/tests/components/AbstractComponentContainerTest.java
index f385dfe84c..f50be07af9 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/AbstractComponentContainerTest.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/AbstractComponentContainerTest.java
@@ -14,7 +14,7 @@ import com.vaadin.ui.HasComponents.ComponentDetachListener;
import com.vaadin.ui.HorizontalSplitPanel;
import com.vaadin.ui.InlineDateField;
import com.vaadin.ui.NativeButton;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalSplitPanel;
import com.vaadin.ui.RichTextArea;
@@ -85,7 +85,7 @@ public abstract class AbstractComponentContainerTest<T extends AbstractComponent
private Command<T, ComponentSize> addPopupDateFieldCommand = new Command<T, ComponentSize>() {
@Override
public void execute(T c, ComponentSize size, Object data) {
- PopupDateField tf = new PopupDateField();
+ DateField tf = new DateField();
c.addComponent(tf);
size.apply(tf);
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/FocusAndBlurListeners.java b/uitest/src/main/java/com/vaadin/tests/components/FocusAndBlurListeners.java
index c16b811038..a82044bf57 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/FocusAndBlurListeners.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/FocusAndBlurListeners.java
@@ -6,12 +6,12 @@ import com.vaadin.event.FieldEvents.BlurEvent;
import com.vaadin.event.FieldEvents.BlurListener;
import com.vaadin.event.FieldEvents.FocusEvent;
import com.vaadin.event.FieldEvents.FocusListener;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.Layout;
import com.vaadin.ui.NativeButton;
@@ -49,7 +49,7 @@ public class FocusAndBlurListeners extends TestBase {
TextField tf = new TextField("TextField");
l.addComponent(tf);
- DateField df = new DateField("DateField");
+ AbstractDateField df = new TestDateField("DateField");
l.addComponent(df);
ComboBox cb = new ComboBox("ComboBox");
diff --git a/uitest/src/main/java/com/vaadin/tests/components/TestDateField.java b/uitest/src/main/java/com/vaadin/tests/components/TestDateField.java
new file mode 100644
index 0000000000..26353e192b
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/TestDateField.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.components;
+
+import java.util.Date;
+
+import com.vaadin.ui.AbstractDateField;
+
+/**
+ * @author Vaadin Ltd
+ *
+ */
+public class TestDateField extends AbstractDateField {
+
+ /**
+ * Constructs an empty <code>DateField</code> with no caption.
+ */
+ public TestDateField() {
+ }
+
+ /**
+ * Constructs an empty <code>DateField</code> with caption.
+ *
+ * @param caption
+ * the caption of the datefield.
+ */
+ public TestDateField(String caption) {
+ setCaption(caption);
+ }
+
+ /**
+ * Constructs a new <code>DateField</code> with the given caption and
+ * initial text contents.
+ *
+ * @param caption
+ * the caption <code>String</code> for the editor.
+ * @param value
+ * the Date value.
+ */
+ public TestDateField(String caption, Date value) {
+ setValue(value);
+ setCaption(caption);
+ }
+}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/AbstractDateFieldTest.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/AbstractDateFieldTest.java
new file mode 100644
index 0000000000..0d0e88b3cb
--- /dev/null
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/AbstractDateFieldTest.java
@@ -0,0 +1,146 @@
+package com.vaadin.tests.components.datefield;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.Locale;
+
+import com.vaadin.shared.ui.datefield.Resolution;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.tests.components.abstractfield.AbstractFieldTest;
+import com.vaadin.ui.AbstractDateField;
+
+public class AbstractDateFieldTest<T extends AbstractDateField>
+ extends AbstractFieldTest<T, Date> {
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected Class<T> getTestClass() {
+ return (Class<T>) TestDateField.class;
+ }
+
+ private Command<T, Date> setValue = new Command<T, Date>() {
+
+ @Override
+ public void execute(T c, Date value, Object data) {
+ c.setValue(value);
+ }
+ };
+
+ @Override
+ protected void createActions() {
+ super.createActions();
+ createResolutionSelectAction(CATEGORY_FEATURES);
+ createBooleanAction("Lenient", CATEGORY_FEATURES, false,
+ lenientCommand);
+ createBooleanAction("Show week numbers", CATEGORY_FEATURES, false,
+ weekNumberCommand);
+ createDateFormatSelectAction(CATEGORY_FEATURES);
+ createSetValueAction(CATEGORY_FEATURES);
+
+ }
+
+ private void createSetValueAction(String category) {
+ LinkedHashMap<String, Date> options = new LinkedHashMap<>();
+ options.put("(null)", null);
+ options.put("(current time)", new Date());
+ Calendar c = Calendar.getInstance(new Locale("fi", "FI"));
+ c.clear();
+ c.set(2010, 12 - 1, 12, 12, 0, 0);
+ c.set(Calendar.MILLISECOND, 0);
+ options.put("2010-12-12 12:00:00.000", c.getTime());
+ c.clear();
+ c.set(2000, 1 - 1, 2, 3, 4, 5);
+ c.set(Calendar.MILLISECOND, 6);
+ options.put("2000-01-02 03:04:05.006", c.getTime());
+ createMultiClickAction("Set value", category, options, setValue, null);
+ }
+
+ private void createDateFormatSelectAction(String category) {
+ LinkedHashMap<String, String> options = new LinkedHashMap<>();
+
+ options.put("-", null);
+ options.put("d M yyyy", "d M yyyy");
+ options.put("d MM yyyy", "d MM yyyy");
+ options.put("d MMM yyyy", "d MMM yyyy");
+ options.put("d MMMM yyyy", "d MMMM yyyy");
+ options.put("dd M yyyy", "dd M yyyy");
+ options.put("ddd M yyyy", "ddd M yyyy");
+ options.put("d M y", "d M y");
+ options.put("d M yy", "d M yy");
+ options.put("d M yyy", "d M yyy");
+ options.put("d M yyyy", "d M yyyy");
+ options.put("d M 'custom text' yyyy", "d M 'custom text' yyyy");
+ options.put("'day:'d', month:'M', year: 'yyyy",
+ "'day:'d', month:'M', year: 'yyyy");
+ options.put(getDatePattern(new Locale("fi", "FI"), DateFormat.LONG),
+ getDatePattern(new Locale("fi", "FI"), DateFormat.LONG));
+ options.put(getDatePattern(new Locale("fi", "FI"), DateFormat.MEDIUM),
+ getDatePattern(new Locale("fi", "FI"), DateFormat.MEDIUM));
+ options.put(getDatePattern(new Locale("fi", "FI"), DateFormat.SHORT),
+ getDatePattern(new Locale("fi", "FI"), DateFormat.SHORT));
+
+ createSelectAction("Date format", category, options, "-",
+ dateFormatCommand);
+
+ }
+
+ private String getDatePattern(Locale locale, int dateStyle) {
+ DateFormat dateFormat = DateFormat.getDateInstance(dateStyle, locale);
+
+ if (dateFormat instanceof SimpleDateFormat) {
+ String pattern = ((SimpleDateFormat) dateFormat).toPattern();
+ return pattern;
+ }
+ return null;
+
+ }
+
+ private void createResolutionSelectAction(String category) {
+ LinkedHashMap<String, Resolution> options = new LinkedHashMap<>();
+ options.put("Year", Resolution.YEAR);
+ options.put("Month", Resolution.MONTH);
+ options.put("Day", Resolution.DAY);
+ options.put("Hour", Resolution.HOUR);
+ options.put("Min", Resolution.MINUTE);
+ options.put("Sec", Resolution.SECOND);
+
+ createSelectAction("Resolution", category, options, "Year",
+ resolutionCommand);
+ }
+
+ private Command<T, Resolution> resolutionCommand = new Command<T, Resolution>() {
+
+ @Override
+ public void execute(T c, Resolution value, Object data) {
+ c.setResolution(value);
+
+ }
+ };
+ private Command<T, Boolean> lenientCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean value, Object data) {
+ c.setLenient(false);
+
+ }
+ };
+ private Command<T, Boolean> weekNumberCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean value, Object data) {
+ c.setShowISOWeekNumbers(value);
+
+ }
+ };
+ private Command<T, String> dateFormatCommand = new Command<T, String>() {
+
+ @Override
+ public void execute(T c, String value, Object data) {
+ c.setDateFormat(value);
+ }
+ };
+
+}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/AriaDisabled.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/AriaDisabled.java
index bc0ede9470..86418f3734 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/AriaDisabled.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/AriaDisabled.java
@@ -17,7 +17,8 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.VerticalLayout;
public class AriaDisabled extends AbstractTestUI {
@@ -28,12 +29,13 @@ public class AriaDisabled extends AbstractTestUI {
content.setMargin(true);
content.setSpacing(true);
- final DateField disabledDateField = new DateField("Disabled DateField");
+ final AbstractDateField disabledDateField = new TestDateField(
+ "Disabled DateField");
disabledDateField.setEnabled(false);
setContent(content);
content.addComponent(disabledDateField);
- content.addComponent(new DateField("Enabled DateField"));
+ content.addComponent(new TestDateField("Enabled DateField"));
}
@Override
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormat.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormat.java
index 579df7f1a8..aa32fd3c4f 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormat.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormat.java
@@ -5,7 +5,8 @@ import java.util.Locale;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class CustomDateFormat extends TestBase {
@@ -16,7 +17,7 @@ public class CustomDateFormat extends TestBase {
Calendar cal = Calendar.getInstance();
cal.set(2010, 0, 1);
- DateField df = new DateField();
+ AbstractDateField df = new TestDateField();
df.setResolution(Resolution.DAY);
df.setLocale(locale);
df.setWidth("300px");
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormatEEE.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormatEEE.java
index 575d68f291..afbd6e828f 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormatEEE.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormatEEE.java
@@ -21,7 +21,8 @@ import java.util.Locale;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.VerticalLayout;
public class CustomDateFormatEEE extends AbstractTestUI {
@@ -31,7 +32,8 @@ public class CustomDateFormatEEE extends AbstractTestUI {
Calendar cal = Calendar.getInstance();
cal.set(2014, 2, 14); // Friday
- DateField df = new DateField("Should display 14/03/2014 Fri");
+ AbstractDateField df = new TestDateField(
+ "Should display 14/03/2014 Fri");
df.setResolution(Resolution.DAY);
df.setLocale(new Locale("en", "US"));
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormats.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormats.java
index 534c92d5f4..91a76f5269 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormats.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/CustomDateFormats.java
@@ -9,8 +9,9 @@ import java.util.Set;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Component;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Label;
import com.vaadin.v7.data.Item;
@@ -141,7 +142,7 @@ public class CustomDateFormats extends TestBase {
Label serversideValueLabel = new Label();
- DateField df = new DateField();
+ AbstractDateField df = new TestDateField();
df.setResolution(Resolution.DAY);
df.setLocale(locale);
df.setWidth("300px");
@@ -159,7 +160,7 @@ public class CustomDateFormats extends TestBase {
df.setData(new Data(serversideValueLabel, pattern));
df.setValue(cal.getTime());
df.addValueChangeListener(event -> updateServerSideLabel(
- (DateField) event.getConnector()));
+ (AbstractDateField) event.getConnector()));
Label patternLabel = new Label(pattern);
patternLabel.setWidth(null);
@@ -181,7 +182,7 @@ public class CustomDateFormats extends TestBase {
updateServerSideLabel(df);
}
- private void updateServerSideLabel(DateField df) {
+ private void updateServerSideLabel(AbstractDateField df) {
Data data = (Data) df.getData();
String pattern = data.pattern;
Locale locale = df.getLocale();
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldChangeResolution.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldChangeResolution.java
index 17b26b8288..ba8da59dfb 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldChangeResolution.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldChangeResolution.java
@@ -21,10 +21,10 @@ import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
public class DateFieldChangeResolution extends AbstractTestUI {
@@ -34,7 +34,7 @@ public class DateFieldChangeResolution extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- final DateField dateField = new PopupDateField("Enter date");
+ final AbstractDateField dateField = new DateField("Enter date");
dateField.setResolution(Resolution.YEAR);
dateField.setId(DATEFIELD_ID);
dateField.setImmediate(true);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldClose.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldClose.java
index 1211646d4e..df15431d27 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldClose.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldClose.java
@@ -17,7 +17,8 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class DateFieldClose extends AbstractTestUI {
@@ -25,7 +26,7 @@ public class DateFieldClose extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
df.setId(DATEFIELD_ID);
addComponent(df);
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffset.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffset.java
index 4a68e648e6..2e4d899f16 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffset.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffset.java
@@ -8,7 +8,8 @@ import java.util.TimeZone;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Label;
public class DateFieldDayResolutionOffset extends AbstractTestUI {
@@ -22,7 +23,7 @@ public class DateFieldDayResolutionOffset extends AbstractTestUI {
final TimeZone timezone = TimeZone.getTimeZone("GMT");
final SimpleDateFormat dateformat = getDateFormat(timezone);
- final DateField dateField = getDateField(timezone, dateformat);
+ final AbstractDateField dateField = getDateField(timezone, dateformat);
addComponent(dateValue);
addComponent(dateField);
@@ -31,9 +32,9 @@ public class DateFieldDayResolutionOffset extends AbstractTestUI {
.setValue(dateformat.format(dateField.getValue())));
}
- private DateField getDateField(TimeZone timezone,
+ private AbstractDateField getDateField(TimeZone timezone,
SimpleDateFormat dateformat) {
- final DateField dateField = new DateField();
+ final AbstractDateField dateField = new TestDateField();
try {
Date initialDate = dateformat.parse(initialDateString);
dateField.setResolution(Resolution.DAY);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldConnector.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldElementUI.java
index 5cdc8f1396..9a41acc6d5 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldConnector.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldElementUI.java
@@ -2,14 +2,14 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.DateField;
-import com.vaadin.ui.PopupDateField;
-public class PopupDateFieldConnector extends AbstractTestUI {
+public class DateFieldElementUI extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- addComponent(new PopupDateField());
addComponent(new DateField());
+ addComponent(new TestDateField());
}
@Override
@@ -19,6 +19,6 @@ public class PopupDateFieldConnector extends AbstractTestUI {
@Override
protected String getTestDescription() {
- return "PopupDateFieldElement should be accessible using TB4 PopupDateFieldElement.";
+ return "DateFieldElement should be accessible using TB4 DateFieldElement.";
}
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldExtendedRange.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldExtendedRange.java
index 620b9cf12a..2a9b71ccaa 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldExtendedRange.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldExtendedRange.java
@@ -8,10 +8,10 @@ import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.InlineDateField;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
@SuppressWarnings("serial")
public class DateFieldExtendedRange extends TestBase {
@@ -26,7 +26,7 @@ public class DateFieldExtendedRange extends TestBase {
layout.setWidth("600px");
layout.setSpacing(true);
- final DateField[] fields = new DateField[6];
+ final AbstractDateField[] fields = new AbstractDateField[6];
Locale fi = new Locale("fi", "FI");
Locale us = new Locale("en", "US");
@@ -43,7 +43,7 @@ public class DateFieldExtendedRange extends TestBase {
"Finnish locale with week numbers");
fields[5].setShowISOWeekNumbers(true);
- for (DateField f : fields) {
+ for (AbstractDateField f : fields) {
layout.addComponent(f);
}
@@ -53,7 +53,7 @@ public class DateFieldExtendedRange extends TestBase {
@Override
public void buttonClick(ClickEvent event) {
date.set(2010, 1, 16);
- for (DateField f : fields) {
+ for (AbstractDateField f : fields) {
f.setValue(date.getTime());
}
}
@@ -70,9 +70,9 @@ public class DateFieldExtendedRange extends TestBase {
return 6718;
}
- private DateField makeDateField(boolean isPopup, Locale locale,
+ private AbstractDateField makeDateField(boolean isPopup, Locale locale,
String caption) {
- DateField df = isPopup ? new PopupDateField() : new InlineDateField();
+ AbstractDateField df = isPopup ? new DateField() : new InlineDateField();
df.setResolution(Resolution.DAY);
df.setValue(date.getTime());
df.setLocale(locale);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldIsValid.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldIsValid.java
index f99c628400..f38e641b8b 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldIsValid.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldIsValid.java
@@ -5,7 +5,8 @@ import java.util.Date;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUIWithLog;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class DateFieldIsValid extends AbstractTestUIWithLog {
@@ -25,7 +26,7 @@ public class DateFieldIsValid extends AbstractTestUIWithLog {
@Override
protected void setup(VaadinRequest request) {
- final DateField dateField = new DateField("Insert Date: ");
+ final AbstractDateField dateField = new TestDateField("Insert Date: ");
dateField.setImmediate(true);
dateField.setDateFormat(pattern);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldKeyboardInput.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldKeyboardInput.java
index 1e3302333c..24b75d0603 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldKeyboardInput.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldKeyboardInput.java
@@ -22,7 +22,7 @@ import java.util.Locale;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Label;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
public class DateFieldKeyboardInput extends AbstractTestUI {
@@ -30,7 +30,7 @@ public class DateFieldKeyboardInput extends AbstractTestUI {
protected void setup(VaadinRequest request) {
Calendar c = new GregorianCalendar(Locale.ENGLISH);
c.set(2014, 0, 15);
- final PopupDateField dateField = new PopupDateField("Select date",
+ final DateField dateField = new DateField("Select date",
c.getTime());
dateField.setDateFormat("dd.MM.yyyy");
addComponent(dateField);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldLocale.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldLocale.java
index 38bb02bc71..cf524f375c 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldLocale.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldLocale.java
@@ -5,16 +5,17 @@ import java.util.Locale;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.DateField;
public class DateFieldLocale extends TestBase {
@Override
public void setup() {
- final DateField dateField = new DateField("DateField");
+ final AbstractDateField dateField = new TestDateField("DateField");
dateField.setLocale(new Locale("fi", "FI"));
dateField.setCaption(dateField.getLocale().toString());
dateField.setValue(new Date(2013 - 1900, 7 - 1, 27));
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldMinResolution.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldMinResolution.java
index d153dff443..9b6faf201a 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldMinResolution.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldMinResolution.java
@@ -5,7 +5,8 @@ import java.util.Calendar;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.InlineDateField;
import com.vaadin.ui.Label;
@@ -20,7 +21,7 @@ public class DateFieldMinResolution extends TestBase {
Calendar cal = Calendar.getInstance();
cal.set(2019, 1, 1, 1, 1);
- DateField df = new DateField("foo");
+ AbstractDateField df = new TestDateField("foo");
df.setResolution(Resolution.MINUTE);
df.setDateFormat(dformat.toPattern());
df.setValue(cal.getTime());
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosing.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosing.java
index dc8e8164b7..0ac843ef31 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosing.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosing.java
@@ -17,7 +17,8 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class DateFieldPopupClosing extends AbstractTestUI {
@@ -25,7 +26,7 @@ public class DateFieldPopupClosing extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
df.setId(DATEFIELD_ID);
addComponent(df);
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetach.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetach.java
index 1526eb4a48..738bb9a9d8 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetach.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetach.java
@@ -22,7 +22,8 @@ import com.vaadin.event.LayoutEvents.LayoutClickEvent;
import com.vaadin.event.LayoutEvents.LayoutClickListener;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class DateFieldPopupClosingOnDetach extends AbstractTestUI {
@@ -31,7 +32,7 @@ public class DateFieldPopupClosingOnDetach extends AbstractTestUI {
// Use polling to notice the removal of DateField.
getUI().setPollInterval(500);
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
getLayout().addLayoutClickListener(new LayoutClickListener() {
@Override
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupOffScreen.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupOffScreen.java
index 1f5eb4b394..afcc5295e4 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupOffScreen.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupOffScreen.java
@@ -5,8 +5,9 @@ import java.util.Locale;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestCase;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Alignment;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.LegacyWindow;
@@ -29,7 +30,7 @@ public class DateFieldPopupOffScreen extends AbstractTestCase {
GridLayout mainLayout = new GridLayout(3, 3);
mainLayout.setSizeFull();
- DateField df;
+ AbstractDateField df;
df = createDateField();
mainLayout.addComponent(df, 2, 0);
@@ -55,8 +56,8 @@ public class DateFieldPopupOffScreen extends AbstractTestCase {
setMainWindow(mainWindow);
}
- private DateField createDateField() {
- DateField df = new DateField();
+ private AbstractDateField createDateField() {
+ AbstractDateField df = new TestDateField();
df.setLocale(new Locale("fi"));
df.setResolution(Resolution.SECOND);
df.setDescription(
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupPosition.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupPosition.java
index f7cd0ce726..af5464f24c 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupPosition.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPopupPosition.java
@@ -19,7 +19,7 @@ import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
/**
* Test UI for date field Popup calendar.
@@ -35,7 +35,7 @@ public abstract class DateFieldPopupPosition extends AbstractTestUI {
Label gap = new Label();
gap.setWidth(250, Unit.PIXELS);
layout.addComponent(gap);
- PopupDateField field = new PopupDateField();
+ DateField field = new DateField();
layout.addComponent(field);
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPrimaryStyleNames.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPrimaryStyleNames.java
index f81e12151b..b3d2102e7a 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPrimaryStyleNames.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldPrimaryStyleNames.java
@@ -1,16 +1,17 @@
package com.vaadin.tests.components.datefield;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.InlineDateField;
public class DateFieldPrimaryStyleNames extends TestBase {
@Override
protected void setup() {
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
df.setPrimaryStyleName("my-datefield");
addComponent(df);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldRanges.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldRanges.java
index d4912b7ebd..5db5b815e4 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldRanges.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldRanges.java
@@ -8,10 +8,11 @@ import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.MarginInfo;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.InlineDateField;
@@ -30,17 +31,17 @@ public class DateFieldRanges extends AbstractTestUI {
private Label label = new Label();
private NativeSelect resoSelect = new NativeSelect("Resolution");
- private DateField fromRange = new DateField("Range start");
- private DateField toRange = new DateField("Range end");
- private DateField valueDF = new DateField("Value");
+ private AbstractDateField fromRange = new TestDateField("Range start");
+ private AbstractDateField toRange = new TestDateField("Range end");
+ private AbstractDateField valueDF = new TestDateField("Value");
private CheckBox immediateCB = new CheckBox("Immediate");
private Button recreate = new Button("Recreate static datefields");
private Button clearRangeButton = new Button("Clear range");
private GridLayout currentStaticContainer;
- private DateField inlineDynamicDateField;
- private DateField dynamicDateField;
+ private AbstractDateField inlineDynamicDateField;
+ private AbstractDateField dynamicDateField;
private Calendar createCalendar() {
Calendar c = Calendar.getInstance();
@@ -183,11 +184,11 @@ public class DateFieldRanges extends AbstractTestUI {
endCal.add(Calendar.DATE, 30);
GridLayout gl = new GridLayout(2, 2);
gl.setSpacing(true);
- DateField df = createDateField(startCal.getTime(), endCal.getTime(),
- null, Resolution.DAY, false);
+ AbstractDateField df = createDateField(startCal.getTime(),
+ endCal.getTime(), null, Resolution.DAY, false);
gl.addComponent(df);
- DateField inline = createDateField(startCal.getTime(), endCal.getTime(),
- null, Resolution.DAY, true);
+ AbstractDateField inline = createDateField(startCal.getTime(),
+ endCal.getTime(), null, Resolution.DAY, true);
gl.addComponent(inline);
inline.setId("staticInline");
VerticalLayout vl = new VerticalLayout();
@@ -195,18 +196,18 @@ public class DateFieldRanges extends AbstractTestUI {
return gl;
}
- private DateField createDateField(Date rangeStart, Date rangeEnd,
+ private AbstractDateField createDateField(Date rangeStart, Date rangeEnd,
Date value, Resolution resolution, boolean inline) {
- DateField df = null;
+ AbstractDateField df = null;
if (inline) {
df = new InlineDateField();
} else {
- df = new DateField();
+ df = new TestDateField();
}
- final DateField gg = df;
+ final AbstractDateField gg = df;
updateValuesForDateField(df);
df.addValueChangeListener(event -> {
@@ -223,7 +224,7 @@ public class DateFieldRanges extends AbstractTestUI {
}
- private void updateValuesForDateField(DateField df) {
+ private void updateValuesForDateField(AbstractDateField df) {
Date fromVal = fromRange.getValue();
Date toVal = toRange.getValue();
Date value = valueDF.getValue();
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldReadOnly.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldReadOnly.java
index 9addeca5cf..339eff6972 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldReadOnly.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldReadOnly.java
@@ -6,10 +6,11 @@ import java.util.Locale;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.DateField;
public class DateFieldReadOnly extends AbstractTestUI {
@@ -25,7 +26,8 @@ public class DateFieldReadOnly extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- final DateField timeField = new DateField("A read-only datefield");
+ final AbstractDateField timeField = new TestDateField(
+ "A read-only datefield");
timeField.setResolution(Resolution.SECOND);
timeField.setDateFormat("HH:mm:ss");
timeField.setCaption(null);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTest.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTest.java
index 155ce35059..01e6500d35 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTest.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTest.java
@@ -1,145 +1,52 @@
package com.vaadin.tests.components.datefield;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
import java.util.LinkedHashMap;
-import java.util.Locale;
-import com.vaadin.shared.ui.datefield.Resolution;
-import com.vaadin.tests.components.abstractfield.AbstractFieldTest;
import com.vaadin.ui.DateField;
-public class DateFieldTest<T extends DateField>
- extends AbstractFieldTest<T, Date> {
+public class DateFieldTest extends AbstractDateFieldTest<DateField> {
- @SuppressWarnings("unchecked")
@Override
- protected Class<T> getTestClass() {
- return (Class<T>) DateField.class;
+ protected Class<DateField> getTestClass() {
+ return DateField.class;
}
- private Command<T, Date> setValue = new Command<T, Date>() {
-
- @Override
- public void execute(T c, Date value, Object data) {
- c.setValue(value);
- }
- };
-
@Override
protected void createActions() {
super.createActions();
- createResolutionSelectAction(CATEGORY_FEATURES);
- createBooleanAction("Lenient", CATEGORY_FEATURES, false,
- lenientCommand);
- createBooleanAction("Show week numbers", CATEGORY_FEATURES, false,
- weekNumberCommand);
- createDateFormatSelectAction(CATEGORY_FEATURES);
- createSetValueAction(CATEGORY_FEATURES);
-
- }
- private void createSetValueAction(String category) {
- LinkedHashMap<String, Date> options = new LinkedHashMap<>();
- options.put("(null)", null);
- options.put("(current time)", new Date());
- Calendar c = Calendar.getInstance(new Locale("fi", "FI"));
- c.clear();
- c.set(2010, 12 - 1, 12, 12, 0, 0);
- c.set(Calendar.MILLISECOND, 0);
- options.put("2010-12-12 12:00:00.000", c.getTime());
- c.clear();
- c.set(2000, 1 - 1, 2, 3, 4, 5);
- c.set(Calendar.MILLISECOND, 6);
- options.put("2000-01-02 03:04:05.006", c.getTime());
- createMultiClickAction("Set value", category, options, setValue, null);
+ createInputPromptSelectAction(CATEGORY_FEATURES);
+ createTextEnabledAction(CATEGORY_FEATURES);
}
- private void createDateFormatSelectAction(String category) {
+ private void createInputPromptSelectAction(String category) {
LinkedHashMap<String, String> options = new LinkedHashMap<>();
+ options.put("<none>", null);
+ options.put("Please enter date", "Please enter date");
+ options.put("åäöÅÄÖ", "åäöÅÄÖ");
- options.put("-", null);
- options.put("d M yyyy", "d M yyyy");
- options.put("d MM yyyy", "d MM yyyy");
- options.put("d MMM yyyy", "d MMM yyyy");
- options.put("d MMMM yyyy", "d MMMM yyyy");
- options.put("dd M yyyy", "dd M yyyy");
- options.put("ddd M yyyy", "ddd M yyyy");
- options.put("d M y", "d M y");
- options.put("d M yy", "d M yy");
- options.put("d M yyy", "d M yyy");
- options.put("d M yyyy", "d M yyyy");
- options.put("d M 'custom text' yyyy", "d M 'custom text' yyyy");
- options.put("'day:'d', month:'M', year: 'yyyy",
- "'day:'d', month:'M', year: 'yyyy");
- options.put(getDatePattern(new Locale("fi", "FI"), DateFormat.LONG),
- getDatePattern(new Locale("fi", "FI"), DateFormat.LONG));
- options.put(getDatePattern(new Locale("fi", "FI"), DateFormat.MEDIUM),
- getDatePattern(new Locale("fi", "FI"), DateFormat.MEDIUM));
- options.put(getDatePattern(new Locale("fi", "FI"), DateFormat.SHORT),
- getDatePattern(new Locale("fi", "FI"), DateFormat.SHORT));
+ createSelectAction("Input prompt", category, options, "<none>",
+ new Command<DateField, String>() {
- createSelectAction("Date format", category, options, "-",
- dateFormatCommand);
+ @Override
+ public void execute(DateField c, String value,
+ Object data) {
+ c.setInputPrompt(value);
+ }
+ });
}
- private String getDatePattern(Locale locale, int dateStyle) {
- DateFormat dateFormat = DateFormat.getDateInstance(dateStyle, locale);
+ private void createTextEnabledAction(String category) {
+ this.createBooleanAction("Text field enabled", category, true,
+ new Command<DateField, Boolean>() {
- if (dateFormat instanceof SimpleDateFormat) {
- String pattern = ((SimpleDateFormat) dateFormat).toPattern();
- return pattern;
- }
- return null;
+ @Override
+ public void execute(DateField c, Boolean value,
+ Object data) {
+ c.setTextFieldEnabled(value);
+ }
+ });
}
-
- private void createResolutionSelectAction(String category) {
- LinkedHashMap<String, Resolution> options = new LinkedHashMap<>();
- options.put("Year", Resolution.YEAR);
- options.put("Month", Resolution.MONTH);
- options.put("Day", Resolution.DAY);
- options.put("Hour", Resolution.HOUR);
- options.put("Min", Resolution.MINUTE);
- options.put("Sec", Resolution.SECOND);
-
- createSelectAction("Resolution", category, options, "Year",
- resolutionCommand);
- }
-
- private Command<T, Resolution> resolutionCommand = new Command<T, Resolution>() {
-
- @Override
- public void execute(T c, Resolution value, Object data) {
- c.setResolution(value);
-
- }
- };
- private Command<T, Boolean> lenientCommand = new Command<T, Boolean>() {
-
- @Override
- public void execute(T c, Boolean value, Object data) {
- c.setLenient(false);
-
- }
- };
- private Command<T, Boolean> weekNumberCommand = new Command<T, Boolean>() {
-
- @Override
- public void execute(T c, Boolean value, Object data) {
- c.setShowISOWeekNumbers(value);
-
- }
- };
- private Command<T, String> dateFormatCommand = new Command<T, String>() {
-
- @Override
- public void execute(T c, String value, Object data) {
- c.setDateFormat(value);
- }
- };
-
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldTextEnabled.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTextEnabled.java
index e1470797bc..4c5c7f9668 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldTextEnabled.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTextEnabled.java
@@ -2,16 +2,16 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
-public class PopupDateFieldTextEnabled extends TestBase {
+public class DateFieldTextEnabled extends TestBase {
private static final String ENABLED = "DateField text box enabled";
private static final String DISABLED = "DateField text box disabled";
@Override
public void setup() {
- final PopupDateField field = new PopupDateField();
+ final DateField field = new DateField();
final CheckBox box = new CheckBox(ENABLED, true);
box.addValueChangeListener(event -> {
field.setTextFieldEnabled(event.getValue());
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTimezone.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTimezone.java
index 69b331287b..19120be547 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTimezone.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldTimezone.java
@@ -10,8 +10,9 @@ import java.util.TimeZone;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.tests.util.Log;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.v7.data.Property;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.shared.ui.combobox.FilteringMode;
@@ -22,7 +23,7 @@ public class DateFieldTimezone extends TestBase {
private static final TimeZone UTC = TimeZone.getTimeZone("UTC");
private static final Locale EN = Locale.ENGLISH;
private final Log log = new Log(5);
- private final DateField dateField = new DateField();
+ private final AbstractDateField dateField = new TestDateField();
private static final String nullValue = "";
@Override
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java
index 3427701e40..17c9f47c35 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldUnparsableDate.java
@@ -4,12 +4,12 @@ import java.util.Date;
import com.vaadin.data.Result;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.v7.data.util.converter.Converter;
public class DateFieldUnparsableDate extends TestBase {
- public class MyDateField extends DateField {
+ public class MyDateField extends AbstractDateField {
Date oldDate = null;
public MyDateField(String caption) {
@@ -24,7 +24,7 @@ public class DateFieldUnparsableDate extends TestBase {
}
}
- public class MyDateField2 extends DateField {
+ public class MyDateField2 extends AbstractDateField {
public MyDateField2(String caption) {
super(caption);
}
@@ -36,7 +36,7 @@ public class DateFieldUnparsableDate extends TestBase {
}
}
- public class MyDateField3 extends DateField {
+ public class MyDateField3 extends AbstractDateField {
public MyDateField3(String caption) {
super(caption);
}
@@ -48,7 +48,7 @@ public class DateFieldUnparsableDate extends TestBase {
}
}
- public class MyDateField4 extends DateField {
+ public class MyDateField4 extends AbstractDateField {
public MyDateField4(String caption) {
super(caption);
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldValueChangeEvents.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldValueChangeEvents.java
index a65cf18d01..b100cd4c23 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldValueChangeEvents.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldValueChangeEvents.java
@@ -25,7 +25,8 @@ import java.util.Calendar;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUIWithLog;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
@@ -36,7 +37,7 @@ import com.vaadin.v7.ui.NativeSelect;
* @since
* @author Vaadin Ltd
*/
-public class PopupDateFieldValueChangeEvents extends AbstractTestUIWithLog {
+public class DateFieldValueChangeEvents extends AbstractTestUIWithLog {
private int count = 0;
@@ -55,7 +56,8 @@ public class PopupDateFieldValueChangeEvents extends AbstractTestUIWithLog {
Calendar calendar = Calendar.getInstance();
calendar.set(2010, 1, 1, 18, 19, 20);
- final DateField df = new DateField(null, calendar.getTime());
+ final AbstractDateField df = new TestDateField(null,
+ calendar.getTime());
df.setResolution(Resolution.SECOND);
df.setImmediate(true);
hl.addComponent(df);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java
index 8943d058ae..6a7550d0c8 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java
@@ -4,9 +4,10 @@ import java.util.Date;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.DateField;
-import com.vaadin.ui.PopupDateField;
import com.vaadin.ui.VerticalLayout;
public class DateFieldWhenChangingValueAndEnablingParent
@@ -21,12 +22,12 @@ public class DateFieldWhenChangingValueAndEnablingParent
main.setMargin(true);
setContent(main);
- final DateField df1 = createDateField(true);
- final DateField df2 = createDateField(false);
- final PopupDateField pdf1 = createPopupDateField(true, true);
- final PopupDateField pdf2 = createPopupDateField(true, false);
- final PopupDateField pdf3 = createPopupDateField(false, true);
- final PopupDateField pdf4 = createPopupDateField(false, false);
+ final AbstractDateField df1 = createDateField(true);
+ final AbstractDateField df2 = createDateField(false);
+ final DateField pdf1 = createPopupDateField(true, true);
+ final DateField pdf2 = createPopupDateField(true, false);
+ final DateField pdf3 = createPopupDateField(false, true);
+ final DateField pdf4 = createPopupDateField(false, false);
sub.addComponent(df1);
sub.addComponent(df2);
@@ -49,17 +50,17 @@ public class DateFieldWhenChangingValueAndEnablingParent
});
}
- private DateField createDateField(boolean enabled) {
- DateField df = new DateField(
+ private AbstractDateField createDateField(boolean enabled) {
+ AbstractDateField df = new TestDateField(
"DateField, " + (enabled ? "enabled" : "disabled"));
df.setEnabled(enabled);
df.setId("DATEFIELD_" + (enabled ? "ENABLED" : "DISABLED"));
return df;
}
- private PopupDateField createPopupDateField(boolean enabled,
+ private DateField createPopupDateField(boolean enabled,
boolean textInputEnabled) {
- PopupDateField df = new PopupDateField("PopupDateField, "
+ DateField df = new DateField("PopupDateField, "
+ (enabled ? "enabled" : "disabled") + ", text input "
+ (textInputEnabled ? "enabled" : "disabled"));
df.setEnabled(enabled);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFields.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFields.java
index 4847bb0c70..ac77215245 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFields.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateFields.java
@@ -8,24 +8,24 @@ import java.util.Locale;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.ComponentTestCase;
import com.vaadin.ui.Component;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
@SuppressWarnings("serial")
-public class PopupDateFields extends ComponentTestCase<PopupDateField> {
+public class DateFields extends ComponentTestCase<DateField> {
private static final Locale[] LOCALES = new Locale[] { Locale.US,
Locale.TAIWAN, new Locale("fi", "FI") };
@Override
- protected Class<PopupDateField> getTestClass() {
- return PopupDateField.class;
+ protected Class<DateField> getTestClass() {
+ return DateField.class;
}
@Override
protected void initializeComponents() {
for (Locale locale : LOCALES) {
- PopupDateField pd = createPopupDateField("Undefined width", "-1",
+ DateField pd = createPopupDateField("Undefined width", "-1",
locale);
pd.setId("Locale-" + locale.toString() + "-undefined-wide");
addTestComponent(pd);
@@ -40,9 +40,9 @@ public class PopupDateFields extends ComponentTestCase<PopupDateField> {
}
- private PopupDateField createPopupDateField(String caption, String width,
+ private DateField createPopupDateField(String caption, String width,
Locale locale) {
- PopupDateField pd = new PopupDateField(
+ DateField pd = new DateField(
caption + "(" + locale.toString() + ")");
pd.setWidth(width);
pd.setValue(new Date(12312312313L));
@@ -74,10 +74,10 @@ public class PopupDateFields extends ComponentTestCase<PopupDateField> {
options.put("Min", Resolution.MINUTE);
options.put("Sec", Resolution.SECOND);
return createSelectAction("Resolution", options, "Year",
- new Command<PopupDateField, Resolution>() {
+ new Command<DateField, Resolution>() {
@Override
- public void execute(PopupDateField c, Resolution value,
+ public void execute(DateField c, Resolution value,
Object data) {
c.setResolution(value);
@@ -92,10 +92,10 @@ public class PopupDateFields extends ComponentTestCase<PopupDateField> {
options.put("åäöÅÄÖ", "åäöÅÄÖ");
return createSelectAction("Input prompt", options, "<none>",
- new Command<PopupDateField, String>() {
+ new Command<DateField, String>() {
@Override
- public void execute(PopupDateField c, String value,
+ public void execute(DateField c, String value,
Object data) {
c.setInputPrompt(value);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DatePopupStyleName.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DatePopupStyleName.java
index 64f8695308..4e1c59c4a6 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DatePopupStyleName.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DatePopupStyleName.java
@@ -5,14 +5,15 @@ import java.util.Date;
import com.vaadin.server.UserError;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class DatePopupStyleName extends TestBase {
@Override
public void setup() {
setTheme("reindeer-tests");
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
df.setValue(new Date(1203910239L));
df.setResolution(Resolution.SECOND);
df.setWidth("200px");
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateRangeWithSqlDate.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateRangeWithSqlDate.java
index e710be35e5..eb4044c4ae 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateRangeWithSqlDate.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateRangeWithSqlDate.java
@@ -19,7 +19,7 @@ import java.util.Locale;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.InlineDateField;
public class DateRangeWithSqlDate extends AbstractTestUI {
@@ -34,7 +34,7 @@ public class DateRangeWithSqlDate extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- DateField df = new InlineDateField();
+ AbstractDateField df = new InlineDateField();
df.setLocale(Locale.US);
df.setRangeStart(startDate);
df.setRangeEnd(endDate);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldPopup.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldPopup.java
index 047a0ea617..06b7e4c8e0 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldPopup.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldPopup.java
@@ -17,13 +17,14 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class DisabledDateFieldPopup extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- DateField field = new DateField();
+ AbstractDateField field = new TestDateField();
field.setEnabled(false);
addComponent(field);
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java
index cd7026483a..ce44506afa 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledDateFieldWidth.java
@@ -2,16 +2,17 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
public class DisabledDateFieldWidth extends TestBase {
@Override
public void setup() {
- final DateField dateField1 = new DateField("DateField");
+ final AbstractDateField dateField1 = new TestDateField("DateField");
dateField1.setResolution(Resolution.YEAR);
dateField1.setEnabled(false);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledInlineDateField.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledInlineDateField.java
index fa86c6dc14..1669f3da22 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledInlineDateField.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledInlineDateField.java
@@ -20,7 +20,7 @@ import java.util.Date;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.InlineDateField;
public class DisabledInlineDateField extends AbstractTestUI {
@@ -34,7 +34,7 @@ public class DisabledInlineDateField extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- DateField df = new InlineDateField("Disabled");
+ AbstractDateField df = new InlineDateField("Disabled");
df.setValue(testDate);
df.setEnabled(false);
addComponent(df);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledParentLayout.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledParentLayout.java
index 09b90e57c9..ed16a747c0 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledParentLayout.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DisabledParentLayout.java
@@ -17,8 +17,9 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.VerticalLayout;
/**
@@ -35,7 +36,7 @@ public class DisabledParentLayout extends AbstractTestUI {
content.setMargin(true);
final VerticalLayout pane = new VerticalLayout();
- DateField dateField = new DateField();
+ AbstractDateField dateField = new TestDateField();
// If the field is immediate, the UI behaves differently (the value is
// updated and an error is indicated earlier instead of showing the date
// selector on the first click as the test expects. Keeping as
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DynamicallyChangeDateRange.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DynamicallyChangeDateRange.java
index 576d49aa18..b280f751fd 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/DynamicallyChangeDateRange.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DynamicallyChangeDateRange.java
@@ -7,9 +7,9 @@ import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.DateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.InlineDateField;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
import com.vaadin.ui.VerticalLayout;
/**
@@ -25,7 +25,7 @@ public class DynamicallyChangeDateRange extends AbstractTestUI {
layout.setMargin(true);
setContent(layout);
- final PopupDateField df = new PopupDateField();
+ final DateField df = new DateField();
df.setValue(new Date(2012 - 1900, 5 - 1, 12));
setRange(df, 5);
layout.addComponent(df);
@@ -62,7 +62,7 @@ public class DynamicallyChangeDateRange extends AbstractTestUI {
* @param df
* @param i
*/
- private void setRange(DateField df, int days) {
+ private void setRange(AbstractDateField df, int days) {
df.setRangeStart(
new Date(df.getValue().getTime() - days * 24 * 60 * 60 * 1000));
df.setRangeEnd(
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/InlineDateFieldTest.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/InlineDateFieldTest.java
index 1c8d8cfae6..bf10cce66d 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/InlineDateFieldTest.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/InlineDateFieldTest.java
@@ -2,7 +2,7 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.ui.InlineDateField;
-public class InlineDateFieldTest extends DateFieldTest<InlineDateField> {
+public class InlineDateFieldTest extends AbstractDateFieldTest<InlineDateField> {
@Override
protected Class<InlineDateField> getTestClass() {
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/LenientMode.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/LenientMode.java
index 72fed3605e..1e108fca15 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/LenientMode.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/LenientMode.java
@@ -7,8 +7,9 @@ import com.vaadin.data.HasValue.ValueChange;
import com.vaadin.data.HasValue.ValueChangeListener;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
-import com.vaadin.ui.DateField;
public class LenientMode extends TestBase implements ValueChangeListener<Date> {
@@ -30,14 +31,14 @@ public class LenientMode extends TestBase implements ValueChangeListener<Date> {
@SuppressWarnings("deprecation")
Date d = new Date(2009 - 1900, 12 - 1, 31, 23, 59, 59);
- DateField df = new DateField("Lenient ");
+ AbstractDateField df = new TestDateField("Lenient ");
df.setLocale(new Locale("fi"));
df.setResolution(Resolution.DAY);
df.setLenient(true);
df.setImmediate(true);
df.setValue(d);
- DateField df2 = new DateField("Normal ");
+ AbstractDateField df2 = new TestDateField("Normal ");
df2.setLocale(new Locale("fi"));
df2.setResolution(Resolution.DAY);
// df2.setLenient(false);
@@ -51,13 +52,13 @@ public class LenientMode extends TestBase implements ValueChangeListener<Date> {
df.addValueChangeListener(this);
df2.addValueChangeListener(this);
- df = new DateField("Lenient with time");
+ df = new TestDateField("Lenient with time");
df.setLocale(new Locale("fi"));
df.setLenient(true);
df.setImmediate(true);
df.setValue(d);
- df2 = new DateField("Normal with time");
+ df2 = new TestDateField("Normal with time");
df2.setLocale(new Locale("fi"));
// df2.setLenient(false);
df2.setValue(null);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/LocaleChange.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/LocaleChange.java
index a7d527b41e..71e4db4076 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/LocaleChange.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/LocaleChange.java
@@ -23,10 +23,11 @@ import java.util.Locale;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.DateField;
public class LocaleChange extends AbstractTestUI {
@@ -46,7 +47,7 @@ public class LocaleChange extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
df.setLocale(locale24hClock);
df.setResolution(Resolution.SECOND);
df.setValue(dateValue);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/LowResolution.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/LowResolution.java
index 16673fefe7..c5a1d371b4 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/LowResolution.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/LowResolution.java
@@ -5,14 +5,14 @@ import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.InlineDateField;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
@SuppressWarnings("serial")
public class LowResolution extends TestBase {
@Override
protected void setup() {
- final PopupDateField dateField = new PopupDateField();
+ final DateField dateField = new DateField();
dateField.setValue(new java.util.Date());
dateField.setResolution(Resolution.MONTH);
dateField.addValueChangeListener(event -> getMainWindow()
@@ -20,7 +20,7 @@ public class LowResolution extends TestBase {
dateField.setImmediate(true);
getLayout().addComponent(dateField);
- final PopupDateField dateField3 = new PopupDateField();
+ final DateField dateField3 = new DateField();
// dateField.setValue(new java.util.Date());
dateField3.setResolution(Resolution.YEAR);
dateField3.addValueChangeListener(event -> getMainWindow()
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/NarrowPopupDateFieldInTable.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/NarrowPopupDateFieldInTable.java
index ed7573ef3d..2cced8482b 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/NarrowPopupDateFieldInTable.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/NarrowPopupDateFieldInTable.java
@@ -2,7 +2,7 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Component;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
import com.vaadin.v7.ui.Table;
public class NarrowPopupDateFieldInTable extends TestBase {
@@ -11,7 +11,7 @@ public class NarrowPopupDateFieldInTable extends TestBase {
@Override
public void setup() {
- PopupDateField df = new PopupDateField();
+ DateField df = new DateField();
df.setWidth("100%");
Table t = new Table();
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java
index 94fefcb429..64c24beec9 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java
@@ -18,26 +18,27 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.VerticalLayout;
public class PopupClosingWithEsc extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
- DateField df0 = new DateField("Minute");
+ AbstractDateField df0 = new TestDateField("Minute");
df0.setId("minute");
df0.setResolution(Resolution.MINUTE);
- DateField df1 = new DateField("Day");
+ AbstractDateField df1 = new TestDateField("Day");
df1.setId("day");
df1.setResolution(Resolution.DAY);
- DateField df2 = new DateField("Month");
+ AbstractDateField df2 = new TestDateField("Month");
df2.setId("month");
df2.setResolution(Resolution.MONTH);
- DateField df3 = new DateField("Year");
+ AbstractDateField df3 = new TestDateField("Year");
df3.setId("year");
df3.setResolution(Resolution.YEAR);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java
index 2608e6e081..ed4b2d8d77 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldExtendedRange.java
@@ -9,7 +9,7 @@ import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
@SuppressWarnings("serial")
public class PopupDateFieldExtendedRange extends AbstractTestUI {
@@ -22,7 +22,7 @@ public class PopupDateFieldExtendedRange extends AbstractTestUI {
getLayout().setSpacing(true);
- final PopupDateField[] fields = new PopupDateField[3];
+ final DateField[] fields = new DateField[3];
fields[0] = makeDateField();
fields[0].setLocale(new Locale("fi", "FI"));
@@ -37,7 +37,7 @@ public class PopupDateFieldExtendedRange extends AbstractTestUI {
fields[2].setShowISOWeekNumbers(true);
fields[2].setCaption("Finnish locale with week numbers");
- for (PopupDateField f : fields) {
+ for (DateField f : fields) {
addComponent(f);
}
@@ -45,7 +45,7 @@ public class PopupDateFieldExtendedRange extends AbstractTestUI {
@Override
public void buttonClick(ClickEvent event) {
date.set(2010, 1, 16);
- for (PopupDateField f : fields) {
+ for (DateField f : fields) {
f.setValue(date.getTime());
}
}
@@ -62,8 +62,8 @@ public class PopupDateFieldExtendedRange extends AbstractTestUI {
return 6718;
}
- private PopupDateField makeDateField() {
- PopupDateField pdf = new PopupDateField();
+ private DateField makeDateField() {
+ DateField pdf = new DateField();
pdf.setResolution(Resolution.DAY);
pdf.setValue(date.getTime());
return pdf;
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPrompt.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPrompt.java
index 3403cccfb2..9ff366e2d0 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPrompt.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPrompt.java
@@ -17,7 +17,7 @@ package com.vaadin.tests.components.datefield;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
import com.vaadin.ui.TextField;
/**
@@ -29,7 +29,7 @@ import com.vaadin.ui.TextField;
public class PopupDateFieldInputPrompt extends AbstractTestUI {
private TextField text = new TextField("TextField");
- private PopupDateField dateField = new PopupDateField();
+ private DateField dateField = new DateField();
@Override
protected void setup(VaadinRequest request) {
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldLocaleTest.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldLocaleTest.java
index 5933581a30..5ea0eb0e70 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldLocaleTest.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldLocaleTest.java
@@ -6,7 +6,7 @@ import java.util.Locale;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
public class PopupDateFieldLocaleTest extends AbstractTestUI {
@@ -21,7 +21,7 @@ public class PopupDateFieldLocaleTest extends AbstractTestUI {
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
- final PopupDateField pdf = new PopupDateField();
+ final DateField pdf = new DateField();
pdf.setLocale(Locale.ENGLISH);
pdf.setValue(cal.getTime());
pdf.setImmediate(true);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java
index 8bb816181c..a2d276fde3 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java
@@ -5,7 +5,7 @@ import java.util.Locale;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
public class PopupDateFieldPopup extends TestBase {
@@ -20,7 +20,7 @@ public class PopupDateFieldPopup extends TestBase {
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.MILLISECOND, 1);
- PopupDateField pdf = new PopupDateField();
+ DateField pdf = new DateField();
pdf.setLocale(Locale.US);
pdf.setValue(cal.getTime());
pdf.setImmediate(true);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldStates.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldStates.java
index aae4a213c6..bcfb00e88c 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldStates.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldStates.java
@@ -7,7 +7,7 @@ import java.util.GregorianCalendar;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.GridLayout;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
@SuppressWarnings("serial")
public class PopupDateFieldStates extends AbstractTestUI {
@@ -35,9 +35,9 @@ public class PopupDateFieldStates extends AbstractTestUI {
return 14565;
}
- private static PopupDateField createPopupDateField(final boolean enabled,
+ private static DateField createPopupDateField(final boolean enabled,
final boolean textFieldEnabled) {
- final PopupDateField popupDatefield = new PopupDateField();
+ final DateField popupDatefield = new DateField();
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DATE, 3);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldTest.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldTest.java
deleted file mode 100644
index 54a23b5666..0000000000
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/PopupDateFieldTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.vaadin.tests.components.datefield;
-
-import java.util.LinkedHashMap;
-
-import com.vaadin.ui.PopupDateField;
-
-public class PopupDateFieldTest extends DateFieldTest<PopupDateField> {
-
- @Override
- protected Class<PopupDateField> getTestClass() {
- return PopupDateField.class;
- }
-
- @Override
- protected void createActions() {
- super.createActions();
-
- createInputPromptSelectAction(CATEGORY_FEATURES);
- createTextEnabledAction(CATEGORY_FEATURES);
- }
-
- private void createInputPromptSelectAction(String category) {
- LinkedHashMap<String, String> options = new LinkedHashMap<>();
- options.put("<none>", null);
- options.put("Please enter date", "Please enter date");
- options.put("åäöÅÄÖ", "åäöÅÄÖ");
-
- createSelectAction("Input prompt", category, options, "<none>",
- new Command<PopupDateField, String>() {
-
- @Override
- public void execute(PopupDateField c, String value,
- Object data) {
- c.setInputPrompt(value);
-
- }
- });
- }
-
- private void createTextEnabledAction(String category) {
- this.createBooleanAction("Text field enabled", category, true,
- new Command<PopupDateField, Boolean>() {
-
- @Override
- public void execute(PopupDateField c, Boolean value,
- Object data) {
- c.setTextFieldEnabled(value);
- }
-
- });
- }
-}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/TestDatefieldYear.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/TestDatefieldYear.java
index eb7545812e..da8860c111 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/TestDatefieldYear.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/TestDatefieldYear.java
@@ -5,7 +5,8 @@ import java.util.Locale;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
public class TestDatefieldYear extends TestBase {
@@ -22,7 +23,8 @@ public class TestDatefieldYear extends TestBase {
@Override
protected void setup() {
@SuppressWarnings("deprecation")
- DateField df = new DateField("Year", new Date(2009 - 1900, 4 - 1, 1));
+ AbstractDateField df = new TestDateField("Year",
+ new Date(2009 - 1900, 4 - 1, 1));
df.setLocale(new Locale("en", "US"));
df.setResolution(Resolution.YEAR);
df.setResolution(Resolution.MONTH);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java
index cf42fcad75..6c83ee4b0e 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/WidthRecalculationOnEnableStateChange.java
@@ -4,16 +4,17 @@ import java.util.Date;
import com.vaadin.shared.ui.datefield.Resolution;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.DateField;
public class WidthRecalculationOnEnableStateChange extends TestBase {
@Override
public void setup() {
setTheme("reindeer-tests");
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
df.setValue(new Date(1203910239L));
df.setResolution(Resolution.SECOND);
df.setWidth("200px");
diff --git a/uitest/src/main/java/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.java b/uitest/src/main/java/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.java
index e9e58d9228..85774a8efe 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/formlayout/FormLayoutErrorHover.java
@@ -18,14 +18,14 @@ package com.vaadin.tests.components.formlayout;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.FormLayout;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
public class FormLayoutErrorHover extends AbstractTestUI {
@Override
protected void setup(VaadinRequest request) {
FormLayout formLayout = new FormLayout();
- PopupDateField fromDate = new PopupDateField("Date");
+ DateField fromDate = new DateField("Date");
fromDate.setImmediate(true);
formLayout.addComponent(fromDate);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/gridlayout/LayoutAfterHidingError.java b/uitest/src/main/java/com/vaadin/tests/components/gridlayout/LayoutAfterHidingError.java
index 88fd65213c..ea0a123ef8 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/gridlayout/LayoutAfterHidingError.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/gridlayout/LayoutAfterHidingError.java
@@ -19,10 +19,11 @@ package com.vaadin.tests.components.gridlayout;
import com.vaadin.server.UserError;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Panel;
@@ -38,7 +39,7 @@ public class LayoutAfterHidingError extends AbstractTestUI {
gl.setWidth("100%");
panel.setContent(gl);
- final DateField df = new DateField();
+ final AbstractDateField df = new TestDateField();
df.setWidth("100%");
gl.addComponent(df);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/table/TableChildMeasurementHint.java b/uitest/src/main/java/com/vaadin/tests/components/table/TableChildMeasurementHint.java
index 8b4338187e..b6cb87616d 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/table/TableChildMeasurementHint.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/table/TableChildMeasurementHint.java
@@ -2,11 +2,12 @@ package com.vaadin.tests.components.table;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.AbstractOrderedLayout;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HasChildMeasurementHint.ChildMeasurementHint;
import com.vaadin.ui.HorizontalLayout;
@@ -152,7 +153,7 @@ public class TableChildMeasurementHint extends AbstractTestUI {
table.addGeneratedColumn("First_Name" + 4, new Table.ColumnGenerator() {
@Override
public Object generateCell(Table components, Object o, Object o2) {
- DateField b = new DateField("DateField");
+ AbstractDateField b = new TestDateField("DateField");
b.setWidthUndefined();
return b;
}
diff --git a/uitest/src/main/java/com/vaadin/tests/components/tabsheet/ScrollbarsInNestedTabsheets.java b/uitest/src/main/java/com/vaadin/tests/components/tabsheet/ScrollbarsInNestedTabsheets.java
index 55b4d59f80..9210314c0c 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/tabsheet/ScrollbarsInNestedTabsheets.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/tabsheet/ScrollbarsInNestedTabsheets.java
@@ -1,7 +1,7 @@
package com.vaadin.tests.components.tabsheet;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.DateField;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.Layout;
import com.vaadin.ui.TabSheet;
@@ -32,14 +32,14 @@ public class ScrollbarsInNestedTabsheets extends TestBase {
private Layout getDummyLayout1() {
final VerticalLayout l = new VerticalLayout();
- l.addComponent(new DateField("Date"));
+ l.addComponent(new TestDateField("Date"));
return l;
}
private Layout getDummyLayout2() {
final VerticalLayout l = new VerticalLayout();
- l.addComponent(new DateField("Date"));
+ l.addComponent(new TestDateField("Date"));
l.addComponent(new TextField("TextField"));
return l;
diff --git a/uitest/src/main/java/com/vaadin/tests/components/uitest/components/DatesCssTest.java b/uitest/src/main/java/com/vaadin/tests/components/uitest/components/DatesCssTest.java
index cb97e8ee84..c6dbd4e025 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/uitest/components/DatesCssTest.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/uitest/components/DatesCssTest.java
@@ -3,12 +3,13 @@ package com.vaadin.tests.components.uitest.components;
import java.util.Calendar;
import java.util.GregorianCalendar;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.tests.components.uitest.TestSampler;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Component;
import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.InlineDateField;
-import com.vaadin.ui.PopupDateField;
import com.vaadin.ui.themes.ChameleonTheme;
public class DatesCssTest extends GridLayout {
@@ -28,7 +29,7 @@ public class DatesCssTest extends GridLayout {
createDateFieldWith("Small", ChameleonTheme.DATEFIELD_SMALL, null);
createDateFieldWith("Big", ChameleonTheme.DATEFIELD_BIG, null);
- DateField df = new PopupDateField("Popup date field");
+ AbstractDateField df = new DateField("Popup date field");
df.setId("datefield" + debugIdCounter++);
df.setValue(cal.getTime());
addComponent(df);
@@ -47,7 +48,7 @@ public class DatesCssTest extends GridLayout {
private void createDateFieldWith(String caption, String primaryStyleName,
String width) {
- DateField df = new DateField("Date field");
+ AbstractDateField df = new TestDateField("Date field");
df.setId("datefield" + debugIdCounter++);
df.setValue(cal.getTime());
diff --git a/uitest/src/main/java/com/vaadin/tests/declarative/PotusForm.java b/uitest/src/main/java/com/vaadin/tests/declarative/PotusForm.java
index 1eb6d21bb4..28525efc0f 100644
--- a/uitest/src/main/java/com/vaadin/tests/declarative/PotusForm.java
+++ b/uitest/src/main/java/com/vaadin/tests/declarative/PotusForm.java
@@ -17,7 +17,7 @@ package com.vaadin.tests.declarative;
import com.vaadin.annotations.DesignRoot;
import com.vaadin.ui.Button;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.declarative.Design;
import com.vaadin.v7.data.fieldgroup.PropertyId;
@@ -34,9 +34,9 @@ public class PotusForm extends VerticalLayout {
@PropertyId("party")
public ComboBox party;
@PropertyId("tookOffice")
- public PopupDateField tookOffice;
+ public DateField tookOffice;
@PropertyId("leftOffice")
- public PopupDateField leftOffice;
+ public DateField leftOffice;
public Button save;
public Button revert;
diff --git a/uitest/src/main/java/com/vaadin/tests/fieldgroup/DateForm.java b/uitest/src/main/java/com/vaadin/tests/fieldgroup/DateForm.java
index 964a87a614..af8f5b4692 100644
--- a/uitest/src/main/java/com/vaadin/tests/fieldgroup/DateForm.java
+++ b/uitest/src/main/java/com/vaadin/tests/fieldgroup/DateForm.java
@@ -79,8 +79,7 @@ public class DateForm extends AbstractTestUIWithLog {
protected void setup(VaadinRequest request) {
setLocale(Locale.US);
addComponent(log);
- final FieldGroup fieldGroup = new BeanFieldGroup<>(
- DateObject.class);
+ final FieldGroup fieldGroup = new BeanFieldGroup<>(DateObject.class);
fieldGroup.setBuffered(true);
fieldGroup.buildAndBindMemberFields(this);
@@ -128,7 +127,7 @@ public class DateForm extends AbstractTestUIWithLog {
addComponent(showBean);
DateObject d = new DateObject(new Date(443457289789L),
- new Date(443457289789L), new Date(443457289789L),
+ new Date(443543689789L), new Date(443457289789L),
new Date(443457289789L));
fieldGroup.setItemDataSource(new BeanItem<>(d));
}
diff --git a/uitest/src/main/java/com/vaadin/tests/fields/TabIndexes.java b/uitest/src/main/java/com/vaadin/tests/fields/TabIndexes.java
index 12539b84cd..08ee0f605d 100644
--- a/uitest/src/main/java/com/vaadin/tests/fields/TabIndexes.java
+++ b/uitest/src/main/java/com/vaadin/tests/fields/TabIndexes.java
@@ -13,7 +13,7 @@ import com.vaadin.ui.Component;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.InlineDateField;
-import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.DateField;
import com.vaadin.ui.RichTextArea;
import com.vaadin.ui.Slider;
import com.vaadin.v7.ui.ComboBox;
@@ -97,7 +97,7 @@ public class TabIndexes extends AbstractTestUIWithLog {
fields.add(new NativeSelect());
fields.add(new ListSelect());
fields.add(new TextField());
- fields.add(new PopupDateField());
+ fields.add(new DateField());
fields.add(new InlineDateField());
OptionGroup og = new OptionGroup();
og.addItem("Item 1");
diff --git a/uitest/src/main/java/com/vaadin/tests/fonticon/FontIcons.java b/uitest/src/main/java/com/vaadin/tests/fonticon/FontIcons.java
index 6959b1a852..0db298da7e 100644
--- a/uitest/src/main/java/com/vaadin/tests/fonticon/FontIcons.java
+++ b/uitest/src/main/java/com/vaadin/tests/fonticon/FontIcons.java
@@ -31,7 +31,6 @@ import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Component;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
@@ -50,6 +49,7 @@ import com.vaadin.v7.ui.ComboBox;
import com.vaadin.v7.ui.ListSelect;
import com.vaadin.v7.ui.NativeSelect;
import com.vaadin.v7.ui.OptionGroup;
+import com.vaadin.v7.ui.PopupDateField;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.Table.Align;
import com.vaadin.v7.ui.Table.RowHeaderMode;
@@ -110,9 +110,10 @@ public class FontIcons extends AbstractTestUI {
layout.addComponent(gl);
// Basic components, caption icon only
- Class<?>[] components = { Button.class, CheckBox.class, DateField.class,
- NativeButton.class, Link.class, Label.class, Panel.class,
- Slider.class, TextArea.class, TextField.class, Upload.class };
+ Class<?>[] components = { Button.class, CheckBox.class,
+ PopupDateField.class, NativeButton.class, Link.class,
+ Label.class, Panel.class, Slider.class, TextArea.class,
+ TextField.class, Upload.class };
for (Class<?> clazz : components) {
Component c;
try {
diff --git a/uitest/src/main/java/com/vaadin/tests/layouts/CaptionsInLayoutsWaiAria.java b/uitest/src/main/java/com/vaadin/tests/layouts/CaptionsInLayoutsWaiAria.java
index 0cd4eb9f32..957821a450 100644
--- a/uitest/src/main/java/com/vaadin/tests/layouts/CaptionsInLayoutsWaiAria.java
+++ b/uitest/src/main/java/com/vaadin/tests/layouts/CaptionsInLayoutsWaiAria.java
@@ -7,6 +7,7 @@ import com.vaadin.data.HasRequired;
import com.vaadin.server.ThemeResource;
import com.vaadin.server.UserError;
import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
@@ -15,7 +16,6 @@ import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.CssLayout;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.HorizontalLayout;
@@ -200,7 +200,7 @@ public class CaptionsInLayoutsWaiAria extends TestBase {
components.add(new TextArea("Default TextArea."));
// components.add(new RichTextArea("Default RichtTextArea"));
components.add(new PasswordField("Default Password"));
- components.add(new DateField("Default DateField"));
+ components.add(new TestDateField("Default DateField"));
// PopupDateField popupDateField = new
// PopupDateField("Default DateField");
diff --git a/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/BaseRegError.java b/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/BaseRegError.java
index 857b7e51ce..b855982463 100644
--- a/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/BaseRegError.java
+++ b/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/BaseRegError.java
@@ -16,10 +16,10 @@
package com.vaadin.tests.layouts.layouttester;
import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.v7.ui.ComboBox;
@@ -52,7 +52,7 @@ public class BaseRegError extends BaseLayoutTestUI {
l1.addComponent(createLabelsFields(TextField.class, true, ""));
l2.addComponent(createLabelsFields(ComboBox.class, true, ""));
- l2.addComponent(createLabelsFields(DateField.class, true, ""));
+ l2.addComponent(createLabelsFields(TestDateField.class, true, ""));
l2.addComponent(createLabelsFields(NativeSelect.class, true, ""));
l2.addComponent(createLabelsFields(CheckBox.class, true, ""));
diff --git a/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/GridLayout/GridLayoutRegError.java b/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/GridLayout/GridLayoutRegError.java
index a62ebe7a34..8be3b36605 100644
--- a/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/GridLayout/GridLayoutRegError.java
+++ b/uitest/src/main/java/com/vaadin/tests/layouts/layouttester/GridLayout/GridLayoutRegError.java
@@ -16,9 +16,9 @@
package com.vaadin.tests.layouts.layouttester.GridLayout;
import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.TestDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.v7.ui.ComboBox;
@@ -46,7 +46,7 @@ public class GridLayoutRegError extends GridBaseLayoutTestUI {
layout.addComponent(createLabelsFields(TextField.class, true, ""));
layout.addComponent(createLabelsFields(ComboBox.class, true, ""));
- layout.addComponent(createLabelsFields(DateField.class, true, ""));
+ layout.addComponent(createLabelsFields(TestDateField.class, true, ""));
layout.addComponent(createLabelsFields(NativeSelect.class, true, ""));
layout.addComponent(createLabelsFields(CheckBox.class, true, ""));
diff --git a/uitest/src/main/java/com/vaadin/tests/themes/valo/DateFields.java b/uitest/src/main/java/com/vaadin/tests/themes/valo/DateFields.java
index 784c82304c..c9797709da 100644
--- a/uitest/src/main/java/com/vaadin/tests/themes/valo/DateFields.java
+++ b/uitest/src/main/java/com/vaadin/tests/themes/valo/DateFields.java
@@ -22,11 +22,12 @@ import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.server.UserError;
import com.vaadin.shared.ui.datefield.Resolution;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CssLayout;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.InlineDateField;
@@ -50,16 +51,16 @@ public class DateFields extends VerticalLayout implements View {
row.setSpacing(true);
addComponent(row);
- DateField date = new DateField("Default resolution");
+ AbstractDateField date = new TestDateField("Default resolution");
setDate(date);
row.addComponent(date);
- date = new DateField("Error");
+ date = new TestDateField("Error");
setDate(date);
date.setComponentError(new UserError("Fix it, now!"));
row.addComponent(date);
- date = new DateField("Error, borderless");
+ date = new TestDateField("Error, borderless");
setDate(date);
date.setComponentError(new UserError("Fix it, now!"));
date.addStyleName(ValoTheme.DATEFIELD_BORDERLESS);
@@ -70,7 +71,7 @@ public class DateFields extends VerticalLayout implements View {
group.addStyleName(ValoTheme.LAYOUT_COMPONENT_GROUP);
row.addComponent(group);
- final DateField date2 = new DateField();
+ final TestDateField date2 = new TestDateField();
group.addComponent(date2);
Button today = new Button("Today", new ClickListener() {
@@ -81,109 +82,109 @@ public class DateFields extends VerticalLayout implements View {
});
group.addComponent(today);
- date = new DateField("Default resolution, explicit size");
+ date = new TestDateField("Default resolution, explicit size");
setDate(date);
row.addComponent(date);
date.setWidth("260px");
date.setHeight("60px");
- date = new DateField("Second resolution");
+ date = new TestDateField("Second resolution");
setDate(date);
date.setResolution(Resolution.SECOND);
row.addComponent(date);
- date = new DateField("Minute resolution");
+ date = new TestDateField("Minute resolution");
setDate(date);
date.setResolution(Resolution.MINUTE);
row.addComponent(date);
- date = new DateField("Hour resolution");
+ date = new TestDateField("Hour resolution");
setDate(date);
date.setResolution(Resolution.HOUR);
row.addComponent(date);
- date = new DateField("Disabled");
+ date = new TestDateField("Disabled");
setDate(date);
date.setResolution(Resolution.HOUR);
date.setEnabled(false);
row.addComponent(date);
- date = new DateField("Day resolution");
+ date = new TestDateField("Day resolution");
setDate(date);
date.setResolution(Resolution.DAY);
row.addComponent(date);
- date = new DateField("Month resolution");
+ date = new TestDateField("Month resolution");
setDate(date);
date.setResolution(Resolution.MONTH);
row.addComponent(date);
- date = new DateField("Year resolution");
+ date = new TestDateField("Year resolution");
setDate(date);
date.setResolution(Resolution.YEAR);
row.addComponent(date);
- date = new DateField("Custom color");
+ date = new TestDateField("Custom color");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName("color1");
row.addComponent(date);
- date = new DateField("Custom color");
+ date = new TestDateField("Custom color");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName("color2");
row.addComponent(date);
- date = new DateField("Custom color");
+ date = new TestDateField("Custom color");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName("color3");
row.addComponent(date);
- date = new DateField("Small");
+ date = new TestDateField("Small");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_SMALL);
row.addComponent(date);
- date = new DateField("Large");
+ date = new TestDateField("Large");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_LARGE);
row.addComponent(date);
- date = new DateField("Borderless");
+ date = new TestDateField("Borderless");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_BORDERLESS);
row.addComponent(date);
- date = new DateField("Week numbers");
+ date = new TestDateField("Week numbers");
setDate(date);
date.setResolution(Resolution.DAY);
date.setLocale(new Locale("fi", "fi"));
date.setShowISOWeekNumbers(true);
row.addComponent(date);
- date = new DateField("US locale");
+ date = new TestDateField("US locale");
setDate(date);
date.setResolution(Resolution.SECOND);
date.setLocale(new Locale("en", "US"));
row.addComponent(date);
- date = new DateField("Custom format");
+ date = new TestDateField("Custom format");
setDate(date);
date.setDateFormat("E dd/MM/yyyy");
row.addComponent(date);
- date = new DateField("Tiny");
+ date = new TestDateField("Tiny");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_TINY);
row.addComponent(date);
- date = new DateField("Huge");
+ date = new TestDateField("Huge");
setDate(date);
date.setResolution(Resolution.DAY);
date.addStyleName(ValoTheme.DATEFIELD_HUGE);
@@ -201,8 +202,7 @@ public class DateFields extends VerticalLayout implements View {
row.addComponent(date);
PropertysetItem item = new PropertysetItem();
- item.addItemProperty("date",
- new ObjectProperty<>(getDefaultDate()));
+ item.addItemProperty("date", new ObjectProperty<>(getDefaultDate()));
FormLayout form = new FormLayout();
form.setMargin(false);
@@ -215,7 +215,7 @@ public class DateFields extends VerticalLayout implements View {
row.addComponent(form);
}
- private void setDateRange(DateField date) {
+ private void setDateRange(AbstractDateField date) {
date.setRangeStart(getDefaultDate());
Date endDate = getDefaultDate();
@@ -223,7 +223,7 @@ public class DateFields extends VerticalLayout implements View {
date.setRangeEnd(endDate);
}
- private void setDate(DateField date) {
+ private void setDate(AbstractDateField date) {
date.setValue(getDefaultDate());
}
diff --git a/uitest/src/main/java/com/vaadin/tests/themes/valo/Forms.java b/uitest/src/main/java/com/vaadin/tests/themes/valo/Forms.java
index c7a677de7f..a47e3af78b 100644
--- a/uitest/src/main/java/com/vaadin/tests/themes/valo/Forms.java
+++ b/uitest/src/main/java/com/vaadin/tests/themes/valo/Forms.java
@@ -21,20 +21,21 @@ import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.server.UserError;
import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.FormLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
+import com.vaadin.ui.RichTextArea;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.ValoTheme;
import com.vaadin.v7.ui.ComboBox;
import com.vaadin.v7.ui.OptionGroup;
-import com.vaadin.ui.RichTextArea;
import com.vaadin.v7.ui.TextArea;
import com.vaadin.v7.ui.TextField;
@@ -69,7 +70,7 @@ public class Forms extends VerticalLayout implements View {
name.setWidth("50%");
form.addComponent(name);
- DateField birthday = new DateField("Birthday");
+ AbstractDateField birthday = new TestDateField("Birthday");
birthday.setValue(new Date(80, 0, 31));
form.addComponent(birthday);
diff --git a/uitest/src/main/java/com/vaadin/tests/themes/valo/Tables.java b/uitest/src/main/java/com/vaadin/tests/themes/valo/Tables.java
index 3baa249473..bce3d32161 100644
--- a/uitest/src/main/java/com/vaadin/tests/themes/valo/Tables.java
+++ b/uitest/src/main/java/com/vaadin/tests/themes/valo/Tables.java
@@ -22,9 +22,10 @@ import com.vaadin.event.dd.acceptcriteria.AcceptAll;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
+import com.vaadin.tests.components.TestDateField;
+import com.vaadin.ui.AbstractDateField;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.DateField;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Notification;
@@ -198,7 +199,7 @@ public class Tables extends VerticalLayout implements View {
@Override
public Object generateCell(Table source, Object itemId,
Object columnId) {
- DateField tf = new DateField();
+ AbstractDateField tf = new TestDateField();
tf.addStyleName(ValoTheme.TABLE_COMPACT);
if ((Integer) itemId % 2 == 0) {
tf.addStyleName(ValoTheme.DATEFIELD_BORDERLESS);
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldTestTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/AbstractDateFieldTestTest.java
index a66018b7dd..caaf84b8f7 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldTestTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/AbstractDateFieldTestTest.java
@@ -25,7 +25,7 @@ import org.openqa.selenium.interactions.Actions;
import com.vaadin.testbench.elements.NotificationElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
-public class DateFieldTestTest extends MultiBrowserTest {
+public class AbstractDateFieldTestTest extends MultiBrowserTest {
@Test
public void testMakingRequired() throws InterruptedException {
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffsetTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffsetTest.java
index f1969c5aff..ffe8239da1 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffsetTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldDayResolutionOffsetTest.java
@@ -7,7 +7,7 @@ import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
-import com.vaadin.testbench.elements.DateFieldElement;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
@@ -35,7 +35,7 @@ public class DateFieldDayResolutionOffsetTest extends MultiBrowserTest {
}
private void openDatePicker() {
- DateFieldElement dateField = $(DateFieldElement.class).first();
+ AbstractDateFieldElement dateField = $(AbstractDateFieldElement.class).first();
dateField.findElement(By.tagName("button")).click();
}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldElementTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldElementTest.java
new file mode 100644
index 0000000000..ce87676cc2
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldElementTest.java
@@ -0,0 +1,26 @@
+package com.vaadin.tests.components.datefield;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+import org.junit.Test;
+
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
+import com.vaadin.testbench.elements.DateFieldElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class DateFieldElementTest extends SingleBrowserTest {
+
+ @Test
+ public void dateFieldElementIsLocated() {
+ openTestURL();
+
+ assertThat($(DateFieldElement.class).all().size(), is(1));
+ assertThat($(AbstractDateFieldElement.class).all().size(), is(2));
+ }
+
+ @Override
+ protected Class<?> getUIClass() {
+ return DateFieldElementUI.class;
+ }
+} \ No newline at end of file
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldIsValidTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldIsValidTest.java
index 9832dd9a15..7e6955a024 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldIsValidTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldIsValidTest.java
@@ -21,8 +21,8 @@ import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.By;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.testbench.elements.DateFieldElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
/**
@@ -36,7 +36,7 @@ public class DateFieldIsValidTest extends MultiBrowserTest {
waitForElementVisible(By.id("Log"));
waitForElementVisible(By.className("v-datefield"));
- WebElement dateTextbox = $(DateFieldElement.class).first()
+ WebElement dateTextbox = $(AbstractDateFieldElement.class).first()
.findElement(By.className("v-textfield"));
ButtonElement button = $(ButtonElement.class).first();
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetachTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetachTest.java
index 1047ee7e87..adc4652522 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetachTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingOnDetachTest.java
@@ -20,6 +20,7 @@ import java.io.IOException;
import org.junit.Test;
import org.openqa.selenium.By;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.elements.DateFieldElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
@@ -31,7 +32,7 @@ public class DateFieldPopupClosingOnDetachTest extends MultiBrowserTest {
openTestURL();
// Open the DateField popup.
- DateFieldElement df = $(DateFieldElement.class).first();
+ DateFieldElement df = $(AbstractDateFieldElement.class).first();
df.findElement(By.tagName("button")).click();
// Test UI will remove the DateField after 1 second.
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingTest.java
index c0b01992d7..09267cfa65 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldPopupClosingTest.java
@@ -10,6 +10,7 @@ import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.elements.DateFieldElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
@@ -69,7 +70,7 @@ public class DateFieldPopupClosingTest extends MultiBrowserTest {
}
private WebElement getToggleButton() {
- DateFieldElement dateField = $(DateFieldElement.class).first();
+ DateFieldElement dateField = $(AbstractDateFieldElement.class).first();
return dateField.findElement(By.tagName("button"));
}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldReadOnlyTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldReadOnlyTest.java
index 08aac1e259..0791b3dd9c 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldReadOnlyTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldReadOnlyTest.java
@@ -6,8 +6,8 @@ import org.junit.Test;
import org.openqa.selenium.Keys;
import com.vaadin.testbench.By;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.elements.ButtonElement;
-import com.vaadin.testbench.elements.DateFieldElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class DateFieldReadOnlyTest extends MultiBrowserTest {
@@ -36,7 +36,7 @@ public class DateFieldReadOnlyTest extends MultiBrowserTest {
private void openPopup() {
// waiting for openPopup() in TB4 beta1:
// http://dev.vaadin.com/ticket/13766
- $(DateFieldElement.class).first().findElement(By.tagName("button"))
+ $(AbstractDateFieldElement.class).first().findElement(By.tagName("button"))
.click();
}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldValueChangeEventsTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldValueChangeEventsTest.java
index c29b6de36d..5f6373ee57 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldValueChangeEventsTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldValueChangeEventsTest.java
@@ -23,12 +23,12 @@ import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;
import com.vaadin.testbench.By;
-import com.vaadin.testbench.elements.DateFieldElement;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.elements.LabelElement;
import com.vaadin.testbench.elements.NativeSelectElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
-public class PopupDateFieldValueChangeEventsTest extends MultiBrowserTest {
+public class DateFieldValueChangeEventsTest extends MultiBrowserTest {
@Test
public void tb2test() throws Exception {
@@ -53,7 +53,7 @@ public class PopupDateFieldValueChangeEventsTest extends MultiBrowserTest {
}
public WebElement getPopUpButton() {
- DateFieldElement datefield = $(DateFieldElement.class).first();
+ AbstractDateFieldElement datefield = $(AbstractDateFieldElement.class).first();
return datefield.findElement((By.className("v-datefield-button")));
}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java
index f2eb27c13a..865323abac 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java
@@ -19,9 +19,9 @@ import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.elements.CheckBoxElement;
import com.vaadin.testbench.elements.DateFieldElement;
-import com.vaadin.testbench.elements.PopupDateFieldElement;
import com.vaadin.tests.tb3.SingleBrowserTest;
public class DateFieldWhenChangingValueAndEnablingParentTest
@@ -32,24 +32,21 @@ public class DateFieldWhenChangingValueAndEnablingParentTest
openTestURL();
$(CheckBoxElement.class).first().click();
- assertState($(DateFieldElement.class).id("DATEFIELD_ENABLED"), true,
+ assertState($(AbstractDateFieldElement.class).id("DATEFIELD_ENABLED"), true,
true);
- assertState($(DateFieldElement.class).id("DATEFIELD_DISABLED"), false,
- false);
+ assertState($(AbstractDateFieldElement.class).id("DATEFIELD_DISABLED"),
+ false, false);
- assertState(
- $(PopupDateFieldElement.class).id("DATEFIELD_ENABLED_ENABLED"),
+ assertState($(DateFieldElement.class).id("DATEFIELD_ENABLED_ENABLED"),
true, true);
- assertState(
- $(PopupDateFieldElement.class).id("DATEFIELD_ENABLED_DISABLED"),
+ assertState($(DateFieldElement.class).id("DATEFIELD_ENABLED_DISABLED"),
true, false);
// disabling widget should always disable input
- assertState(
- $(PopupDateFieldElement.class).id("DATEFIELD_DISABLED_ENABLED"),
+ assertState($(DateFieldElement.class).id("DATEFIELD_DISABLED_ENABLED"),
+ false, false);
+ assertState($(DateFieldElement.class).id("DATEFIELD_DISABLED_DISABLED"),
false, false);
- assertState($(PopupDateFieldElement.class)
- .id("DATEFIELD_DISABLED_DISABLED"), false, false);
}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldConnectorTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldConnectorTest.java
deleted file mode 100644
index 5334327a83..0000000000
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldConnectorTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.vaadin.tests.components.datefield;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-
-import org.junit.Test;
-
-import com.vaadin.testbench.elements.DateFieldElement;
-import com.vaadin.testbench.elements.PopupDateFieldElement;
-import com.vaadin.tests.tb3.SingleBrowserTest;
-
-public class PopupDateFieldConnectorTest extends SingleBrowserTest {
-
- @Test
- public void popupDateFieldElementIsLocated() {
- openTestURL();
-
- assertThat($(PopupDateFieldElement.class).all().size(), is(1));
- assertThat($(DateFieldElement.class).all().size(), is(2));
- }
-} \ No newline at end of file
diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPromptTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPromptTest.java
index 1b2b5c5b71..0c70457c48 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPromptTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/PopupDateFieldInputPromptTest.java
@@ -25,7 +25,7 @@ import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedCondition;
-import com.vaadin.testbench.elements.PopupDateFieldElement;
+import com.vaadin.testbench.customelements.DateFieldElement;
import com.vaadin.testbench.elements.TextFieldElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
@@ -41,8 +41,7 @@ public class PopupDateFieldInputPromptTest extends MultiBrowserTest {
public void testInputPrompt() {
openTestURL();
TextFieldElement textField = $(TextFieldElement.class).first();
- final PopupDateFieldElement dateField = $(PopupDateFieldElement.class)
- .first();
+ final DateFieldElement dateField = $(DateFieldElement.class).first();
// ensure initial state
Assert.assertFalse("DateField required when it shouldn't be.",
@@ -63,7 +62,7 @@ public class PopupDateFieldInputPromptTest extends MultiBrowserTest {
}
private void waitForElementRequiredAndFocused(
- final PopupDateFieldElement dateField, final By locator) {
+ final DateFieldElement dateField, final By locator) {
waitUntil(new ExpectedCondition<Boolean>() {
@Override
@@ -84,7 +83,7 @@ public class PopupDateFieldInputPromptTest extends MultiBrowserTest {
});
}
- private boolean isRequired(PopupDateFieldElement dateField) {
+ private boolean isRequired(DateFieldElement dateField) {
return dateField.getAttribute("class").contains("v-required");
}
}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/uitest/ThemeTest.java b/uitest/src/test/java/com/vaadin/tests/components/uitest/ThemeTest.java
index 387d0d6723..53be4910dd 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/uitest/ThemeTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/uitest/ThemeTest.java
@@ -8,8 +8,8 @@ import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import com.vaadin.testbench.By;
+import com.vaadin.testbench.customelements.AbstractDateFieldElement;
import com.vaadin.testbench.customelements.ComboBoxElement;
-import com.vaadin.testbench.customelements.DateFieldElement;
import com.vaadin.testbench.customelements.FixedNotificationElement;
import com.vaadin.testbench.customelements.TableElement;
import com.vaadin.testbench.customelements.WindowElement;
@@ -187,13 +187,13 @@ public abstract class ThemeTest extends MultiBrowserTest {
private void testDates() throws IOException {
compareScreen("dates");
- $(DateFieldElement.class).id("datefield0").openPopup();
+ $(AbstractDateFieldElement.class).id("datefield0").openPopup();
compareScreen("dates-first-popup");
- $(DateFieldElement.class).id("datefield1").openPopup();
+ $(AbstractDateFieldElement.class).id("datefield1").openPopup();
compareScreen("dates-second-popup");
- $(DateFieldElement.class).id("datefield2").openPopup();
+ $(AbstractDateFieldElement.class).id("datefield2").openPopup();
compareScreen("dates-third-popup");
- $(DateFieldElement.class).id("datefield3").openPopup();
+ $(AbstractDateFieldElement.class).id("datefield3").openPopup();
compareScreen("dates-fourth-popup");
}
}
diff --git a/uitest/src/test/java/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java b/uitest/src/test/java/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java
index 0fd537055c..3af6b0bf7e 100644
--- a/uitest/src/test/java/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/fieldgroup/BasicCrudGridEditorRowTest.java
@@ -25,9 +25,9 @@ import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
-import com.vaadin.testbench.customelements.DateFieldElement;
import com.vaadin.testbench.customelements.GridElement;
import com.vaadin.testbench.elements.CheckBoxElement;
+import com.vaadin.testbench.elements.DateFieldElement;
import com.vaadin.testbench.elements.GridElement.GridCellElement;
import com.vaadin.testbench.elements.GridElement.GridEditorElement;
import com.vaadin.testbench.parallel.TestCategory;
diff --git a/uitest/src/test/java/com/vaadin/tests/fieldgroup/DateFormTest.java b/uitest/src/test/java/com/vaadin/tests/fieldgroup/DateFormTest.java
index 0e7e872947..5bad4aa98c 100644
--- a/uitest/src/test/java/com/vaadin/tests/fieldgroup/DateFormTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/fieldgroup/DateFormTest.java
@@ -5,9 +5,8 @@ import org.junit.Test;
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.By;
-import com.vaadin.testbench.customelements.DateFieldElement;
+import com.vaadin.testbench.elements.DateFieldElement;
import com.vaadin.testbench.elements.InlineDateFieldElement;
-import com.vaadin.testbench.elements.PopupDateFieldElement;
import com.vaadin.testbench.elements.TextFieldElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
@@ -18,7 +17,7 @@ public class DateFormTest extends MultiBrowserTest {
openTestURL();
Assert.assertEquals("Unexpected DateField value,", "1/20/84",
getDateFieldValue());
- Assert.assertEquals("Unexpected PopupDateField value,", "1/20/84",
+ Assert.assertEquals("Unexpected PopupDateField value,", "1/21/84",
getPopupDateFieldValue());
WebElement day20 = getInlineDateFieldCalendarPanel()
.findElement(By.vaadin("#day20"));
@@ -36,7 +35,7 @@ public class DateFormTest extends MultiBrowserTest {
}
protected String getPopupDateFieldValue() {
- return $(PopupDateFieldElement.class).first().getValue();
+ return $(DateFieldElement.class).get(1).getValue();
}
protected WebElement getInlineDateFieldCalendarPanel() {
diff --git a/uitest/src/test/java/com/vaadin/tests/fonticon/FontIconsTest.java b/uitest/src/test/java/com/vaadin/tests/fonticon/FontIconsTest.java
index 3f6dcb01ac..321367189f 100644
--- a/uitest/src/test/java/com/vaadin/tests/fonticon/FontIconsTest.java
+++ b/uitest/src/test/java/com/vaadin/tests/fonticon/FontIconsTest.java
@@ -30,7 +30,7 @@ public class FontIconsTest extends MultiBrowserTest {
@Test
public void checkScreenshot() throws IOException {
openTestURL();
- compareScreen("all");
+ compareScreen("allFontIcons");
}
@Test