aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxCaptionAndIconUpdate.java
blob: 7e1e200a71c14769c03095bd9e72f22a38f792bf (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.combobox;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import com.vaadin.annotations.Widgetset;
import com.vaadin.server.ClassResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.ComboBox;

@Widgetset("com.vaadin.DefaultWidgetSet")
public class ComboBoxCaptionAndIconUpdate extends AbstractTestUI {

    public static class Commit {
        private final long id;
        private String message;
        private ClassResource icon;

        Commit(long id, String message, ClassResource icon) {
            this.id = id;
            this.message = message;
            this.icon = icon;
        }

        public long getId() {
            return id;
        }

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public ClassResource getIcon() {
            return icon;
        }

        public void setIcon(ClassResource icon) {
            this.icon = icon;
        }
    }

    List<Commit> backend = new ArrayList<>();

    private final ClassResource M_RESOURCE = new ClassResource(
            "/com/vaadin/tests/m.gif");
    private final ClassResource FI_RESOURCE = new ClassResource(
            "/com/vaadin/tests/integration/fi.gif");

    @Override
    protected void setup(VaadinRequest request) {
        ComboBox<Commit> comboBox = new ComboBox<Commit>();

        backend = Stream.of(1, 2)
                .map(id -> new Commit(id, "Commit ID " + id, M_RESOURCE))
                .collect(Collectors.toList());
        comboBox.setItems(backend);
        comboBox.setValue(backend.get(0));

        comboBox.setItemIconGenerator(i -> FI_RESOURCE);
        comboBox.setItemCaptionGenerator(i -> "Commit " + i.getId());
        comboBox.setWidth("300px");

        addComponent(comboBox);
        addComponent(createButton("Set Icon Generator", "icon",
                e -> comboBox.setItemIconGenerator(Commit::getIcon)));
        addComponent(createButton("Set Caption Generator", "caption",
                e -> comboBox.setItemCaptionGenerator(Commit::getMessage)));
        addComponent(createButton("Edit Message", "editMsg", e -> {
            Commit item = backend.get(0);
            item.setMessage("Edited message");
            comboBox.getDataProvider().refreshItem(item);
        }));
        addComponent(createButton("Edit Icon", "editIcon", e -> {
            Commit item = backend.get(0);
            item.setIcon(FI_RESOURCE);
            comboBox.getDataProvider().refreshItem(item);
        }));
        addComponent(createButton("Edit Message and Icon", "editAll", e -> {
            Commit item = backend.get(0);
            item.setMessage("Edited message and icon");
            item.setIcon(FI_RESOURCE);
            comboBox.getDataProvider().refreshItem(item);
        }));
    }

    private Button createButton(String caption, String id,
            ClickListener listener) {
        Button button = new Button(caption, listener);
        button.setId(id);
        return button;
    }

}