aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-03-23 09:44:29 +0200
committerArtur Signell <artur@vaadin.com>2012-03-23 09:44:29 +0200
commitff5cbf06457cf483c7a68d28fa3a876e673ec242 (patch)
tree06c480ea35b95c1f3f2c73f7148a756e1b7ee05d
parent041376540c94999e89d1c888b93eabef87de1a66 (diff)
parentebdb5242b5f1a695aa4aea969ff7b64d8282b51f (diff)
downloadvaadin-framework-ff5cbf06457cf483c7a68d28fa3a876e673ec242.tar.gz
vaadin-framework-ff5cbf06457cf483c7a68d28fa3a876e673ec242.zip
Merge commit 'ebdb5242b5f1a695aa4aea969ff7b64d8282b51f'
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java9
-rw-r--r--tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.html71
-rw-r--r--tests/testbench/com/vaadin/tests/components/datefield/PopupDateFieldPopup.java41
3 files changed, 119 insertions, 2 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java
index 2968e132c6..6802f16b6b 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VCalendarPanel.java
@@ -1196,14 +1196,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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8888/" />
+<title>PopupDateFieldPopup</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">PopupDateFieldPopup</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.datefield.PopupDateFieldPopup?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field</td>
+ <td>74,9</td>
+</tr>
+<tr>
+ <td>pressSpecialKey</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field</td>
+ <td>right</td>
+</tr>
+<tr>
+ <td>enterCharacter</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field</td>
+ <td>1/1/00 01:10:01 AM</td>
+</tr>
+<tr>
+ <td>pressSpecialKey</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field</td>
+ <td>enter</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#popupButton</td>
+ <td>11,8</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/domChild[0]/domChild[1]</td>
+ <td>85,81</td>
+</tr>
+<tr>
+ <td>enterCharacter</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field</td>
+ <td>1/1/00 01:20:01 AM</td>
+</tr>
+<tr>
+ <td>pressSpecialKey</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#field</td>
+ <td>enter</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupCalendar[0]#popupButton</td>
+ <td>16,14</td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestscomponentsdatefieldPopupDateFieldPopup::Root/VOverlay[0]/VCalendarPanel[0]#m</td>
+ <td>20</td>
+</tr>
+</tbody></table>
+</body>
+</html>
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