From ebdb5242b5f1a695aa4aea969ff7b64d8282b51f Mon Sep 17 00:00:00 2001 From: Johannes Dahlström Date: Wed, 14 Mar 2012 12:01:24 +0000 Subject: [Merge from 6.7] #8391 PopupDateField does not update the HH-MM-SS dropdown svn changeset:23236/svn branch:6.8 --- .../terminal/gwt/client/ui/VCalendarPanel.java | 9 ++- .../components/datefield/PopupDateFieldPopup.html | 71 ++++++++++++++++++++++ .../components/datefield/PopupDateFieldPopup.java | 41 +++++++++++++ 3 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.html create mode 100644 tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java index 867e49c181..845ac837f6 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java @@ -1195,14 +1195,19 @@ public class VCalendarPanel extends FocusableFlexTable implements displayedMonth = new Date(value.getYear(), value.getMonth(), 1); } - // Re-render calendar if month or year of focused date has changed - if (oldDisplayedMonth == null || value == null + // Re-render calendar if the displayed month is changed, + // or if a time selector is needed but does not exist. + if ((isTimeSelectorNeeded() && time == null) + || oldDisplayedMonth == null || value == null || oldDisplayedMonth.getYear() != value.getYear() || oldDisplayedMonth.getMonth() != value.getMonth()) { renderCalendar(); } else { focusDay(focusedDate); selectFocused(); + if (isTimeSelectorNeeded()) { + time.updateTimes(); + } } if (!hasFocus) { diff --git a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.html b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.html new file mode 100644 index 0000000000..993d053b63 --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.html @@ -0,0 +1,71 @@ + + + + + + +PopupDateFieldPopup + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PopupDateFieldPopup
open/run/com.vaadin.tests.components.datefield.PopupDateFieldPopup?restartApplication
mouseClickvaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field74,9
pressSpecialKeyvaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#fieldright
enterCharactervaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field1/1/00 01:10:01 AM
pressSpecialKeyvaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#fieldenter
mouseClickvaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#popupButton11,8
mouseClickvaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/domChild[0]/domChild[1]85,81
enterCharactervaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field1/1/00 01:20:01 AM
pressSpecialKeyvaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#fieldenter
mouseClickvaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#popupButton16,14
assertValuevaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::Root/VOverlay[0]/VCalendarPanel[0]#m20
+ + diff --git a/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java new file mode 100644 index 0000000000..5a6f6517bd --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java @@ -0,0 +1,41 @@ +package com.vaadin.tests.components.datefield; + +import java.util.Calendar; +import java.util.Locale; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.DateField; +import com.vaadin.ui.PopupDateField; + +public class PopupDateFieldPopup extends TestBase { + + @Override + protected void setup() { + // Set a specific time for the PopupDateField + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, 2000); + cal.set(Calendar.DAY_OF_YEAR, 1); + cal.set(Calendar.HOUR_OF_DAY, 1); + cal.set(Calendar.MINUTE, 1); + cal.set(Calendar.SECOND, 1); + cal.set(Calendar.MILLISECOND, 1); + + PopupDateField pdf = new PopupDateField(); + pdf.setLocale(Locale.US); + pdf.setValue(cal.getTime()); + pdf.setImmediate(true); + pdf.setResolution(DateField.RESOLUTION_SEC); + addComponent(pdf); + } + + @Override + protected String getDescription() { + return "Changing the minute, second and millisecond parts should also result in an update of the PopupDateField popup contents."; + } + + @Override + protected Integer getTicketNumber() { + return 8391; + } + +} \ No newline at end of file -- cgit v1.2.3