]> source.dussan.org Git - vaadin-framework.git/commitdiff
Split part of ComponentTestCase to AbstractComponentTestCase and added a MenuBasedCom...
authorArtur Signell <artur.signell@itmill.com>
Wed, 13 Oct 2010 20:31:50 +0000 (20:31 +0000)
committerArtur Signell <artur.signell@itmill.com>
Wed, 13 Oct 2010 20:31:50 +0000 (20:31 +0000)
Updated Tables test case to use MenuBasedComponentTestCase.

Should be backwards compatible for existing tests

svn changeset:15540/svn branch:6.4

tests/src/com/vaadin/tests/components/AbstractComponentTestCase.java [new file with mode: 0644]
tests/src/com/vaadin/tests/components/ComponentTestCase.java
tests/src/com/vaadin/tests/components/MenuBasedComponentTestCase.java [new file with mode: 0644]
tests/src/com/vaadin/tests/components/combobox/Comboboxes.java
tests/src/com/vaadin/tests/components/datefield/InlineDateFields.java
tests/src/com/vaadin/tests/components/datefield/PopupDateFields.java
tests/src/com/vaadin/tests/components/optiongroup/DisabledOptionGroupItems.java
tests/src/com/vaadin/tests/components/select/NativeSelects.java
tests/src/com/vaadin/tests/components/table/Tables.java
tests/src/com/vaadin/tests/components/upload/TestUploadAndDisableOnSuccess.java

diff --git a/tests/src/com/vaadin/tests/components/AbstractComponentTestCase.java b/tests/src/com/vaadin/tests/components/AbstractComponentTestCase.java
new file mode 100644 (file)
index 0000000..9fad108
--- /dev/null
@@ -0,0 +1,160 @@
+package com.vaadin.tests.components;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vaadin.terminal.UserError;
+import com.vaadin.tests.util.Log;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.Field;
+import com.vaadin.ui.Layout.SpacingHandler;
+
+public abstract class AbstractComponentTestCase<T extends AbstractComponent>
+        extends TestBase {
+
+    private List<T> testComponents = new ArrayList<T>();
+
+    abstract protected Class<T> getTestClass();
+
+    abstract protected void initializeComponents();
+
+    private Log log = null;
+
+    @Override
+    protected void setup() {
+        ((SpacingHandler) getLayout()).setSpacing(true);
+
+        // Create Components
+        initializeComponents();
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return null;
+    }
+
+    protected void addTestComponent(T c) {
+        testComponents.add(c);
+        addComponent(c);
+    }
+
+    protected List<T> getTestComponents() {
+        return testComponents;
+    }
+
+    public interface Command<T, VALUETYPE extends Object> {
+        public void execute(T c, VALUETYPE value, Object data);
+    }
+
+    // public interface Command<T, VALUETYPE extends Object> {
+    // public void execute(T c, VALUETYPE value, Object data);
+    // }
+
+    /* COMMANDS */
+
+    protected Command<T, String> widthCommand = new Command<T, String>() {
+
+        @Override
+        public void execute(T t, String value, Object data) {
+            t.setWidth(value);
+        }
+    };
+    protected Command<T, String> heightCommand = new Command<T, String>() {
+
+        @Override
+        public void execute(T t, String value, Object data) {
+            t.setHeight(value);
+        }
+    };
+
+    protected Command<T, Boolean> enabledCommand = new Command<T, Boolean>() {
+
+        @Override
+        public void execute(T c, Boolean enabled, Object data) {
+            c.setEnabled(enabled);
+        }
+    };
+
+    protected Command<T, Boolean> requiredCommand = new Command<T, Boolean>() {
+        @Override
+        public void execute(T c, Boolean enabled, Object data) {
+            if (c instanceof Field) {
+                ((Field) c).setRequired(enabled);
+            } else {
+                throw new IllegalArgumentException(c.getClass().getName()
+                        + " is not a field and cannot be set to required");
+            }
+        }
+    };
+
+    protected Command<T, Boolean> errorIndicatorCommand = new Command<T, Boolean>() {
+        @Override
+        public void execute(T c, Boolean enabled, Object data) {
+            if (enabled) {
+                c.setComponentError(new UserError("It failed!"));
+            } else {
+                c.setComponentError(null);
+
+            }
+        }
+    };
+
+    protected Command<T, Boolean> readonlyCommand = new Command<T, Boolean>() {
+        @Override
+        public void execute(T c, Boolean enabled, Object data) {
+            c.setReadOnly(enabled);
+        }
+    };
+
+    protected <VALUET> void doCommand(Command<T, VALUET> command, VALUET value) {
+        doCommand(command, value, null);
+    }
+
+    protected <VALUET> void doCommand(Command<T, VALUET> command, VALUET value,
+            Object data) {
+        for (T c : getTestComponents()) {
+            command.execute(c, value, data);
+        }
+    }
+
+    protected <VALUET> void doCommand(String commandName,
+            Command<T, VALUET> command, VALUET value) {
+        doCommand(command, value, null);
+        if (hasLog()) {
+            log(commandName + ": " + value);
+        }
+    }
+
+    protected <VALUET> void doCommand(String commandName,
+            Command<T, VALUET> command, VALUET value, Object data) {
+        doCommand(command, value, data);
+        if (hasLog()) {
+            log(commandName + ": " + value);
+        }
+    }
+
+    protected boolean hasLog() {
+        return log != null;
+    }
+
+    @Override
+    protected String getDescription() {
+        return "Generic test case for " + getTestClass().getSimpleName();
+    }
+
+    protected void enableLog() {
+        if (log == null) {
+            log = new Log(5).setNumberLogRows(true);
+            getLayout().addComponent(log, 1);
+        }
+
+    }
+
+    protected void log(String msg) {
+        if (log == null) {
+            throw new IllegalStateException(
+                    "Use enableLog() before calling log()");
+        }
+        log.log(msg);
+    }
+}
index 580662ef0d7c7f0eb9e32d6e1e3682e827749cbd..1e15f7a47bb03e865d563a2ff82a43f71b895268 100644 (file)
@@ -7,8 +7,6 @@ import java.util.List;
 import com.vaadin.data.Item;
 import com.vaadin.data.Property;
 import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.terminal.UserError;
-import com.vaadin.tests.util.Log;
 import com.vaadin.ui.AbstractComponent;
 import com.vaadin.ui.Alignment;
 import com.vaadin.ui.Button;
@@ -17,49 +15,37 @@ import com.vaadin.ui.CheckBox;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.Field;
 import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Layout.SpacingHandler;
 import com.vaadin.ui.NativeSelect;
 
 public abstract class ComponentTestCase<T extends AbstractComponent> extends
