]> source.dussan.org Git - vaadin-framework.git/commitdiff
Pressing ESC now closes the DateField popup when using month or year resolutions...
authorTeemu Pòˆntelin <teemu@vaadin.com>
Sun, 16 Mar 2014 21:39:04 +0000 (23:39 +0200)
committerVaadin Code Review <review@vaadin.com>
Tue, 18 Mar 2014 10:48:18 +0000 (10:48 +0000)
Change-Id: Icf7b8da00e80ea4dc4843bcd28b005b5e91b866f

client/src/com/vaadin/client/ui/VCalendarPanel.java
uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEscTest.java [new file with mode: 0644]

index e584a21563204e34b027d688aba66ade54095e64..d1a94ffb9a9855bc07167406ef67c7954afbfd53 100644 (file)
@@ -1193,6 +1193,7 @@ public class VCalendarPanel extends FocusableFlexTable implements
         } else if (keycode == getCloseKey()) {
             // TODO fire listener, on users responsibility??
 
+            onCancel();
             return true;
         }
         return false;
@@ -1244,6 +1245,7 @@ public class VCalendarPanel extends FocusableFlexTable implements
             return true;
 
         } else if (keycode == getCloseKey() || keycode == KeyCodes.KEY_TAB) {
+            onCancel();
 
             // TODO fire close event
 
diff --git a/uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java b/uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java
new file mode 100644 (file)
index 0000000..af43f14
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2000-2013 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.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.ui.VerticalLayout;
+
+public class PopupClosingWithEsc extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        DateField df1 = new DateField("Day");
+        df1.setId("day");
+        df1.setResolution(Resolution.DAY);
+
+        DateField df2 = new DateField("Month");
+        df2.setId("month");
+        df2.setResolution(Resolution.MONTH);
+
+        DateField df3 = new DateField("Year");
+        df3.setId("year");
+        df3.setResolution(Resolution.YEAR);
+
+        VerticalLayout layout = new VerticalLayout();
+        layout.setMargin(true);
+        layout.setSpacing(true);
+        layout.addComponents(df1, df2, df3);
+        setContent(layout);
+    }
+
+    @Override
+    protected String getTestDescription() {
+        return "Testing that the DateField popup can be closed with ESC key.";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 12317;
+    }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEscTest.java b/uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEscTest.java
new file mode 100644 (file)
index 0000000..4c4b894
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2000-2013 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.datefield;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class PopupClosingWithEscTest extends MultiBrowserTest {
+
+    @Test
+    public void testPopupClosingDayResolution() {
+        testPopupClosing("day");
+    }
+
+    @Test
+    public void testPopupClosingMonthResolution() {
+        testPopupClosing("month");
+    }
+
+    @Test
+    public void testPopupClosingYearResolution() {
+        testPopupClosing("year");
+    }
+
+    private void testPopupClosing(String dateFieldId) {
+        openTestURL();
+
+        driver.findElement(
+                vaadinLocator("PID_S" + dateFieldId + "#popupButton")).click();
+        assertTrue(isPopupVisible());
+        sendEsc();
+        assertFalse(isPopupVisible());
+    }
+
+    private boolean isPopupVisible() {
+        return !(driver.findElements(By.cssSelector(".v-datefield-popup"))
+                .isEmpty());
+    }
+
+    private void sendEsc() {
+        WebElement elem = driver.findElement(By
+                .cssSelector(".v-datefield-calendarpanel"));
+        new Actions(driver).sendKeys(elem, Keys.ESCAPE).perform();
+    }
+
+}