package com.vaadin.tests.tickets; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; 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 Ticket2038 extends LegacyApplication { @Override public void init() { final LegacyWindow w = new LegacyWindow("Testing for #2038"); setMainWindow(w); final TextField tf = new TextField( "Test-field, 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); } }); w.addComponent(tf); final CheckBox b = new CheckBox( "Field should use error message. (!) should be shown when invalid.", 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); } }); } }