package org.mdl4ui.fields.sample.editor; import org.mdl4ui.base.model.FieldID; import org.mdl4ui.fields.model.Field; import org.mdl4ui.fields.model.component.TextBoxField; import org.mdl4ui.fields.model.event.FieldEvent; import org.mdl4ui.fields.model.validation.FieldValidation; import org.mdl4ui.fields.sample.InjectSampleEditor; import org.mdl4ui.fields.sample.OnField; import org.mdl4ui.fields.sample.context.SampleContext; import org.mdl4ui.fields.sample.i18n.ValidationMessages; import org.mdl4ui.ui.sample.EFieldSample; @InjectSampleEditor(@OnField(EFieldSample.EMAIL)) public class EmailEditor extends SampleEditor { private static final String EMAIL_PATTERN = "[\\-!#\\$%&'*\\+/=\\?\\^_`\\{\\|\\}~A-Za-z0-9]+(\\.[\\-!#\\$%&'*\\+/=\\?\\^_`\\{\\|\\}\\~A-Za-z0-9]+)*@([\\-_A-Za-z0-9]+\\.)*[\\-_A-Za-z0-9]+\\.[\\-_A-Za-z0-9]{2,}"; private final ValidationMessages messages; public EmailEditor(ValidationMessages messages) { this.messages = messages; } @Override public String value(FieldID field, SampleContext context, FieldEvent fieldEvent) { return context.getUserAccount().getEmail(); } @Override public void updateFromContext(Field field, SampleContext context, FieldEvent fieldEvent) { TextBoxField textbox = field.getComponent(); textbox.setValue(context.getUserAccount().getEmail()); } @Override public void updateContext(Field field, SampleContext context, FieldEvent fieldEvent) { TextBoxField textbox = field.getComponent(); context.getUserAccount().setEmail(textbox.getValue()); } @Override public FieldValidation validate(Field field, SampleContext context, FieldEvent fieldEvent) { TextBoxField textbox = field.getComponent(); if (textbox.isEmpty()) { return error(field, messages.please_specify_your_email()); } else if (!textbox.getValue().matches(EMAIL_PATTERN)) { return error(field, messages.please_specify_a_valid_email()); } return valid(field); } }