package org.vaadin.viritin.it;
import com.vaadin.data.Binder;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.Notification;
import com.vaadin.ui.TextField;
import java.util.Objects;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import org.vaadin.addonhelpers.AbstractTest;
import org.vaadin.viritin.fields.IntegerField;
import org.vaadin.viritin.fields.IntegerSliderField;
import org.vaadin.viritin.layouts.MVerticalLayout;
/**
*
* @author Matti Tahvonen
*/
public class IntegerFieldUsage extends AbstractTest {
private static final long serialVersionUID = -1841759044439831663L;
public static class Domain {
private Integer normalInteger;
private Integer integer;
private int intti = 2;
@Min(10)
@Max(100)
private Integer validatedInteger;
@NotNull
@Min(5)
@Max(55)
private int slider = 50;
public Integer getValidatedInteger() {
return validatedInteger;
}
public void setValidatedInteger(Integer validatedInteger) {
this.validatedInteger = validatedInteger;
}
public Integer getInteger() {
return integer;
}
public void setInteger(Integer integer) {
this.integer = integer;
}
public int getIntti() {
return intti;
}
public void setIntti(int intti) {
this.intti = intti;
}
public int getSlider() {
return slider;
}
public void setSlider(int slider) {
this.slider = slider;
}
public Integer getNormalInteger() {
return normalInteger;
}
public void setNormalInteger(Integer normalInteger) {
this.normalInteger = normalInteger;
}
@Override
public String toString() {
return "Domain{" + "normalInteger=" + normalInteger + ", integer=" + integer + ", intti=" + intti + ", validatedInteger=" + validatedInteger + ", slider=" + slider + '}';
}
}
private final TextField normalInteger = new TextField("Integer with basic TextField");
private final IntegerField integer = new IntegerField().withCaption("Integer");
private final IntegerField intti = new IntegerField().withCaption("int");
private final IntegerField validatedInteger = new IntegerField().withCaption(
"validated");
private final IntegerSliderField slider = new IntegerSliderField()
.withCaption("Slider")
.withStep(5) // .withMax(69) // Set automatically from BeanValidation annotations
// .withMin(-69) // Set automatically from BeanValidation annotations
;
@Override
public Component getTestComponent() {
final Domain domain = new Domain();
Binder<Domain> b = new Binder<>(Domain.class);
b.forMemberField(normalInteger).withConverter(toModel->Integer.parseInt(toModel), toPresentation -> Objects.toString(toPresentation));
b.bindInstanceFields(this);
b.setBean(domain);
b.addStatusChangeListener(e -> Notification.show("Bean valid? " + !e.hasValidationErrors()));
Button show = new Button("Show value", new Button.ClickListener() {
private static final long serialVersionUID = 5019806363620874205L;
@Override
public void buttonClick(Button.ClickEvent event) {
Notification.show(domain.toString());
}
});
Button toggleVisible = new Button("Toggle visibility",
new Button.ClickListener() {
private static final long serialVersionUID = 5019806363620874205L;
@Override
public void buttonClick(Button.ClickEvent event) {
integer.setVisible(!integer.isVisible());
}
});
// Put invalid value to the backing bean, otherwise demo might appear
// broken
// TODO see how this goes in V8
// validatedInteger.setInvalidCommitted(true);
// slider.setInvalidCommitted(true);
return new MVerticalLayout(
integer,
intti,
validatedInteger,
slider,
normalInteger,
show,
toggleVisible
);
}
}