package org.vaadin.viritin.v7;
import com.vaadin.annotations.Theme;
import com.vaadin.ui.Component;
import com.vaadin.ui.Notification;
import org.vaadin.addonhelpers.AbstractTest;
import org.vaadin.viritin.v7.fields.IntegerField;
import org.vaadin.viritin.v7.fields.LabelField;
import org.vaadin.viritin.v7.fields.MTextField;
import org.vaadin.viritin.v7.form.AbstractForm;
import org.vaadin.viritin.layouts.MVerticalLayout;
import org.vaadin.viritin.testdomain.Person;
import org.vaadin.viritin.testdomain.Service;
/**
*
* @author Matti Tahvonen
*/
@Theme("valo")
public class EditPersonWithDisabledField extends AbstractTest {
public class CustomPerson extends Person {
private final String readOnlyFieldInPojo = "fixedValue";
public String getReadOnlyFieldInPojo() {
return readOnlyFieldInPojo;
}
}
public static class PersonForm extends AbstractForm<CustomPerson> {
private static final long serialVersionUID = -2988976182433301844L;
private final MTextField firstName = new MTextField("Name");
private final MTextField readOnlyFieldInPojo = new MTextField("Should be RO");
private final IntegerField age = new IntegerField("Age");
private final LabelField<Integer> id = new LabelField<>(Integer.class)
.withCaption("ID");
public PersonForm() {
firstName.setReadOnly(true);
}
@Override
protected Component createContent() {
return new MVerticalLayout(id, firstName, readOnlyFieldInPojo, age,
getToolbar());
}
}
@Override
public Component getTestComponent() {
PersonForm form = new PersonForm();
form.addValidityChangedListener(
new AbstractForm.ValidityChangedListener<CustomPerson>() {
private static final long serialVersionUID = -8159920971526151534L;
@Override
public void onValidityChanged(
AbstractForm.ValidityChangedEvent<CustomPerson> event) {
if (event.getComponent().isValid()) {
Notification.show("The form is now valid!",
Notification.Type.TRAY_NOTIFICATION);
} else {
Notification.show(
"Invalid values in form, clicking save is disabled!");
}
}
});
CustomPerson p = new CustomPerson();
p.setFirstName("RO in form");
p.setAge(13);
form.setEntity(p);
form.setSavedHandler(new AbstractForm.SavedHandler<CustomPerson>() {
private static final long serialVersionUID = 722131410583777207L;
@Override
public void onSave(CustomPerson entity) {
Notification.show(entity.toString());
}
});
return new MVerticalLayout(form);
}
}