package org.peerbox.presenter.validation; import javafx.beans.property.StringProperty; import javafx.scene.control.PasswordField; import org.peerbox.presenter.validation.ValidationUtils.ValidationResult; public final class CombinedPasswordValidator implements IValidate { private TextFieldValidator validatePassword; private TextFieldValidator validateConfirmPassword; public CombinedPasswordValidator(PasswordField txtPassword, StringProperty passwordErrorProperty, PasswordField txtConfirmPassword) { validatePassword = new TextFieldValidator(txtPassword, passwordErrorProperty, true) { @Override public ValidationResult validate(String password) { final String confirmPassword = validateConfirmPassword.getTextField().getText(); return validatePasswords(password, confirmPassword); } }; validateConfirmPassword = new TextFieldValidator(txtConfirmPassword) { @Override public ValidationResult validate(String confirmPassword) { final String password = validatePassword.getTextField().getText(); return validatePasswords(password, confirmPassword); } }; } @Override public ValidationResult validate() { final String password = validatePassword.getTextField().getText(); final String confirmPassword = validateConfirmPassword.getTextField().getText(); return validatePasswords(password, confirmPassword); } private ValidationResult validatePasswords(final String password, final String confirmPassword) { ValidationResult res = ValidationUtils.validatePasswords(password, confirmPassword); if (res.isError()) { validatePassword.decorateError(); validateConfirmPassword.decorateError(); validatePassword.setErrorMessage(res.getMessage()); } else { validatePassword.undecorateError(); validateConfirmPassword.undecorateError(); validatePassword.clearErrorMessage(); } return res; } public void reset() { validatePassword.undecorateError(); validateConfirmPassword.undecorateError(); validatePassword.clearErrorMessage(); validateConfirmPassword.clearErrorMessage(); } }