package edu.ualberta.med.biobank.mvp.model.validation; import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerRegistration; import com.pietschy.gwt.pectin.client.form.validation.EmptyValidationResult; import com.pietschy.gwt.pectin.client.form.validation.HasValidation; import com.pietschy.gwt.pectin.client.form.validation.ValidationEvent; import com.pietschy.gwt.pectin.client.form.validation.ValidationHandler; import com.pietschy.gwt.pectin.client.form.validation.ValidationResult; import com.pietschy.gwt.pectin.client.form.validation.ValidationResultImpl; public abstract class AbstractValidation implements HasValidation { private final HandlerManager handlerManager = new HandlerManager(this); private ValidationResult validationResult = EmptyValidationResult.INSTANCE; @Override public ValidationResult getValidationResult() { return validationResult; } @Override public HandlerRegistration addValidationHandler(ValidationHandler handler) { return handlerManager.addHandler(ValidationEvent.getType(), handler); } @Override public void fireEvent(GwtEvent<?> event) { handlerManager.fireEvent(event); } @Override public void clear() { setValidationResult(new ValidationResultImpl()); } protected void setValidationResult(ValidationResultImpl result) { if (result == null) { throw new NullPointerException("validationResult is null"); } this.validationResult = result; fireValidationChanged(); } private void fireValidationChanged() { ValidationEvent.fire(this, validationResult); } }