package com.vaadin.tests.tickets;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Validator;
import com.vaadin.server.LegacyApplication;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.Notification;
import com.vaadin.ui.TextField;
public class Ticket2107 extends LegacyApplication {
@Override
public void init() {
final LegacyWindow w = new LegacyWindow("Testing for #2107");
setMainWindow(w);
final TextField tf = new TextField(
"Required field that validated the input");
tf.setDescription("Enter someting and click outside the field to activate");
tf.setRequired(true);
tf.setImmediate(true);
tf.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
w.showNotification("TextField is " + (tf.isValid() ? "" : "in")
+ "valid, with error: " + tf.getErrorMessage(),
Notification.TYPE_WARNING_MESSAGE);
}
});
tf.addValidator(new Validator() {
@Override
public void validate(Object value) throws InvalidValueException {
if (value == null || value.toString().length() <= 3) {
throw new InvalidValueException(
"Text length must exceed 3 characters");
}
}
});
w.addComponent(tf);
final CheckBox b = new CheckBox(
"Field should use error message. (!) should be shown when empty.",
false);
w.addComponent(b);
b.setImmediate(true);
b.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
tf.setRequiredError(b.getValue() ? "Field must not be empty"
: null);
}
});
}
}