Browse Source

Pressing ESC now closes the DateField popup when using month or year resolutions. (#12317)

Change-Id: Icf7b8da00e80ea4dc4843bcd28b005b5e91b866f
tags/7.1.13
Teemu Pöntelin 10 years ago
parent
commit
52dcbaaf05

+ 2
- 0
client/src/com/vaadin/client/ui/VCalendarPanel.java View 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


+ 57
- 0
uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEsc.java View File

@@ -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;
}

}

+ 67
- 0
uitest/src/com/vaadin/tests/components/datefield/PopupClosingWithEscTest.java View File

@@ -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();
}

}

Loading…
Cancel
Save