diff options
author | Artur Signell <artur@vaadin.com> | 2012-08-30 17:24:36 +0300 |
---|---|---|
committer | Artur Signell <artur@vaadin.com> | 2012-08-30 17:24:36 +0300 |
commit | 7b25b3886ea95bc6495506fbe9472e45fcbde684 (patch) | |
tree | 0b93cb65dab437feb46720659a63b8f1ef48f7f4 /uitest/src/com/vaadin/tests/components/menubar/MenuBarTest.java | |
parent | 8941056349e302e687e40e94c13709e75f256d73 (diff) | |
download | vaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.tar.gz vaadin-framework-7b25b3886ea95bc6495506fbe9472e45fcbde684.zip |
Renamed tests -> uitest and tests/testbench -> uitest/src (#9299)
Diffstat (limited to 'uitest/src/com/vaadin/tests/components/menubar/MenuBarTest.java')
-rw-r--r-- | uitest/src/com/vaadin/tests/components/menubar/MenuBarTest.java | 350 |
1 files changed, 350 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/menubar/MenuBarTest.java b/uitest/src/com/vaadin/tests/components/menubar/MenuBarTest.java new file mode 100644 index 0000000000..982b16c6e2 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/menubar/MenuBarTest.java @@ -0,0 +1,350 @@ +package com.vaadin.tests.components.menubar; + +import java.util.Date; +import java.util.LinkedHashMap; + +import com.vaadin.server.Resource; +import com.vaadin.server.ThemeResource; +import com.vaadin.tests.components.AbstractComponentTest; +import com.vaadin.ui.MenuBar; +import com.vaadin.ui.MenuBar.MenuItem; + +public class MenuBarTest extends AbstractComponentTest<MenuBar> { + + private static final String CATEGORY_MENU_ITEMS = "Menu items"; + private static final String CATEGORY_MENU_ITEM_STATES = "Menu item states"; + + private int rootItems = -1; + private int subItems = -1; + private int subLevels = -1; + private int subMenuDensity = -1; + private Integer subMenuSeparatorDensity = null; + private Boolean openRootMenuOnHover = false; + private int iconInterval = -1; + private Integer iconSize; + private Integer disabledDensity; + private Integer invisibleDensity; + private Integer checkableDensity; + + @Override + protected Class<MenuBar> getTestClass() { + return MenuBar.class; + } + + @Override + protected void createActions() { + super.createActions(); + createRootMenuItemSelect(CATEGORY_MENU_ITEMS); + createSubMenuItemSelect(CATEGORY_MENU_ITEMS); + createSubMenuLevelsSelect(CATEGORY_MENU_ITEMS); + createSubMenuDensitySelect(CATEGORY_MENU_ITEMS); + createSubMenuSeparatorDensitySelect(CATEGORY_MENU_ITEMS); + + createBooleanAction("OpenRootMenuOnHover", CATEGORY_FEATURES, + openRootMenuOnHover, setOpenRootOnHover); + + createMenuItemIconIntervalSelect(CATEGORY_MENU_ITEM_STATES); + createMenuIconsSizeSelect(CATEGORY_MENU_ITEM_STATES); + createMenuItemDisabledDensitySelect(CATEGORY_MENU_ITEM_STATES); + createMenuItemInvisibleDensitySelect(CATEGORY_MENU_ITEM_STATES); + createMenuItemCheckableDensitySelect(CATEGORY_MENU_ITEM_STATES); + + } + + private void createRootMenuItemSelect(String category) { + createSelectAction("Root menu items", category, + createIntegerOptions(100), "10", createRootMenuItems); + } + + private void createSubMenuItemSelect(String category) { + createSelectAction("Sub menu items", category, + createIntegerOptions(100), "10", createSubMenuItems); + } + + private void createSubMenuLevelsSelect(String category) { + createSelectAction("Sub menu levels", category, + createIntegerOptions(100), "2", setSubMenuLevels); + } + + private void createMenuIconsSizeSelect(String category) { + LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>(); + options.put("16x16", 16); + options.put("32x32", 32); + options.put("64x64", 64); + createSelectAction("Icon size", category, options, "16x16", selectIcon); + } + + private void createMenuItemIconIntervalSelect(String category) { + LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>(); + options.put("None", 0); + options.put("All", 1); + options.put("Every second", 2); + options.put("Every third", 3); + + createSelectAction("Icons", category, options, "None", setMenuIcons); + } + + private void createSubMenuDensitySelect(String category) { + LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>(); + options.put("All", 1); + options.put("Every second", 2); + options.put("Every third", 3); + + createSelectAction("Sub sub menus", category, options, "Every third", + setSubMenuDensity); + } + + private void createSubMenuSeparatorDensitySelect(String category) { + LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>(); + options.put("No separators", null); + options.put("Between all", 1); + options.put("Between every second", 2); + options.put("Between every third", 3); + + createSelectAction("Sub menu separators", category, options, + "No separators", setSubMenuSeparatorDensity); + } + + private void createMenuItemDisabledDensitySelect(String category) { + LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>(); + options.put("All enabled", null); + options.put("All disabled", 1); + options.put("Every second", 2); + options.put("Every third", 3); + + createSelectAction("Enabled", category, options, "All enabled", + setMenuItemDisabledDensity); + } + + private void createMenuItemInvisibleDensitySelect(String category) { + LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>(); + options.put("All visible", null); + options.put("All invisible", 1); + options.put("Every second", 2); + options.put("Every third", 3); + + createSelectAction("Visible", category, options, "All visible", + setMenuItemInvisibleDensity); + } + + private void createMenuItemCheckableDensitySelect(String category) { + LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>(); + options.put("No items checkable", null); + options.put("All checkable", 1); + options.put("Every second", 2); + options.put("Every third", 3); + + createSelectAction("Checkable", category, options, + "No items checkable", setMenuItemCheckableDensity); + } + + /* COMMANDS */ + Command<MenuBar, Integer> createRootMenuItems = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + rootItems = value; + createRootItems(c); + } + }; + + Command<MenuBar, Integer> createSubMenuItems = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + subItems = value; + createSubItems(c); + } + }; + + Command<MenuBar, Integer> setSubMenuLevels = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + subLevels = value; + createSubItems(c); + } + }; + private Command<MenuBar, Integer> setMenuIcons = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + iconInterval = value; + updateIcons(c); + } + }; + + private Command<MenuBar, Integer> setSubMenuDensity = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + subMenuDensity = value; + createSubItems(c); + } + }; + + private Command<MenuBar, Integer> setMenuItemDisabledDensity = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + disabledDensity = value; + createRootItems(c); + } + }; + + private Command<MenuBar, Integer> setMenuItemInvisibleDensity = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + invisibleDensity = value; + createRootItems(c); + } + }; + + private Command<MenuBar, Integer> setMenuItemCheckableDensity = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + checkableDensity = value; + createRootItems(c); + } + }; + + private Command<MenuBar, Integer> setSubMenuSeparatorDensity = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + subMenuSeparatorDensity = value; + createSubItems(c); + } + }; + + private Command<MenuBar, Boolean> setOpenRootOnHover = new Command<MenuBar, Boolean>() { + + @Override + public void execute(MenuBar c, Boolean value, Object data) { + openRootMenuOnHover = value; + c.setAutoOpen(value); + } + + }; + + private Command<MenuBar, Integer> selectIcon = new Command<MenuBar, Integer>() { + + @Override + public void execute(MenuBar c, Integer value, Object data) { + iconSize = value; + updateIcons(c); + } + }; + + /* End of commands */ + + private MenuBar.Command menuCommand = new MenuBar.Command() { + + @Override + public void menuSelected(MenuItem selectedItem) { + log("Menu item '" + selectedItem.getText() + "' selected"); + + } + }; + + protected void createSubItems(MenuBar c) { + for (MenuItem rootItem : c.getItems()) { + createSubItems(rootItem, 1); + } + updateIcons(c); + + } + + private void createSubItems(MenuItem parent, int level) { + if (level > subLevels) { + return; + } + + parent.removeChildren(); + for (int i = 0; i < subItems; i++) { + if (subMenuSeparatorDensity != null && i > 0 + && i % subMenuSeparatorDensity == 0) { + parent.addSeparator(); + } + + MenuItem subMenuItem = parent.addItem("Sub menu " + parent.getId() + + "/" + (i + 1), menuCommand); + + if (disabledDensity != null && i % disabledDensity == 0) { + subMenuItem.setEnabled(false); + } + if (invisibleDensity != null && i % invisibleDensity == 0) { + subMenuItem.setVisible(false); + } + + if (i % subMenuDensity == 0 && level < subLevels) { + subMenuItem.setCommand(null); + createSubItems(subMenuItem, level + 1); + } + + if (!subMenuItem.hasChildren() && level > 0 + && checkableDensity != null && i % checkableDensity == 0) { + subMenuItem.setCheckable(true); + } + } + + } + + protected void updateIcons(MenuBar c) { + int idx = 0; + for (MenuItem rootItem : c.getItems()) { + updateIcons(rootItem, idx++); + } + } + + private void updateIcons(MenuItem item, int idx) { + if (iconInterval > 0 && idx % iconInterval == 0) { + item.setIcon(getIcon()); + } else { + item.setIcon(null); + } + if (item.getChildren() != null) { + int i = 0; + for (MenuItem child : item.getChildren()) { + updateIcons(child, i++); + } + } + } + + private long iconCacheIndex = new Date().getTime(); + + private Resource getIcon() { + String resourceID = null; + if (iconSize == 16) { + resourceID = "../runo/icons/16/user.png"; + } else if (iconSize == 32) { + resourceID = "../runo/icons/32/user.png"; + } else if (iconSize == 64) { + resourceID = "../runo/icons/64/user.png"; + } + + if (resourceID != null) { + return new ThemeResource(resourceID + "?" + iconCacheIndex++); + } + return null; + } + + protected void createRootItems(MenuBar c) { + // Remove all existing items + c.removeItems(); + for (int i = 0; i < rootItems; i++) { + MenuItem rootItem = c.addItem("Root menu " + (i + 1), null); + if (disabledDensity != null && i % disabledDensity == 0) { + rootItem.setEnabled(false); + } + if (invisibleDensity != null && i % invisibleDensity == 0) { + rootItem.setVisible(false); + } + } + createSubItems(c); + + } + +} |