aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/components/treetable/ChangeDataSourcePageLengthZero.java
blob: 3d40bc47cf3e10912ab923f77d2f5b0e5d2fa9ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.vaadin.tests.components.treetable;

import com.vaadin.data.Container.Hierarchical;
import com.vaadin.data.util.HierarchicalContainer;
import com.vaadin.server.ExternalResource;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Link;
import com.vaadin.ui.TreeTable;

public class ChangeDataSourcePageLengthZero extends TestBase {
    @Override
    public void setup() {
        final TreeTable tt = new TreeTable();
        tt.setSizeUndefined();
        tt.setWidth("100%");
        tt.setImmediate(true);
        tt.setPageLength(0);
        setupContainer(tt, 20);
        addComponent(tt);
        Button page1 = new Button("Set new data source (20 items)");
        page1.addListener(new Button.ClickListener() {
            @Override
            public void buttonClick(ClickEvent event) {
                setupContainer(tt, 20);
            }
        });
        Button page2 = new Button("Set new data source (10 items)");
        page2.addListener(new Button.ClickListener() {
            @Override
            public void buttonClick(ClickEvent event) {
                setupContainer(tt, 10);
            }
        });
        Button addButton = new Button("Add item");
        addButton.addListener(new Button.ClickListener() {
            private int i = 1;

            @Override
            public void buttonClick(ClickEvent event) {
                HierarchicalContainer container = (HierarchicalContainer) tt
                        .getContainerDataSource();
                Object itemId = container.addItem();
                container.getContainerProperty(itemId, "i").setValue(i++);
                container.getContainerProperty(itemId, "link").setValue(
                        new Link(String.valueOf(i + 1), new ExternalResource(
                                "http://www.google.fi")));
                container.setChildrenAllowed(itemId, false);
                container.setParent(itemId, null);
            }
        });
        addComponent(page1);
        addComponent(page2);
        addComponent(addButton);
    }

    private static void setupContainer(TreeTable tt, int num) {
        HierarchicalContainer container = new HierarchicalContainer();
        container.addContainerProperty("i", Integer.class, null);
        container.addContainerProperty("link", Link.class, null);
        fillContainer(container, num);
        tt.setContainerDataSource(container);
    }

    private static void fillContainer(Hierarchical container, int num) {
        Object previous = null;
        for (int i = 0; i < num; i++) {
            Object item = container.addItem();
            container.getContainerProperty(item, "i").setValue(i + 1);
            container.getContainerProperty(item, "link").setValue(
                    new Link(String.valueOf(i + 1), new ExternalResource(
                            "http://www.google.fi")));
            if (i > 0 && (i + 1) % 2 == 0) {
                container.setChildrenAllowed(item, false);
                container.setParent(item, previous);
            } else {
                container.setChildrenAllowed(item, true);
            }
            previous = item;
        }
    }

    @Override
    protected String getDescription() {
        return "Changing the data source should update the height of a TreeTable with pagelength zero";
    }

    @Override
    protected Integer getTicketNumber() {
        return 7908;
    }
}