aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/tests/data/ReplaceDataProvider.java
blob: 8cc8013618b84e4d833d86bb03870de02460e3a5 (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
package com.vaadin.tests.data;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Grid;

public class ReplaceDataProvider extends AbstractTestUI {

    private static class TestClass {
        public String someField;
        public int hash;

        public TestClass(int hash) {
            this.hash = hash;
            someField = "a";
        }
    }

    @Override
    protected void setup(VaadinRequest request) {
        Grid<TestClass> grid = new Grid<>();
        grid.addColumn(item -> item.someField);

        List<TestClass> listOfClasses = IntStream.range(0, 10)
                .mapToObj(TestClass::new).collect(Collectors.toList());
        for (int i = 0; i < 10; i++) {
            listOfClasses.add(new TestClass(10));
        }

        grid.setItems(listOfClasses);

        Button replaceBtn = new Button("replace data provider");
        replaceBtn.addClickListener(clickEvent -> {
            List<TestClass> newList = IntStream.range(0, 10)
                    .mapToObj(TestClass::new).collect(Collectors.toList());
            newList.get(0).someField = "b";
            grid.setItems(newList);
        });

        Button replaceAndSelectBtn = new Button(
                "replace data provider and select second");
        replaceAndSelectBtn.addClickListener(clickEvent -> {
            List<TestClass> newList = IntStream.range(0, 10)
                    .mapToObj(TestClass::new).collect(Collectors.toList());
            newList.get(0).someField = "b";
            grid.setItems(newList);
            grid.getSelectionModel().select(newList.get(1));
        });

        addComponents(replaceBtn, replaceAndSelectBtn, grid);
    }
}