package com.vaadin.tests.components.tabsheet; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.CssLayout; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; import com.vaadin.ui.TabSheet.Tab; /** * This testUI is used for testing that the scroll position of a tab sheet does * not change when tabs are removed. The exception is removing the leftmost * visible tab. * * @author Vaadin Ltd */ public class TabSheetScrollOnTabClose extends AbstractReindeerTestUI { /* * (non-Javadoc) * * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server. * VaadinRequest) */ @Override protected void setup(VaadinRequest request) { final TabSheet tabSheet = new TabSheet(); for (int i = 0; i < 10; i++) { Tab tab = tabSheet.addTab(new CssLayout(), "tab " + i); tab.setClosable(true); tab.setId("tab" + i); } tabSheet.setWidth(250, Unit.PIXELS); addComponent(tabSheet); addComponent(new Label("Close tab number")); for (int i = 0; i < 10; i++) { final String tabCaption = "tab " + i; final Button b = new Button("" + i); b.addClickListener(event -> { b.setEnabled(false); tabSheet.removeTab(getTab(tabSheet, tabCaption)); }); addComponent(b); } } private Tab getTab(TabSheet ts, String tabCaption) { for (int i = 0; i < ts.getComponentCount(); i++) { String caption = ts.getTab(i).getCaption(); if (tabCaption.equals(caption)) { return ts.getTab(i); } } return null; } /* * (non-Javadoc) * * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription() */ @Override protected String getTestDescription() { return "Scroll position should not change when closing tabs."; } /* * (non-Javadoc) * * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber() */ @Override protected Integer getTicketNumber() { return 14348; } }