diff options
author | Alexey Fansky <alexey.fansky@effective-soft.com> | 2015-03-13 12:06:48 -0700 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-04-15 13:49:15 +0000 |
commit | 8c061294630ba608fbc6a507f9bffe5c24bcfa40 (patch) | |
tree | c107c502577ab22fb5ec5c617c3729a7afdf78ba /uitest | |
parent | e2176c32849af8a5a763c02733367cc9931cd2b6 (diff) | |
download | vaadin-framework-8c061294630ba608fbc6a507f9bffe5c24bcfa40.tar.gz vaadin-framework-8c061294630ba608fbc6a507f9bffe5c24bcfa40.zip |
Re-showed tab is displayed if there is room for it (#17096)
Change-Id: I52c9a47e2b9eed3a3f73f34e4c3e770b915509bf
Diffstat (limited to 'uitest')
2 files changed, 186 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/FirstTabNotVisibleWhenTabsheetNotClipped.java b/uitest/src/com/vaadin/tests/components/tabsheet/FirstTabNotVisibleWhenTabsheetNotClipped.java new file mode 100644 index 0000000000..6d66f1d295 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/tabsheet/FirstTabNotVisibleWhenTabsheetNotClipped.java @@ -0,0 +1,130 @@ +package com.vaadin.tests.components.tabsheet; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.*; + +import java.util.HashMap; +import java.util.Map; + +public class FirstTabNotVisibleWhenTabsheetNotClipped extends AbstractTestUI { + + private TabSheet.Tab firstNotClippedTab; + private TabSheet.Tab firstClippedTab; + + @Override + protected void setup(VaadinRequest request) { + addButton("Toggle first not clipped tab", new Button.ClickListener() { + @Override + public void buttonClick(Button.ClickEvent event) { + firstNotClippedTab.setVisible(!firstNotClippedTab.isVisible()); + } + }); + addComponent(createNotClippedTabSheet()); + + addButton("Toggle first clipped tab", new Button.ClickListener() { + @Override + public void buttonClick(Button.ClickEvent event) { + firstClippedTab.setVisible(!firstClippedTab.isVisible()); + } + }); + addComponent(createClippedTabSheet()); + + addComponent(new Label("VerticalLayout:")); + addBlock(new VerticalLayout()); + addComponent(new Label("HorizontalLayout:")); + addBlock(new HorizontalLayout()); + } + + private TabSheet createNotClippedTabSheet() { + TabSheet notClippedTabSheet = new TabSheet(); + for (int i = 0; i < 2; i++) { + notClippedTabSheet.addTab(createTabContent(i), "Tab " + i); + } + firstNotClippedTab = notClippedTabSheet.getTab(0); + return notClippedTabSheet; + } + + private TabSheet createClippedTabSheet() { + TabSheet clippedTabSheet = new TabSheet(); + for (int i = 0; i < 50; i++) { + clippedTabSheet.addTab(createTabContent(i), "Tab " + i); + } + firstClippedTab = clippedTabSheet.getTab(0); + return clippedTabSheet; + } + + private VerticalLayout createTabContent(int index) { + VerticalLayout layout = new VerticalLayout(); + layout.addComponent(new Label("Tab " + index + " Content")); + return layout; + } + + private void addBlock(Layout layout) { + layout.setWidth("300px"); + + TabSheet tabsheet = new TabSheet(); + String[] letters = { "A", "B", "C", "D" }; + HashMap<String, TabSheet.Tab> tabMap = new HashMap<String, TabSheet.Tab>(); + + for (String letter : letters) { + VerticalLayout vLayout = new VerticalLayout(); + vLayout.addComponent(new Label(letter + 1)); + vLayout.addComponent(new Label(letter + 2)); + vLayout.addComponent(new Label(letter + 3)); + + tabsheet.addTab(vLayout); + tabsheet.getTab(vLayout).setCaption("tab " + letter); + + tabMap.put("tab " + letter, tabsheet.getTab(vLayout)); + } + + VerticalLayout vtabLayout = new VerticalLayout(); + + for (String letter : letters) { + Button btntab = new Button("show tab " + letter); + btntab.setId("tab " + letter); + btntab.addClickListener(createTabListener(tabMap, tabsheet)); + vtabLayout.addComponent(btntab); + } + + layout.addComponent(vtabLayout); + layout.addComponent(tabsheet); + addComponent(layout); + } + + private Button.ClickListener createTabListener(final HashMap<String, TabSheet.Tab> map, + final TabSheet tabsheet) { + + Button.ClickListener clickListener = new Button.ClickListener() { + + @Override + public void buttonClick(Button.ClickEvent event) { + // id of the button is the same as the tab's caption + String tabName = event.getComponent().getId(); + + for (Map.Entry<String, TabSheet.Tab> entry : map.entrySet()) { + TabSheet.Tab tab = entry.getValue(); + + if (entry.getKey().equals(tabName)) { + tab.setVisible(true); + tabsheet.setSelectedTab(tab.getComponent()); + } else { + tab.setVisible(false); + } + } + } + }; + return clickListener; + } + + @Override + protected Integer getTicketNumber() { + return 17096; + } + + @Override + public String getDescription() { + return "TabSheet should display re-shown tab if there's room for it"; + } +} diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/FirstTabNotVisibleWhenTabsheetNotClippedTest.java b/uitest/src/com/vaadin/tests/components/tabsheet/FirstTabNotVisibleWhenTabsheetNotClippedTest.java new file mode 100644 index 0000000000..74a725f5ed --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/tabsheet/FirstTabNotVisibleWhenTabsheetNotClippedTest.java @@ -0,0 +1,56 @@ +package com.vaadin.tests.components.tabsheet; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.TabSheetElement; +import com.vaadin.tests.tb3.MultiBrowserTest; +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.WebElement; + +public class FirstTabNotVisibleWhenTabsheetNotClippedTest extends MultiBrowserTest { + @Test + public void testNotClippedTabIsVisible() throws InterruptedException { + openTestURL(); + + ButtonElement toggleNotClipped = $(ButtonElement.class) + .caption("Toggle first not clipped tab").first(); + + toggleNotClipped.click(); + TabSheetElement notClippedTabSheet = $(TabSheetElement.class).get(0); + WebElement firstTab = notClippedTabSheet.findElement( + By.className("v-tabsheet-tabitemcell-first")); + String caption = firstTab.findElement(By.className("v-captiontext")).getText(); + Assert.assertEquals("Tab with -first style should be Tab 1", "Tab 1", caption); + + toggleNotClipped.click(); + firstTab = notClippedTabSheet.findElement( + By.className("v-tabsheet-tabitemcell-first")); + caption = firstTab.findElement(By.className("v-captiontext")).getText(); + Assert.assertEquals("Tab with -first style should be Tab 0", "Tab 0", caption); + } + + + @Test + public void testShowPreviouslyHiddenTab() { + openTestURL(); + + $(ButtonElement.class).caption("show tab D").get(0).click(); + $(ButtonElement.class).caption("show tab C").get(0).click(); + + WebElement firstTab = $(TabSheetElement.class).get(2) + .findElement(By.className("v-tabsheet-tabitemcell-first")); + String firstCaption = firstTab.findElement(By.className("v-captiontext")).getText(); + + org.junit.Assert.assertEquals("tab C", firstCaption); + + $(ButtonElement.class).caption("show tab D").get(1).click(); + $(ButtonElement.class).caption("show tab C").get(1).click(); + + WebElement secondTab = $(TabSheetElement.class).get(3) + .findElement(By.className("v-tabsheet-tabitemcell-first")); + String secondCaption = secondTab.findElement(By.className("v-captiontext")).getText(); + + org.junit.Assert.assertEquals("tab C", secondCaption); + } +} |