]> source.dussan.org Git - vaadin-framework.git/commitdiff
Generic Table test case. Still does not include all Table features
authorArtur Signell <artur.signell@itmill.com>
Mon, 11 Oct 2010 14:47:03 +0000 (14:47 +0000)
committerArtur Signell <artur.signell@itmill.com>
Mon, 11 Oct 2010 14:47:03 +0000 (14:47 +0000)
svn changeset:15492/svn branch:6.4

tests/src/com/vaadin/tests/components/table/Tables.java [new file with mode: 0644]

diff --git a/tests/src/com/vaadin/tests/components/table/Tables.java b/tests/src/com/vaadin/tests/components/table/Tables.java
new file mode 100644 (file)
index 0000000..a9dee06
--- /dev/null
@@ -0,0 +1,410 @@
+package com.vaadin.tests.components.table;\r
+\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.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
+import com.vaadin.ui.Table.FooterClickEvent;\r
+import com.vaadin.ui.Table.FooterClickListener;\r
+import com.vaadin.ui.Table.HeaderClickEvent;\r
+import com.vaadin.ui.Table.HeaderClickListener;\r
+\r
+public class Tables extends ComponentTestCase<Table> implements\r
+        ItemClickListener, HeaderClickListener, FooterClickListener,\r
+        ColumnResizeListener {\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
+\r
+    }\r
+\r
+    private Table createTable() {\r
+        Table t = new Table();\r
+        return t;\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
+    @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
+\r
+    }\r
+\r
+    private Component createRowHeaderModeSelect() {\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
+                Table.ROW_HEADER_MODE_EXPLICIT_DEFAULTS_ID);\r
+        options.put("Hidden", Table.ROW_HEADER_MODE_HIDDEN);\r
+        options.put("Icon only", Table.ROW_HEADER_MODE_ICON_ONLY);\r
+        options.put("Id", Table.ROW_HEADER_MODE_ID);\r
+        options.put("Index", Table.ROW_HEADER_MODE_INDEX);\r
+        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
+    }\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
+\r
+                    }\r
+                });\r
+    }\r
+\r
+    private Component createHeaderTextCheckbox() {\r
+        return super.createCheckboxAction("Texts in header", 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.setColumnHeader(propertyId, "Header: "\r
+                                        + propertyId);\r
+                            } else {\r
+                                c.setColumnHeader(propertyId, null);\r
+\r
+                            }\r
+                        }\r
+\r
+                    }\r
+                });\r
+    }\r
+\r
+    private Component createItemClickListenerCheckbox() {\r
+        return super.createCheckboxAction("Item click listener", false,\r
+                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
+\r
+                    }\r
+                });\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
+\r
+                    }\r
+                });\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
+\r
+                    }\r
+                });\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
+\r
+                    }\r
+                });\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
+    // Generated column\r
+    // Cell style generator\r
+    // Editable\r
+    // Context menu\r
+\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
+                new Command<Table, Boolean>() {\r
+\r
+                    public void execute(Table c, Boolean value) {\r
+                        c.setFooterVisible(value);\r
+                    }\r
+                });\r
+    }\r
+\r
+    private Component createHeaderVisibilitySelect() {\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
+                Table.COLUMN_HEADER_MODE_EXPLICIT_DEFAULTS_ID);\r
+        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
+                "Explicit defaults id", new Command<Table, Integer>() {\r
+\r
+                    public void execute(Table c, Integer value) {\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
+        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("20", 20);\r
+        options.put("50", 50);\r
+\r
+        return super.createSelectAction("PageLength", options, "10",\r
+                new Command<Table, Integer>() {\r
+\r
+                    public void execute(Table t, Integer value) {\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
+        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
+                "Multi - ctrl/shift", new Command<Table, SelectMode>() {\r
+\r
+                    public void execute(Table t, SelectMode value) {\r
+                        switch (value) {\r
+                        case NONE:\r
+                            t.setSelectable(false);\r
+                            break;\r
+                        case SINGLE:\r
+                            t.setMultiSelect(false);\r
+                            t.setSelectable(true);\r
+                            break;\r
+                        case MULTI_SIMPLE:\r
+                            t.setSelectable(true);\r
+                            t.setMultiSelect(true);\r
+                            t.setMultiSelectMode(MultiSelectMode.SIMPLE);\r
+                            break;\r
+                        case MULTI:\r
+                            t.setSelectable(true);\r
+                            t.setMultiSelect(true);\r
+                            t.setMultiSelectMode(MultiSelectMode.DEFAULT);\r
+                            break;\r
+                        }\r
+                    }\r
+                });\r
+    }\r
+\r
+    public void columnResize(ColumnResizeEvent event) {\r
+        log("ColumnResize on " + event.getPropertyId() + " from "\r
+                + event.getPreviousWidth() + " to " + event.getCurrentWidth());\r
+    }\r
+\r
+    public void footerClick(FooterClickEvent event) {\r
+        log("FooterClick on " + event.getPropertyId() + " using "\r
+                + event.getButtonName());\r
+    }\r
+\r
+    public void headerClick(HeaderClickEvent event) {\r
+        log("HeaderClick on " + event.getPropertyId() + " using "\r
+                + event.getButtonName());\r
+    }\r
+\r
+    public void itemClick(ItemClickEvent event) {\r
+        log("ItemClick on " + event.getPropertyId() + " using "\r
+                + event.getButtonName());\r
+    }\r
+}\r