aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/v7/tests/components/grid/GridSwitchRenderers.java
blob: 96c5da053ea3697bb222a4993edff373436f423c (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
94
95
96
package com.vaadin.v7.tests.components.grid;

import java.util.List;
import java.util.Random;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUIWithLog;
import com.vaadin.ui.CheckBox;
import com.vaadin.v7.data.Item;
import com.vaadin.v7.data.util.IndexedContainer;
import com.vaadin.v7.ui.Grid;
import com.vaadin.v7.ui.Grid.Column;
import com.vaadin.v7.ui.Grid.SelectionMode;
import com.vaadin.v7.ui.renderers.HtmlRenderer;
import com.vaadin.v7.ui.renderers.TextRenderer;

@SuppressWarnings("serial")
public class GridSwitchRenderers extends AbstractTestUIWithLog {
    private static final int MANUALLY_FORMATTED_COLUMNS = 1;
    private static final int COLUMNS = 3;
    private static final int ROWS = 1000;
    private static final String EXPANSION_COLUMN_ID = "Column 0";

    private IndexedContainer ds;

    @Override
    protected void setup(VaadinRequest request) {
        ds = new IndexedContainer() {
            @Override
            public List<Object> getItemIds(int startIndex, int numberOfIds) {
                log("Requested items " + startIndex + " - "
                        + (startIndex + numberOfIds));
                return super.getItemIds(startIndex, numberOfIds);
            }
        };

        {
            ds.addContainerProperty(EXPANSION_COLUMN_ID, String.class, "");

            int col = MANUALLY_FORMATTED_COLUMNS;
            for (; col < COLUMNS; col++) {
                ds.addContainerProperty(getColumnProperty(col), String.class,
                        "");
            }
        }

        Random rand = new Random();
        rand.setSeed(13334);
        for (int row = 0; row < ROWS; row++) {
            Item item = ds.addItem(Integer.valueOf(row));
            fillRow("" + row, item);
            item.getItemProperty(getColumnProperty(1)).setReadOnly(true);
        }

        final Grid grid = new Grid(ds);
        grid.setWidth("100%");

        grid.getColumn(EXPANSION_COLUMN_ID).setWidth(50);
        for (int col = MANUALLY_FORMATTED_COLUMNS; col < COLUMNS; col++) {
            grid.getColumn(getColumnProperty(col)).setWidth(300);
            grid.getColumn(getColumnProperty(col))
                    .setRenderer(new TextRenderer());
        }

        grid.setSelectionMode(SelectionMode.NONE);
        addComponent(grid);

        final CheckBox changeRenderer = new CheckBox(
                "SetHtmlRenderer for Column 2", false);
        changeRenderer.addValueChangeListener(event -> {
            Column column = grid.getColumn(getColumnProperty(1));
            if (changeRenderer.getValue()) {
                column.setRenderer(new HtmlRenderer());
            } else {
                column.setRenderer(new TextRenderer());
            }
            grid.markAsDirty();
        });
        addComponent(changeRenderer);
    }

    @SuppressWarnings("unchecked")
    private void fillRow(String content, Item item) {
        int col = MANUALLY_FORMATTED_COLUMNS;

        for (; col < COLUMNS; col++) {
            item.getItemProperty(getColumnProperty(col))
                    .setValue("<b>(" + content + ", " + col + ")</b>");
        }
    }

    private static String getColumnProperty(int c) {
        return "Column " + c;
    }

}