]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merged TabSheet keyboard focus fixes into master
authorJuho Nurminen <juho@vaadin.com>
Mon, 3 Feb 2014 08:20:52 +0000 (10:20 +0200)
committerJuho Nurminen <juho@vaadin.com>
Mon, 3 Feb 2014 09:05:43 +0000 (09:05 +0000)
Conflicts:
client/src/com/vaadin/client/ui/VTabsheet.java

Change-Id: I456b2523fc0de01fed8b5948ee7cb78f2ff175b0

1  2 
client/src/com/vaadin/client/ui/VTabsheet.java
uitest/src/com/vaadin/tests/components/tabsheet/TabsheetScrollingTest.java

index 81786f26474920c2ecf362772a82d42540cfea83,68a685965bc266c20c53597de108594e6fdb677c..c8b084778f0cf8a862905572c75c68f8410ff98a
@@@ -715,7 -615,12 +715,9 @@@ public class VTabsheet extends VTabshee
              client.updateVariable(id, "selected", tabKeys.get(tabIndex)
                      .toString(), true);
              waitingForResponse = true;
+             tb.getTab(tabIndex).focus(); // move keyboard focus to active tab
          }
 -        // Note that we return true when tabIndex == activeTabIndex; the active
 -        // tab could be selected, it's just a no-op.
 -        return true;
      }
  
      public ApplicationConnection getApplicationConnection() {
index 0000000000000000000000000000000000000000,1670963b9b5dc2e43a922700e7ded02afe2771f3..b55f1057b57499b35fbe07e3c0b377f558f48202
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,60 +1,61 @@@
+ /*
+  * 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.tabsheet;
+ import org.junit.Assert;
+ import org.junit.Test;
+ import org.openqa.selenium.Keys;
+ import org.openqa.selenium.WebElement;
+ import org.openqa.selenium.interactions.Actions;
+ import com.vaadin.testbench.By;
+ import com.vaadin.tests.tb3.MultiBrowserTest;
+ public class TabsheetScrollingTest extends MultiBrowserTest {
+     @Test
+     public void keyboardScrolling() {
+         openTestURL();
+         getTab(1).click();
+         for (int i = 0; i < 10; i++) {
+             sendKey(Keys.ARROW_RIGHT);
+         }
++        sendKey(Keys.SPACE);
+         Assert.assertEquals("Hide this tab (21)", getHideButtonText());
+     }
+     private WebElement getTab(int index) {
+         return getDriver().findElement(
+                 By.vaadin("/VVerticalLayout[0]/Slot[1]"
+                         + "/VVerticalLayout[0]/Slot[0]/VTabsheet[0]"
+                         + "/domChild[0]/domChild[0]/domChild[0]"
+                         + "/domChild[0]/domChild[" + index + "]"));
+     }
+     private String getHideButtonText() {
+         WebElement buttonCaption = getDriver().findElement(
+                 By.vaadin("/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]"
+                         + "/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]"
+                         + "/VButton[0]/domChild[0]/domChild[0]"));
+         return buttonCaption.getText();
+     }
+     private void sendKey(Keys key) {
+         new Actions(getDriver()).sendKeys(key).perform();
+     }
+ }