-        TestBase {
+        AbstractComponentTestCase<T> {
 
     protected static final Object CAPTION = "caption";
 
-    private List<T> testComponents = new ArrayList<T>();
     private HorizontalLayout actionLayout;
 
-    abstract protected Class<T> getTestClass();
-
-    abstract protected void initializeComponents();
-
-    private Log log = null;
-
     @Override
     protected final void setup() {
-        ((SpacingHandler) getLayout()).setSpacing(true);
-
         // Create action layout so it appears before the components
         actionLayout = createActionLayout();
         addComponent(actionLayout);
 
-        // Create Components
-        initializeComponents();
+        super.setup();
 
         // Create actions and add to layout
         populateActionLayout();
     }
 
-    private void populateActionLayout() {
+    protected void populateActionLayout() {
         for (Component c : createActions()) {
-            actionLayout.addComponent(c);
-            actionLayout.setComponentAlignment(c, Alignment.BOTTOM_LEFT);
+            addAction(c);
         }
 
     }
 
-    @Override
-    protected Integer getTicketNumber() {
-        return null;
+    private void addAction(Component c) {
+        actionLayout.addComponent(c);
+        actionLayout.setComponentAlignment(c, Alignment.BOTTOM_LEFT);
     }
 
     /**
@@ -104,69 +90,24 @@ public abstract class ComponentTestCase<T extends AbstractComponent> extends
         return actionLayout;
     }
 
-    protected void addTestComponent(T c) {
-        testComponents.add(c);
-        addComponent(c);
-    }
-
-    protected List<T> getTestComponents() {
-        return testComponents;
-    }
-
-    public interface Command<T, VALUETYPE extends Object> {
-        public void execute(T c, VALUETYPE value);
-
-    }
-
     protected Component createErrorIndicatorAction(boolean initialState) {
-        return createCheckboxAction("Error indicators", initialState,
-                new Command<T, Boolean>() {
-                    public void execute(T c, Boolean enabled) {
-                        if (enabled) {
-                            c.setComponentError(new UserError("It failed!"));
-                        } else {
-                            c.setComponentError(null);
-
-                        }
-                    }
-
-                });
+        return createBooleanAction("Error indicators", initialState,
+                errorIndicatorCommand);
     }
 
     protected Component createEnabledAction(boolean initialState) {
-        return createCheckboxAction("Enabled", initialState,
-                new Command<T, Boolean>() {
-                    public void execute(T c, Boolean enabled) {
-                        c.setEnabled(enabled);
-                    }
-                });
+        return createBooleanAction("Enabled", initialState, enabledCommand);
     }
 
     protected Component createReadonlyAction(boolean initialState) {
-        return createCheckboxAction("Readonly", initialState,
-                new Command<T, Boolean>() {
-                    public void execute(T c, Boolean enabled) {
-                        c.setReadOnly(enabled);
-                    }
-                });
+        return createBooleanAction("Readonly", initialState, readonlyCommand);
     }
 
     protected Component createRequiredAction(boolean initialState) {
-        return createCheckboxAction("Required", initialState,
-                new Command<T, Boolean>() {
-                    public void execute(T c, Boolean enabled) {
-                        if (c instanceof Field) {
-                            ((Field) c).setRequired(enabled);
-                        } else {
-                            throw new IllegalArgumentException(
-                                    c.getClass().getName()
-                                            + " is not a field and cannot be set to required");
-                        }
-                    }
-                });
+        return createBooleanAction("Required", initialState, requiredCommand);
     }
 
-    protected Component createCheckboxAction(String caption,
+    protected Component createBooleanAction(String caption,
             boolean initialState, final Command<T, Boolean> command) {
 
         CheckBox checkBox = new CheckBox(caption);
@@ -204,16 +145,6 @@ public abstract class ComponentTestCase<T extends AbstractComponent> extends
         return button;
     }
 
-    protected <VALUET> void doCommand(Command<T, VALUET> command, VALUET value) {
-        for (T c : getTestComponents()) {
-            if (c == null) {
-                continue;
-            }
-
-            command.execute(c, value);
-        }
-    }
-
     protected <TYPE> Component createSelectAction(String caption,
             LinkedHashMap<String, TYPE> options, String initialValue,
             final Command<T, TYPE> command) {
@@ -255,24 +186,4 @@ public abstract class ComponentTestCase<T extends AbstractComponent> extends
         return select;
     }
 
-    @Override
-    protected String getDescription() {
-        return "Generic test case for " + getTestClass().getSimpleName();
-    }
-
-    protected void enableLog() {
-        if (log == null) {
-            log = new Log(5).setNumberLogRows(true);
-            getLayout().addComponent(log, 1);
-        }
-
-    }
-
-    protected void log(String msg) {
-        if (log == null) {
-            throw new IllegalStateException(
-                    "Use enableLog() before calling log()");
-        }
-        log.log(msg);
-    }
 }
diff --git a/tests/src/com/vaadin/tests/components/MenuBasedComponentTestCase.java b/tests/src/com/vaadin/tests/components/MenuBasedComponentTestCase.java
new file mode 100644 (file)
index 0000000..ef566fb
--- /dev/null
@@ -0,0 +1,387 @@
+package com.vaadin.tests.components;\r
+\r
+import java.util.HashSet;\r
+import java.util.LinkedHashMap;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import com.vaadin.data.Container;\r
+import com.vaadin.data.Item;\r
+import com.vaadin.data.util.IndexedContainer;\r
+import com.vaadin.terminal.Resource;\r
+import com.vaadin.terminal.ThemeResource;\r
+import com.vaadin.ui.AbstractComponent;\r
+import com.vaadin.ui.AbstractSelect;\r
+import com.vaadin.ui.Field;\r
+import com.vaadin.ui.MenuBar;\r
+import com.vaadin.ui.MenuBar.MenuItem;\r
+\r
+public abstract class MenuBasedComponentTestCase<T extends AbstractComponent>\r
+        extends AbstractComponentTestCase<T> {\r
+\r
+    private static final Resource SELECTED_ICON = new ThemeResource(\r
+            "../runo/icons/16/ok.png");\r
+\r
+    private MenuItem mainMenu;\r
+\r
+    private MenuBar menu;\r
+\r
+    private T component;\r
+\r
+    // Used to determine if a menuItem should be selected and the other\r
+    // unselected on click\r
+    private Set<MenuItem> parentOfSelectableMenuItem = new HashSet<MenuItem>();\r
+\r
+    protected static final String CATEGORY_STATE = "State";\r
+    protected static final String CATEGORY_SIZE = "Size";\r
+    protected static final String CATEGORY_SELECTION = "Selection";\r
+    protected static final String CATEGORY_CONTENT = "Contents";\r
+    protected static final String CATEGORY_LISTENERS = "Listeners";\r
+\r
+    @Override\r
+    protected final void setup() {\r
+        // Create menu here so it appears before the components\r
+        menu = new MenuBar();\r
+        mainMenu = menu.addItem("Settings", null);\r
+        addComponent(menu);\r
+\r
+        getLayout().setSizeFull();\r
+        enableLog();\r
+        super.setup();\r
+\r
+        // Create menu actions and trigger default actions\r
+        populateMenu();\r
+    }\r
+\r
+    /**\r
+     * By default initializes just one instance of {@link #getTestClass()} using\r
+     * {@link #constructComponent()}.\r
+     */\r
+    @Override\r
+    protected void initializeComponents() {\r
+        component = constructComponent();\r
+        addTestComponent(component);\r
+    }\r
+\r
+    public T getComponent() {\r
+        return component;\r
+    }\r
+\r
+    @Override\r
+    protected void addTestComponent(T c) {\r
+        super.addTestComponent(c);\r
+        getLayout().setExpandRatio(c, 1);\r
+\r
+    };\r
+\r
+    /**\r
+     * Construct the component that is to be tested. This method uses a no-arg\r
+     * constructor by default. Override to customize.\r
+     * \r
+     * @return Instance of the component that is to be tested.\r
+     * @throws IllegalAccessException\r
+     * @throws InstantiationException\r
+     */\r
+    protected T constructComponent() {\r
+        try {\r
+            return getTestClass().newInstance();\r
+        } catch (Exception e) {\r
+            throw new RuntimeException("Failed to instantiate "\r
+                    + getTestClass(), e);\r
+        }\r
+    }\r
+\r
+    private void populateMenu() {\r
+        createDefaultActions();\r
+        createCustomActions();\r
+    }\r
+\r
+    private void createDefaultActions() {\r
+        createBooleanAction("Enabled", CATEGORY_STATE, true, enabledCommand);\r
+        createBooleanAction("Readonly", CATEGORY_STATE, false, readonlyCommand);\r
+        createBooleanAction("Error indicator", CATEGORY_STATE, false,\r
+                errorIndicatorCommand);\r
+\r
+        if (component instanceof Field) {\r
+            createBooleanAction("Required", CATEGORY_STATE, false,\r
+                    requiredCommand);\r
+        }\r
+        createWidthSelect(CATEGORY_SIZE);\r
+        createHeightSelect(CATEGORY_SIZE);\r
+\r
+        if (component instanceof AbstractSelect) {\r
+            createNullSelectAllowedCheckbox(CATEGORY_SELECTION);\r
+            createItemsInContainerSelect(CATEGORY_CONTENT);\r
+            createColumnsInContainerSelect(CATEGORY_CONTENT);\r
+        }\r
+    }\r
+\r
+    @SuppressWarnings("unchecked")\r
+    protected void createItemsInContainerSelect(String category) {\r
+        LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>();\r
+        options.put("0", 0);\r
+        options.put("20", 20);\r
+        options.put("100", 100);\r
+        options.put("1000", 1000);\r
+        options.put("10000", 10000);\r
+        options.put("100000", 100000);\r
+\r
+        createSelectAction("Items in container", category, options, "20",\r
+                (Command) itemsInContainerCommand);\r
+    }\r
+\r
+    @SuppressWarnings("unchecked")\r
+    protected void createColumnsInContainerSelect(String category) {\r
+        LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>();\r
+        options.put("0", 0);\r
+        options.put("5", 5);\r
+        options.put("10", 10);\r
+        options.put("50", 50);\r
+        options.put("100", 100);\r
+        options.put("1000", 1000);\r
+\r
+        createSelectAction("Columns in container", category, options, "10",\r
+                (Command) columnsInContainerCommand);\r
+    }\r
+\r
+    private Container createContainer(int properties, int items) {\r
+        IndexedContainer c = new IndexedContainer();\r
+        for (int i = 1; i <= properties; i++) {\r
+            c.addContainerProperty("Column " + i, String.class, "");\r
+        }\r
+        for (int i = 1; i <= items; i++) {\r
+            Item item = c.addItem("Item " + i);\r
+            for (int j = 1; j <= properties; j++) {\r
+                item.getItemProperty("Column " + j).setValue(\r
+                        "Item " + i + "," + j);\r
+            }\r
+        }\r
+\r
+        return c;\r
+    }\r
+\r
+    @SuppressWarnings("unchecked")\r
+    protected void createNullSelectAllowedCheckbox(String category) {\r
+        createBooleanAction("Null Selection Allowed", category, false,\r
+                (Command) nullSelectionAllowedCommand);\r
+\r
+    }\r
+\r
+    @SuppressWarnings("unchecked")\r
+    protected void createNullSelectItemId(String category) {\r
+        LinkedHashMap<String, Object> options = new LinkedHashMap<String, Object>();\r
+        options.put("- None -", null);\r
+        for (Object id : ((AbstractSelect) component).getContainerDataSource()\r
+                .getContainerPropertyIds()) {\r
+            options.put(id.toString(), id);\r
+        }\r
+        createSelectAction("Null Selection Item Id", category, options,\r
+                "- None -", (Command) nullSelectItemIdCommand);\r
+    }\r
+\r
+    protected void createWidthSelect(String category) {\r
+        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();\r
+        options.put("Undefined", null);\r
+        options.put("50%", "50%");\r
+        options.put("100%", "100%");\r
+        for (int w = 200; w < 1000; w += 100) {\r
+            options.put(w + "px", w + "px");\r
+        }\r
+\r
+        createSelectAction("Width", category, options, "Undefined",\r
+                widthCommand, null);\r
+    }\r
+\r
+    protected void createHeightSelect(String category) {\r
+        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();\r
+        options.put("Undefined", null);\r
+        options.put("50%", "50%");\r
+        options.put("100%", "100%");\r
+        for (int w = 200; w < 1000; w += 100) {\r
+            options.put(w + "px", w + "px");\r
+        }\r
+\r
+        createSelectAction("Height", category, options, "Undefined",\r
+                heightCommand, null);\r
+    }\r
+\r
+    protected void createBooleanAction(String caption, String category,\r
+            boolean initialState, final Command<T, Boolean> command) {\r
+        createBooleanAction(caption, category, initialState, command, null);\r
+    }\r
+\r
+    protected <DATATYPE> void createBooleanAction(String caption,\r
+            String category, boolean initialState,\r
+            final Command<T, Boolean> command, Object data) {\r
+        MenuItem categoryItem = getCategoryMenuItem(category);\r
+        MenuItem item = categoryItem.addItem(caption,\r
+                menuBooleanCommand(command, data));\r
+        setSelected(item, initialState);\r
+        doCommand(caption, command, initialState, data);\r
+    }\r
+\r
+    private MenuItem getCategoryMenuItem(String category) {\r
+        if (category == null) {\r
+            return getCategoryMenuItem("Misc");\r
+        }\r
+\r
+        if (mainMenu.getChildren() != null) {\r
+            for (MenuItem i : mainMenu.getChildren()) {\r
+                if (i.getText().equals(category)) {\r
+                    return i;\r
+                }\r
+            }\r
+        }\r
+        return mainMenu.addItem(category, null);\r
+    }\r
+\r
+    /**\r
+     * Provide custom actions for the test case by creating them in this method.\r
+     */\r
+    protected abstract void createCustomActions();\r
+\r
+    private MenuBar.Command menuBooleanCommand(\r
+            final com.vaadin.tests.components.ComponentTestCase.Command<T, Boolean> booleanCommand,\r
+            final Object data) {\r
+\r
+        return new MenuBar.Command() {\r
+            @Override\r
+            public void menuSelected(MenuItem selectedItem) {\r
+                boolean selected = !isSelected(selectedItem);\r
+                doCommand(getText(selectedItem), booleanCommand, selected, data);\r
+                setSelected(selectedItem, selected);\r
+            }\r
+\r
+        };\r
+    }\r
+\r
+    protected void setSelected(MenuItem item, boolean selected) {\r
+        if (selected) {\r
+            item.setIcon(SELECTED_ICON);\r
+        } else {\r
+            item.setIcon(null);\r
+        }\r
+    }\r
+\r
+    protected boolean isSelected(MenuItem item) {\r
+        return (item.getIcon() != null);\r
+    }\r
+\r
+    private <VALUETYPE> MenuBar.Command singleSelectMenuCommand(\r
+            final com.vaadin.tests.components.ComponentTestCase.Command<T, VALUETYPE> cmd,\r
+            final VALUETYPE object, final Object data) {\r
+        return new MenuBar.Command() {\r
+            @Override\r
+            public void menuSelected(MenuItem selectedItem) {\r
+                doCommand(getText(selectedItem), cmd, object, data);\r
+\r
+                if (parentOfSelectableMenuItem.contains(selectedItem\r
+                        .getParent())) {\r
+                    unselectChildren(selectedItem.getParent());\r
+                    setSelected(selectedItem, true);\r
+                }\r
+            }\r
+\r
+        };\r
+\r
+    }\r
+\r
+    /**\r
+     * Unselect all child menu items\r
+     * \r
+     * @param parent\r
+     */\r
+    protected void unselectChildren(MenuItem parent) {\r
+        List<MenuItem> children = parent.getChildren();\r
+        if (children == null) {\r
+            return;\r
+        }\r
+\r
+        for (MenuItem child : children) {\r
+            setSelected(child, false);\r
+        }\r
+    }\r
+\r
+    protected String getText(MenuItem item) {\r
+        if (!isCategory(item.getParent())) {\r
+            return item.getParent().getText();\r
+        } else {\r
+            return item.getText();\r
+        }\r
+    }\r
+\r
+    private boolean isCategory(MenuItem item) {\r
+        return item.getParent() == mainMenu;\r
+    }\r
+\r
+    protected <TYPE> void createSelectAction(\r
+            String caption,\r
+            String category,\r
+            LinkedHashMap<String, TYPE> options,\r
+            String initialValue,\r
+            com.vaadin.tests.components.ComponentTestCase.Command<T, TYPE> command) {\r
+        createSelectAction(caption, category, options, initialValue, command,\r
+                null);\r
+\r
+    }\r
+\r
+    protected <TYPE> void createSelectAction(\r
+            String caption,\r
+            String category,\r
+            LinkedHashMap<String, TYPE> options,\r
+            String initialValue,\r
+            com.vaadin.tests.components.ComponentTestCase.Command<T, TYPE> command,\r
+            Object data) {\r
+\r
+        MenuItem parentItem = getCategoryMenuItem(category);\r
+        MenuItem mainItem = parentItem.addItem(caption, null);\r
+\r
+        parentOfSelectableMenuItem.add(mainItem);\r
+        for (String option : options.keySet()) {\r
+            MenuBar.Command cmd = singleSelectMenuCommand(command,\r
+                    options.get(option), data);\r
+            MenuItem item = mainItem.addItem(option, cmd);\r
+            if (option.equals(initialValue)) {\r
+                cmd.menuSelected(item);\r
+            }\r
+        }\r
+    }\r
+\r
+    /* COMMANDS */\r
+\r
+    protected Command<AbstractSelect, Boolean> nullSelectionAllowedCommand = new Command<AbstractSelect, Boolean>() {\r
+\r
+        @Override\r
+        public void execute(AbstractSelect c, Boolean value, Object data) {\r
+            (c).setNullSelectionAllowed(value);\r
+        }\r
+    };\r
+\r
+    protected Command<AbstractSelect, Object> nullSelectItemIdCommand = new Command<AbstractSelect, Object>() {\r
+\r
+        @Override\r
+        public void execute(AbstractSelect c, Object value, Object data) {\r
+            c.setNullSelectionItemId(value);\r
+        }\r
+    };\r
+\r
+    protected Command<AbstractSelect, Integer> itemsInContainerCommand = new Command<AbstractSelect, Integer>() {\r
+\r
+        @Override\r
+        public void execute(AbstractSelect t, Integer value, Object data) {\r
+            t.setContainerDataSource(createContainer(t.getContainerDataSource()\r
+                    .getContainerPropertyIds().size(), value));\r
+        }\r
+    };\r
+\r
+    protected Command<AbstractSelect, Integer> columnsInContainerCommand = new Command<AbstractSelect, Integer>() {\r
+\r
+        @Override\r
+        public void execute(AbstractSelect t, Integer value, Object data) {\r
+            t.setContainerDataSource(createContainer(value, t\r
+                    .getContainerDataSource().size()));\r
+        }\r
+    };\r
+\r
+    /* COMMANDS END */\r
+}\r
index 5d41fae7850f85ab2d6639fef3345bd1a157b85c..94ab20df435e11296c8965d7ef9ad59d5750f83c 100644 (file)
@@ -136,7 +136,7 @@ public class Comboboxes extends ComponentTestCase<ComboBox> {
         return createSelectAction("Icon", options, "<None>",
                 new Command<ComboBox, String>() {
 
-                    public void execute(ComboBox c, String value) {
+                    public void execute(ComboBox c, String value, Object data) {
                         for (Object id : c.getItemIds()) {
                             if (value == null) {
                                 c.setItemIcon(id, null);
index e0fb41abdd92ca267605cdfc68703ac39746b3d3..083e8f0190a03b7798fcc5dd8b294e3b82430554 100644 (file)
@@ -77,7 +77,8 @@ public class InlineDateFields extends ComponentTestCase<InlineDateField> {
         return createSelectAction("Resolution", options, "Year",\r
                 new Command<InlineDateField, Integer>() {\r
 \r
-                    public void execute(InlineDateField c, Integer value) {\r
+                    public void execute(InlineDateField c, Integer value,\r
+                            Object data) {\r
                         c.setResolution(value);\r
 \r
                     }\r
@@ -92,7 +93,8 @@ public class InlineDateFields extends ComponentTestCase<InlineDateField> {
         return createSelectAction("Locale", options, LOCALES[0].toString(),\r
                 new Command<InlineDateField, Locale>() {\r
 \r
-                    public void execute(InlineDateField c, Locale value) {\r
+                    public void execute(InlineDateField c, Locale value,\r
+                            Object data) {\r
                         c.setCaption(c.getCaption().replaceAll(\r
                                 c.getLocale().toString(), value.toString()));\r
                         c.setLocale(value);\r
index fd661f55c6935a6303c731dec5e64915849e3d0c..8b9cb68d7b3557785c76409524dc5c20017f935c 100644 (file)
@@ -77,7 +77,8 @@ public class PopupDateFields extends ComponentTestCase<PopupDateField> {
         return createSelectAction("Resolution", options, "Year",\r
                 new Command<PopupDateField, Integer>() {\r
 \r
-                    public void execute(PopupDateField c, Integer value) {\r
+                    public void execute(PopupDateField c, Integer value,\r
+                            Object data) {\r
                         c.setResolution(value);\r
 \r
                     }\r
@@ -93,7 +94,8 @@ public class PopupDateFields extends ComponentTestCase<PopupDateField> {
         return createSelectAction("Input prompt", options, "<none>",\r
                 new Command<PopupDateField, String>() {\r
 \r
-                    public void execute(PopupDateField c, String value) {\r
+                    public void execute(PopupDateField c, String value,\r
+                            Object data) {\r
                         c.setInputPrompt(value);\r
 \r
                     }\r
index 8ca1059e20cf4707b4f6fe843ee613d4180d6956..4668ef5ab8fd026c658eb1e097ce989b7588fade 100644 (file)
@@ -52,7 +52,8 @@ public class DisabledOptionGroupItems extends ComponentTestCase<OptionGroup> {
         return createButtonAction("Toggle selection mode",
                 new Command<OptionGroup, Boolean>() {
 
-                    public void execute(OptionGroup og, Boolean value) {
+                    public void execute(OptionGroup og, Boolean value,
+                            Object data) {
                         if (og.isMultiSelect()) {
                             og.setMultiSelect(false);
                             og.setNullSelectionItemId(NULL_SELECTION_ID);
@@ -68,7 +69,8 @@ public class DisabledOptionGroupItems extends ComponentTestCase<OptionGroup> {
         return createButtonAction("Invert disabled items",
                 new Command<OptionGroup, Boolean>() {
 
-                    public void execute(OptionGroup c, Boolean value) {
+                    public void execute(OptionGroup c, Boolean value,
+                            Object data) {
                         for (Object itemId : c.getItemIds()) {
                             c.setItemEnabled(itemId, !c.isItemEnabled(itemId));
                         }
index 8955c4e1465aa3fd93c32a29cc92144adaa096f9..d5577e213ce5da6c04ba994c32c97513c1d6b30f 100644 (file)
@@ -105,10 +105,11 @@ public class NativeSelects extends ComponentTestCase<NativeSelect> {
 
     @Override
     protected void createCustomActions(List<Component> actions) {
-        actions.add(createCheckboxAction("Null selection allowed", false,
+        actions.add(createBooleanAction("Null selection allowed", false,
                 new Command<NativeSelect, Boolean>() {
 
-                    public void execute(NativeSelect c, Boolean value) {
+                    public void execute(NativeSelect c, Boolean value,
+                            Object data) {
                         c.setNullSelectionAllowed(value);
                     }
                 }));
index a9dee06adfeccb0e8bd7fd9e8cabbad87175ef75..617532b9758202060dfcc7756f6c3a123730ea18 100644 (file)
@@ -1,16 +1,14 @@
 package com.vaadin.tests.components.table;\r
 \r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
 import java.util.LinkedHashMap;\r
 import java.util.List;\r
 \r
-import com.vaadin.data.Container;\r
-import com.vaadin.data.Item;\r
-import com.vaadin.data.util.IndexedContainer;\r
 import com.vaadin.event.ItemClickEvent;\r
 import com.vaadin.event.ItemClickEvent.ItemClickListener;\r
-import com.vaadin.tests.components.ComponentTestCase;\r
+import com.vaadin.tests.components.MenuBasedComponentTestCase;\r
 import com.vaadin.ui.AbstractSelect.MultiSelectMode;\r
-import com.vaadin.ui.Component;\r
 import com.vaadin.ui.Table;\r
 import com.vaadin.ui.Table.ColumnResizeEvent;\r
 import com.vaadin.ui.Table.ColumnResizeListener;\r
@@ -19,68 +17,165 @@ import com.vaadin.ui.Table.FooterClickListener;
 import com.vaadin.ui.Table.HeaderClickEvent;\r
 import com.vaadin.ui.Table.HeaderClickListener;\r
 \r
-public class Tables extends ComponentTestCase<Table> implements\r
+public class Tables extends MenuBasedComponentTestCase<Table> implements\r
         ItemClickListener, HeaderClickListener, FooterClickListener,\r
         ColumnResizeListener {\r
 \r
+    protected static final String CATEGORY_ROWS = "Rows";\r
+    private static final String CATEGORY_HEADER = "Header";\r
+    private static final String CATEGORY_FOOTER = "Footer";\r
+    private static final String CATEGORY_FEATURE_TOGGLES = "Features";\r
+    private static final String CATEGORY_VISIBLE_COLUMNS = "Visible columns";\r
+\r
+    /* COMMANDS */\r
+    private Command<Table, Boolean> visibleColumnCommand = new Command<Table, Boolean>() {\r
+        public void execute(Table c, Boolean visible, Object propertyId) {\r
+            List<Object> visibleColumns = new ArrayList<Object>(Arrays.asList(c\r
+                    .getVisibleColumns()));\r
+            if (visible) {\r
+                // Table should really check this... Completely fails without\r
+                // the check (#\r
+                if (!visibleColumns.contains(propertyId)) {\r
+                    visibleColumns.add(propertyId);\r
+                }\r
+            } else {\r
+                visibleColumns.remove(propertyId);\r
+            }\r
+            c.setVisibleColumns(visibleColumns.toArray());\r
+        }\r
+    };\r
+\r
+    protected Command<Table, Boolean> columnResizeListenerCommand = new Command<Table, Boolean>() {\r
+        @Override\r
+        public void execute(Table c, Boolean value, Object data) {\r
+            if (value) {\r
+                c.addListener((ColumnResizeListener) Tables.this);\r
+            } else {\r
+                c.removeListener((ColumnResizeListener) Tables.this);\r
+            }\r
+        }\r
+    };\r
+\r
+    protected Command<Table, Boolean> headerClickListenerCommand = new Command<Table, Boolean>() {\r
+        @Override\r
+        public void execute(Table c, Boolean value, Object data) {\r
+            if (value) {\r
+                c.addListener((HeaderClickListener) Tables.this);\r
+            } else {\r
+                c.removeListener((HeaderClickListener) Tables.this);\r
+            }\r
+        }\r
+    };\r
+\r
+    protected Command<Table, Boolean> footerClickListenerCommand = new Command<Table, Boolean>() {\r
+        @Override\r
+        public void execute(Table c, Boolean value, Object data) {\r
+            if (value) {\r
+                c.addListener((FooterClickListener) Tables.this);\r
+            } else {\r
+                c.removeListener((FooterClickListener) Tables.this);\r
+            }\r
+        }\r
+    };\r
+\r
+    protected Command<Table, Integer> rowHeaderModeCommand = new Command<Table, Integer>() {\r
+        @Override\r
+        public void execute(Table c, Integer value, Object data) {\r
+            if (value == Table.ROW_HEADER_MODE_PROPERTY) {\r
+                c.setItemCaptionPropertyId("Column 3");\r
+            }\r
+            c.setRowHeaderMode(value);\r
+        }\r
+    };\r
+\r
+    protected Command<Table, String> footerTextCommand = new Command<Table, String>() {\r
+        @Override\r
+        public void execute(Table c, String value, Object data) {\r
+            for (Object propertyId : c.getContainerPropertyIds()) {\r
+                if (value != null) {\r
+                    c.setColumnFooter(propertyId,\r
+                            value.replace("{id}", propertyId.toString()));\r
+                } else {\r
+                    c.setColumnFooter(propertyId, null);\r
+                }\r
+            }\r
+        }\r
+    };\r
+\r
+    public class Alignments {\r
+\r
+    }\r
+\r
+    protected Command<Table, Alignments> columnAlignmentCommand = new Command<Table, Alignments>() {\r
+        @Override\r
+        public void execute(Table c, Alignments value, Object data) {\r
+            for (Object propertyId : c.getContainerPropertyIds()) {\r
+                // TODO\r
+            }\r
+        }\r
+    };\r
+\r
+    /* COMMANDS END */\r
+\r
     @Override\r
     protected Class<Table> getTestClass() {\r
         return Table.class;\r
     }\r
 \r
     @Override\r
-    protected void initializeComponents() {\r
-        addTestComponent(createTable());\r
-        enableLog();\r
+    protected void createCustomActions() {\r
+        createPageLengthSelect(CATEGORY_SIZE);\r
 \r
-    }\r
+        createSelectionModeSelect(CATEGORY_SELECTION);\r
 \r
-    private Table createTable() {\r
-        Table t = new Table();\r
-        return t;\r
-    }\r
+        createItemClickListenerCheckbox(CATEGORY_LISTENERS);\r
+        createColumnResizeListenerCheckbox(CATEGORY_LISTENERS);\r
+        createHeaderClickListenerCheckbox(CATEGORY_LISTENERS);\r
+        createFooterClickListenerCheckbox(CATEGORY_LISTENERS);\r
 \r
-    private Container createContainer(int properties, int items) {\r
-        IndexedContainer c = new IndexedContainer();\r
-        for (int i = 1; i <= properties; i++) {\r
-            c.addContainerProperty("Column " + i, String.class, "");\r
-        }\r
-        for (int i = 1; i <= items; i++) {\r
-            Item item = c.addItem("Item " + i);\r
-            for (int j = 1; j <= properties; j++) {\r
-                item.getItemProperty("Column " + j).setValue(\r
-                        "Item " + i + "," + j);\r
-            }\r
-        }\r
+        createRowHeaderModeSelect(CATEGORY_CONTENT);\r
+\r
+        createHeaderVisibilitySelect(CATEGORY_HEADER);\r
+        createHeaderTextCheckbox(CATEGORY_HEADER);\r
+\r
+        createFooterVisibilityCheckbox(CATEGORY_FOOTER);\r
+        createFooterTextSelect(CATEGORY_FOOTER);\r
+\r
+        createColumnReorderingAllowedCheckbox(CATEGORY_FEATURE_TOGGLES);\r
+        createColumnCollapsingAllowedCheckbox(CATEGORY_FEATURE_TOGGLES);\r
+\r
+        createVisibleColumnsMultiToggle(CATEGORY_VISIBLE_COLUMNS);\r
 \r
-        return c;\r
     }\r
 \r
-    @Override\r
-    protected void createCustomActions(List<Component> actions) {\r
-        actions.add(createNullSelectCheckbox());\r
-        actions.add(createWidthSelect());\r
-        actions.add(createHeightSelect());\r
-        actions.add(createPageLengthSelect());\r
-        actions.add(createItemsInContainerSelect());\r
-        actions.add(createColumnsInContainerSelect());\r
-        actions.add(createSelectionModeSelect());\r
-        actions.add(createItemClickListenerCheckbox());\r
-        actions.add(createColumnResizeListenerCheckbox());\r
-\r
-        actions.add(createRowHeaderModeSelect());\r
-\r
-        actions.add(createHeaderVisibilitySelect());\r
-        actions.add(createHeaderClickListenerCheckbox());\r
-        actions.add(createHeaderTextCheckbox());\r
-\r
-        actions.add(createFooterVisibilityCheckbox());\r
-        actions.add(createFooterClickListenerCheckbox());\r
-        actions.add(createFooterTextCheckbox());\r
+    private void createColumnReorderingAllowedCheckbox(String category) {\r
+        createBooleanAction("Column reordering allowed", category, true,\r
+                new Command<Table, Boolean>() {\r
+                    @Override\r
+                    public void execute(Table c, Boolean value, Object data) {\r
+                        c.setColumnReorderingAllowed(value);\r
+                    }\r
+                });\r
+    }\r
+\r
+    private void createColumnCollapsingAllowedCheckbox(String category) {\r
+        createBooleanAction("Column collapsing allowed", category, true,\r
+                new Command<Table, Boolean>() {\r
+                    @Override\r
+                    public void execute(Table c, Boolean value, Object data) {\r
+                        c.setColumnCollapsingAllowed(value);\r
+                    }\r
+                });\r
+    }\r
 \r
+    private void createVisibleColumnsMultiToggle(String category) {\r
+        for (Object id : getComponent().getContainerPropertyIds()) {\r
+            createBooleanAction(id.toString() + " - visible", category, true,\r
+                    visibleColumnCommand, id);\r
+        }\r
     }\r
 \r
-    private Component createRowHeaderModeSelect() {\r
+    private void createRowHeaderModeSelect(String category) {\r
         LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>();\r
         options.put("Explicit", Table.ROW_HEADER_MODE_EXPLICIT);\r
         options.put("Explicit defaults id",\r
@@ -92,50 +187,42 @@ public class Tables extends ComponentTestCase<Table> implements
         options.put("Item", Table.ROW_HEADER_MODE_ITEM);\r
         options.put("'Column 3' property", Table.ROW_HEADER_MODE_PROPERTY);\r
 \r
-        return super.createSelectAction("Row header mode", options, "Hidden",\r
-                new Command<Table, Integer>() {\r
-\r
-                    public void execute(Table c, Integer value) {\r
-                        if (value == Table.ROW_HEADER_MODE_PROPERTY) {\r
-                            c.setItemCaptionPropertyId("Column 3");\r
-                        }\r
-                        c.setRowHeaderMode(value);\r
-\r
-                    }\r
-                });\r
+        createSelectAction("Row header mode", category, options, "Hidden",\r
+                rowHeaderModeCommand);\r
     }\r
 \r
-    private Component createFooterTextCheckbox() {\r
-        return super.createCheckboxAction("Texts in footer", false,\r
-                new Command<Table, Boolean>() {\r
-\r
-                    public void execute(Table c, Boolean value) {\r
-                        for (Object propertyId : c.getContainerPropertyIds()) {\r
-                            if (value) {\r
-                                c.setColumnFooter(propertyId, "Footer: "\r
-                                        + propertyId);\r
-                            } else {\r
-                                c.setColumnFooter(propertyId, null);\r
-\r
-                            }\r
-                        }\r
+    private void createFooterTextSelect(String category) {\r
+        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();\r
+        options.put("None", null);\r
+        options.put("Footer X", "Footer {id}");\r
+        options.put("X", "{id}");\r
 \r
-                    }\r
-                });\r
+        createSelectAction("Texts in footer", category, options, "None",\r
+                footerTextCommand);\r
     }\r
 \r
-    private Component createHeaderTextCheckbox() {\r
-        return super.createCheckboxAction("Texts in header", false,\r
-                new Command<Table, Boolean>() {\r
+    private void createHeaderTextCheckbox(String category) {\r
+        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();\r
+        options.put("None", null);\r
+        options.put("Col: {id}", "Col: {id}");\r
+        options.put("Header {id} - every second", "Header {id}");\r
 \r
-                    public void execute(Table c, Boolean value) {\r
+        createSelectAction("Texts in header", category, options, "None",\r
+                new Command<Table, String>() {\r
+                    public void execute(Table c, String value, Object data) {\r
+                        int nr = 0;\r
                         for (Object propertyId : c.getContainerPropertyIds()) {\r
-                            if (value) {\r
-                                c.setColumnHeader(propertyId, "Header: "\r
-                                        + propertyId);\r
+                            nr++;\r
+                            if (value != null && value.equals("Header {id}")\r
+                                    && nr % 2 == 0) {\r
+                                c.setColumnHeader(propertyId, null);\r
+                            } else if (value != null) {\r
+                                c.setColumnHeader(\r
+                                        propertyId,\r
+                                        value.replace("{id}",\r
+                                                propertyId.toString()));\r
                             } else {\r
                                 c.setColumnHeader(propertyId, null);\r
-\r
                             }\r
                         }\r
 \r
@@ -143,77 +230,48 @@ public class Tables extends ComponentTestCase<Table> implements
                 });\r
     }\r
 \r
-    private Component createItemClickListenerCheckbox() {\r
-        return super.createCheckboxAction("Item click listener", false,\r
-                new Command<Table, Boolean>() {\r
+    private void createItemClickListenerCheckbox(String category) {\r
+        Command<Table, Boolean> itemClickListenerCommand = new Command<Table, Boolean>() {\r
 \r
-                    public void execute(Table c, Boolean value) {\r
-                        if (value) {\r
-                            c.addListener((ItemClickListener) Tables.this);\r
-                        } else {\r
-                            c.removeListener((ItemClickListener) Tables.this);\r
-                        }\r
+            @Override\r
+            public void execute(Table c, Boolean value, Object data) {\r
+                if (value) {\r
+                    c.addListener((ItemClickListener) Tables.this);\r
+                } else {\r
+                    c.removeListener((ItemClickListener) Tables.this);\r
+                }\r
 \r
-                    }\r
-                });\r
+            }\r
+        };\r
+        createBooleanAction("Item click listener", category, false,\r
+                itemClickListenerCommand);\r
     }\r
 \r
-    private Component createHeaderClickListenerCheckbox() {\r
-        return super.createCheckboxAction("Header click listener", false,\r
-                new Command<Table, Boolean>() {\r
-\r
-                    public void execute(Table c, Boolean value) {\r
-                        if (value) {\r
-                            c.addListener((HeaderClickListener) Tables.this);\r
-                        } else {\r
-                            c.removeListener((HeaderClickListener) Tables.this);\r
-                        }\r
+    private void createHeaderClickListenerCheckbox(String category) {\r
 \r
-                    }\r
-                });\r
+        createBooleanAction("Header click listener", category, false,\r
+                headerClickListenerCommand);\r
     }\r
 \r
-    private Component createFooterClickListenerCheckbox() {\r
-        return super.createCheckboxAction("Footer click listener", false,\r
-                new Command<Table, Boolean>() {\r
-\r
-                    public void execute(Table c, Boolean value) {\r
-                        if (value) {\r
-                            c.addListener((FooterClickListener) Tables.this);\r
-                        } else {\r
-                            c.removeListener((FooterClickListener) Tables.this);\r
-                        }\r
+    private void createFooterClickListenerCheckbox(String category) {\r
 \r
-                    }\r
-                });\r
+        createBooleanAction("Footer click listener", category, false,\r
+                footerClickListenerCommand);\r
     }\r
 \r
-    private Component createColumnResizeListenerCheckbox() {\r
-        return super.createCheckboxAction("Column resize listener", false,\r
-                new Command<Table, Boolean>() {\r
-\r
-                    public void execute(Table c, Boolean value) {\r
-                        if (value) {\r
-                            c.addListener((ColumnResizeListener) Tables.this);\r
-                        } else {\r
-                            c.removeListener((ColumnResizeListener) Tables.this);\r
-                        }\r
+    private void createColumnResizeListenerCheckbox(String category) {\r
 \r
-                    }\r
-                });\r
+        createBooleanAction("Column resize listener", category, false,\r
+                columnResizeListenerCommand);\r
     }\r
 \r
     // TODO:\r
     // Visible columns\r
-    // Column headers\r
-    // Column footers\r
     // Column icons\r
     // Column alignments\r
     // Column width\r
     // Column expand ratio\r
     // Column collapse\r
-    // Column reordering allowed\r
-    // Column collapsing allowed\r
     // setCurrentPageFirstItemIndex()\r
     // setColumnHeaderMode(int)\r
     // setRowHeaderMode(int)\r
@@ -224,27 +282,19 @@ public class Tables extends ComponentTestCase<Table> implements
 \r
     // Cache rate\r
     // CurrentPageFirstItemId\r
-    private Component createNullSelectCheckbox() {\r
-        return super.createCheckboxAction("NullSelection", false,\r
-                new Command<Table, Boolean>() {\r
-\r
-                    public void execute(Table c, Boolean value) {\r
-                        c.setNullSelectionAllowed(value);\r
-                    }\r
-                });\r
-    }\r
 \r
-    private Component createFooterVisibilityCheckbox() {\r
-        return createCheckboxAction("Footer visible", true,\r
+    protected void createFooterVisibilityCheckbox(String category) {\r
+        createBooleanAction("Footer visible", category, true,\r
                 new Command<Table, Boolean>() {\r
 \r
-                    public void execute(Table c, Boolean value) {\r
+                    @Override\r
+                    public void execute(Table c, Boolean value, Object data) {\r
                         c.setFooterVisible(value);\r
                     }\r
                 });\r
     }\r
 \r
-    private Component createHeaderVisibilitySelect() {\r
+    protected void createHeaderVisibilitySelect(String category) {\r
         LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>();\r
         options.put("Explicit", Table.COLUMN_HEADER_MODE_EXPLICIT);\r
         options.put("Explicit defaults id",\r
@@ -252,49 +302,18 @@ public class Tables extends ComponentTestCase<Table> implements
         options.put("Id", Table.COLUMN_HEADER_MODE_ID);\r
         options.put("Hidden", Table.COLUMN_HEADER_MODE_HIDDEN);\r
 \r
-        return createSelectAction("Header mode", options,\r
+        createSelectAction("Header mode", category, options,\r
                 "Explicit defaults id", new Command<Table, Integer>() {\r
 \r
-                    public void execute(Table c, Integer value) {\r
+                    @Override\r
+                    public void execute(Table c, Integer value, Object data) {\r
                         c.setColumnHeaderMode(value);\r
 \r
                     }\r
                 });\r
     }\r
 \r
-    protected Component createWidthSelect() {\r
-        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();\r
-        options.put("Undefined", null);\r
-        options.put("200px", "200px");\r
-        options.put("500px", "500px");\r
-        options.put("800px", "800px");\r
-\r
-        return super.createSelectAction("Width", options, "Undefined",\r
-                new Command<Table, String>() {\r
-\r
-                    public void execute(Table t, String value) {\r
-                        t.setWidth(value);\r
-                    }\r
-                });\r
-    }\r
-\r
-    protected Component createHeightSelect() {\r
-        LinkedHashMap<String, String> options = new LinkedHashMap<String, String>();\r
-        options.put("Undefined", null);\r
-        options.put("200px", "200px");\r
-        options.put("500px", "500px");\r
-        options.put("800px", "800px");\r
-\r
-        return super.createSelectAction("Height", options, "Undefined",\r
-                new Command<Table, String>() {\r
-\r
-                    public void execute(Table t, String value) {\r
-                        t.setHeight(value);\r
-                    }\r
-                });\r
-    }\r
-\r
-    protected Component createPageLengthSelect() {\r
+    protected void createPageLengthSelect(String category) {\r
         LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>();\r
         options.put("0", 0);\r
         options.put("5", 5);\r
@@ -302,69 +321,32 @@ public class Tables extends ComponentTestCase<Table> implements
         options.put("20", 20);\r
         options.put("50", 50);\r
 \r
-        return super.createSelectAction("PageLength", options, "10",\r
+        createSelectAction("PageLength", category, options, "10",\r
                 new Command<Table, Integer>() {\r
 \r
-                    public void execute(Table t, Integer value) {\r
+                    @Override\r
+                    public void execute(Table t, Integer value, Object data) {\r
                         t.setPageLength(value);\r
                     }\r
                 });\r
     }\r
 \r
-    protected Component createItemsInContainerSelect() {\r
-        LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>();\r
-        options.put("0", 0);\r
-        options.put("20", 20);\r
-        options.put("100", 100);\r
-        options.put("1000", 1000);\r
-        options.put("10000", 10000);\r
-        options.put("100000", 100000);\r
-\r
-        return super.createSelectAction("Items in container", options, "20",\r
-                new Command<Table, Integer>() {\r
-\r
-                    public void execute(Table t, Integer value) {\r
-                        t.setContainerDataSource(createContainer(t\r
-                                .getContainerDataSource()\r
-                                .getContainerPropertyIds().size(), value));\r
-                    }\r
-                });\r
-    }\r
-\r
-    protected Component createColumnsInContainerSelect() {\r
-        LinkedHashMap<String, Integer> options = new LinkedHashMap<String, Integer>();\r
-        options.put("0", 0);\r
-        options.put("5", 5);\r
-        options.put("10", 10);\r
-        options.put("50", 50);\r
-        options.put("100", 100);\r
-        options.put("1000", 1000);\r
-\r
-        return super.createSelectAction("Columns in container", options, "10",\r
-                new Command<Table, Integer>() {\r
-\r
-                    public void execute(Table t, Integer value) {\r
-                        t.setContainerDataSource(createContainer(value, t\r
-                                .getContainerDataSource().size()));\r
-                    }\r
-                });\r
-    }\r
-\r
     private enum SelectMode {\r
         NONE, SINGLE, MULTI_SIMPLE, MULTI;\r
     }\r
 \r
-    protected Component createSelectionModeSelect() {\r
+    protected void createSelectionModeSelect(String category) {\r
         LinkedHashMap<String, SelectMode> options = new LinkedHashMap<String, SelectMode>();\r
         options.put("None", SelectMode.NONE);\r
         options.put("Single", SelectMode.SINGLE);\r
         options.put("Multi - simple", SelectMode.MULTI_SIMPLE);\r
         options.put("Multi - ctrl/shift", SelectMode.MULTI);\r
 \r
-        return super.createSelectAction("Selection Mode", options,\r
+        createSelectAction("Selection Mode", category, options,\r
                 "Multi - ctrl/shift", new Command<Table, SelectMode>() {\r
 \r
-                    public void execute(Table t, SelectMode value) {\r
+                    @Override\r
+                    public void execute(Table t, SelectMode value, Object data) {\r
                         switch (value) {\r
                         case NONE:\r
                             t.setSelectable(false);\r
@@ -404,7 +386,7 @@ public class Tables extends ComponentTestCase<Table> implements
     }\r
 \r
     public void itemClick(ItemClickEvent event) {\r
-        log("ItemClick on " + event.getPropertyId() + " using "\r
-                + event.getButtonName());\r
+        log("ItemClick on " + event.getItemId() + "/" + event.getPropertyId()\r
+                + " using " + event.getButtonName());\r
     }\r
 }\r
index 26e169c7151af7c61a266fb821a9ecf0e0f5d441..009cc63168ac1504107bd3b88d974358a44eb69a 100644 (file)
@@ -81,7 +81,7 @@ public class TestUploadAndDisableOnSuccess extends ComponentTestCase<Upload>
         actions.add(createButtonAction("Toggle Enabled",\r
                 new Command<Upload, Boolean>() {\r
 \r
-                    public void execute(Upload c, Boolean value) {\r
+                    public void execute(Upload c, Boolean value, Object data) {\r
                         c.setEnabled(!c.isEnabled());\r
                     }\r
                 }));\r