aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/tests/components/slider/SliderValueFromDataSource.java
blob: 6f9bd6b4ef245ae256c46ad55d2b3d559298c925 (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.components.slider;

import com.vaadin.data.Binder;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractReindeerTestUI;
import com.vaadin.ui.ProgressBar;
import com.vaadin.ui.Slider;
import com.vaadin.v7.data.util.BeanItem;

public class SliderValueFromDataSource extends AbstractReindeerTestUI {

    public static class TestBean {

        private float floatValue = 0.5f;

        public float getFloatValue() {
            return floatValue;
        }

        public void setFloatValue(float doubleValue) {
            floatValue = doubleValue;
        }
    }

    @Override
    protected void setup(VaadinRequest request) {
        TestBean bean = new TestBean();
        BeanItem<TestBean> item = new BeanItem<>(bean);

        Slider slider = new Slider(0, 10);
        slider.setWidth("200px");
        Binder<TestBean> binder = new Binder<>();
        binder.forField(slider).bind(
                b -> Double.valueOf(b.getFloatValue() * 10.0),
                (b, doubleValue) -> item.getItemProperty("floatValue")
                        .setValue((float) (doubleValue / 10.0)));
        binder.setBean(bean);

        ProgressBar progressBar = new ProgressBar();
        progressBar.setWidth("200px");

        slider.addValueChangeListener(
                event -> progressBar.setValue(event.getValue().floatValue()));

        addComponents(slider, progressBar);
    }

    @Override
    protected String getTestDescription() {
        return "Slider and ProgressBar do not properly pass a value from data provider to the client";
    }

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