--- /dev/null
+package com.vaadin.tests.components.tabsheet;\r
+\r
+import java.util.LinkedHashMap;\r
+\r
+import com.vaadin.terminal.Resource;\r
+import com.vaadin.tests.components.AbstractComponentContainerTest;\r
+import com.vaadin.ui.Component;\r
+import com.vaadin.ui.TabSheet;\r
+import com.vaadin.ui.TabSheet.CloseHandler;\r
+import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;\r
+import com.vaadin.ui.TabSheet.SelectedTabChangeListener;\r
+import com.vaadin.ui.TabSheet.Tab;\r
+\r
+public class TabSheetTest extends AbstractComponentContainerTest<TabSheet>\r
+ implements SelectedTabChangeListener {\r
+\r
+ private Command<TabSheet, Integer> setTabCaption = new Command<TabSheet, Integer>() {\r
+\r
+ public void execute(TabSheet c, Integer value, Object data) {\r
+ c.getTab(value).setCaption((String) data);\r
+\r
+ }\r
+ };\r
+ private Command<TabSheet, Integer> setTabIcon = new Command<TabSheet, Integer>() {\r
+\r
+ public void execute(TabSheet c, Integer value, Object data) {\r
+ c.getTab(value).setIcon((Resource) data);\r
+\r
+ }\r
+ };\r
+ private Command<TabSheet, Integer> setTabClosable = new Command<TabSheet, Integer>() {\r
+\r
+ public void execute(TabSheet c, Integer value, Object data) {\r
+ c.getTab(value).setClosable((Boolean) data);\r
+ }\r
+ };\r
+ private Command<TabSheet, Boolean> setCloseHandlerListener = new Command<TabSheet, Boolean>() {\r
+\r
+ public void execute(TabSheet c, Boolean value, Object data) {\r
+ if (value) {\r
+ c.setCloseHandler(new CloseHandler() {\r
+ public void onTabClose(TabSheet tabsheet, Component c) {\r
+ tabClosed(tabsheet, tabsheet.getTab(c));\r
+ tabsheet.removeComponent(c);\r
+ }\r
+\r
+ });\r
+ } else {\r
+ c.setCloseHandler(new CloseHandler() {\r
+ public void onTabClose(TabSheet tabsheet, Component c) {\r
+ tabsheet.removeComponent(c);\r
+ }\r
+ });\r
+ }\r
+\r
+ }\r
+ };\r
+ private Command<TabSheet, Boolean> setSelectedTabListener = new Command<TabSheet, Boolean>() {\r
+\r
+ public void execute(TabSheet c, Boolean value, Object data) {\r
+ if (value) {\r
+ c.addListener((SelectedTabChangeListener) TabSheetTest.this);\r
+ } else {\r
+ c.removeListener((SelectedTabChangeListener) TabSheetTest.this);\r
+ }\r
+\r
+ }\r
+ };\r
+\r
+ private Command<TabSheet, Integer> selectTab = new Command<TabSheet, Integer>() {\r
+ public void execute(TabSheet c, Integer index, Object data) {\r
+ c.setSelectedTab(c.getTab(index).getComponent());\r
+ }\r
+ };\r
+ private Command<TabSheet, Boolean> hideTabs = new Command<TabSheet, Boolean>() {\r
+\r
+ public void execute(TabSheet c, Boolean value, Object data) {\r
+ c.hideTabs(value);\r
+\r
+ }\r
+ };\r
+\r
+ @Override\r
+ protected Class<TabSheet> getTestClass() {\r
+ return TabSheet.class;\r
+ }\r
+\r
+ @Override\r
+ protected void createActions() {\r
+ super.createActions();\r
+ createSetTabCaptionIcon(CATEGORY_FEATURES);\r
+ createSelectTab(CATEGORY_FEATURES);\r
+ createClosableToggle(CATEGORY_FEATURES);\r
+ createCloseHandlerToggle(CATEGORY_LISTENERS);\r
+ createSelectListenerToggle(CATEGORY_LISTENERS);\r
+ createHideTabsToggle(CATEGORY_FEATURES);\r
+\r
+ // TODO\r
+ // Insert tab at x\r
+\r
+ for (TabSheet ts : getTestComponents()) {\r
+ // Workaround for #6191\r
+ ts.setWidth("100px");\r
+ }\r
+ }\r
+\r
+ private void createHideTabsToggle(String category) {\r
+ createBooleanAction("Hide tabs", category, false, hideTabs);\r
+\r
+ }\r
+\r
+ private void createSelectListenerToggle(String category) {\r
+ createBooleanAction("Selected tab listener", category, false,\r
+ setSelectedTabListener);\r
+\r
+ }\r
+\r
+ private void createCloseHandlerToggle(String category) {\r
+ createBooleanAction("Close event listener (handler)", category, false,\r
+ setCloseHandlerListener);\r
+\r
+ }\r
+\r
+ private void createClosableToggle(String category) {\r
+ String closableCategory = "Set tab closable";\r
+ createCategory(closableCategory, category);\r
+ for (int i = 0; i < 20; i++) {\r
+ String tabClosableCategory = "Tab " + i + " closable";\r
+\r
+ createCategory(tabClosableCategory, closableCategory);\r
+ createClickAction("true", tabClosableCategory, setTabClosable, i,\r
+ true);\r
+ createClickAction("false", tabClosableCategory, setTabClosable, i,\r
+ false);\r
+\r
+ }\r
+ }\r
+\r
+ private void createSelectTab(String category) {\r
+ String selectTabCategory = "Select tab";\r
+ createCategory(selectTabCategory, category);\r
+ for (int i = 0; i < 20; i++) {\r
+ createClickAction("Select tab " + i, selectTabCategory, selectTab,\r
+ i);\r
+\r
+ }\r
+ }\r
+\r
+ private void createSetTabCaptionIcon(String category) {\r
+ String captionCategory = "Set tab caption";\r
+ String iconCategory = "Set tab icon";\r
+ createCategory(captionCategory, category);\r
+ createCategory(iconCategory, category);\r
+\r
+ String captionOptions[] = new String[] { "", "{id}", "Tab {id}",\r
+ "A long caption for tab {id}" };\r
+ LinkedHashMap<String, Resource> iconOptions = new LinkedHashMap<String, Resource>();\r
+ iconOptions.put("-", null);\r
+ iconOptions.put("16x16 (cachable)", ICON_16_USER_PNG_CACHEABLE);\r
+ iconOptions.put("16x16 (uncachable)", ICON_16_USER_PNG_UNCACHEABLE);\r
+ iconOptions.put("32x32 (cachable)", ICON_32_ATTENTION_PNG_CACHEABLE);\r
+ iconOptions\r
+ .put("32x32 (uncachable)", ICON_32_ATTENTION_PNG_UNCACHEABLE);\r
+ iconOptions.put("64x64 (cachable)", ICON_64_EMAIL_REPLY_PNG_CACHEABLE);\r
+ iconOptions.put("64x64 (uncachable)",\r
+ ICON_64_EMAIL_REPLY_PNG_UNCACHEABLE);\r
+\r
+ for (int i = 0; i < 20; i++) {\r
+ String tabCaptionCategory = "Tab " + i + " caption";\r
+ String tabIconCategory = "Tab " + i + " icon";\r
+\r
+ createCategory(tabCaptionCategory, captionCategory);\r
+ createCategory(tabIconCategory, iconCategory);\r
+\r
+ createClickAction("(null)", tabCaptionCategory, setTabCaption,\r
+ Integer.valueOf(i), null);\r
+ createClickAction("(null)", tabIconCategory, setTabIcon,\r
+ Integer.valueOf(i), null);\r
+\r
+ for (String option : captionOptions) {\r
+ option = option.replace("{id}", String.valueOf(i));\r
+ createClickAction(option, tabCaptionCategory, setTabCaption,\r
+ Integer.valueOf(i), option);\r
+ }\r
+\r
+ for (String option : iconOptions.keySet()) {\r
+ Resource icon = iconOptions.get(option);\r
+ createClickAction(option, tabIconCategory, setTabIcon,\r
+ Integer.valueOf(i), icon);\r
+ }\r
+\r
+ }\r
+\r
+ }\r
+\r
+ private void tabClosed(TabSheet tabSheet, Tab tab) {\r
+ log("Tab " + tabSheet.getTabPosition(tab) + " closed");\r
+ }\r
+\r
+ public void selectedTabChange(SelectedTabChangeEvent event) {\r
+ TabSheet ts = event.getTabSheet();\r
+ log("Tab " + ts.getTabPosition(ts.getTab(ts.getSelectedTab()))\r
+ + " selected");\r
+\r
+ }\r
+}\r