package com.basgeekball.awesomevalidation.validators; import android.graphics.Color; import android.widget.EditText; import com.basgeekball.awesomevalidation.ValidationHolder; import com.basgeekball.awesomevalidation.helper.RangeHelper; import com.basgeekball.awesomevalidation.helper.SpanHelper; import com.basgeekball.awesomevalidation.utility.ValidationCallback; import java.util.ArrayList; import java.util.regex.Matcher; public class ColorationValidator extends Validator { private int mColor = Color.RED; public void setColor(int color) { mColor = color; } private ValidationCallback mValidationCallback = new ValidationCallback() { @Override public void execute(ValidationHolder validationHolder, Matcher matcher) { ArrayList<int[]> listOfMatching = new ArrayList<>(); if (matcher != null) { while (matcher.find()) { listOfMatching.add(new int[]{matcher.start(), matcher.end() - 1}); } } EditText editText = validationHolder.getEditText(); ArrayList<int[]> listOfNotMatching = RangeHelper.inverse(listOfMatching, editText.getText().length()); SpanHelper.setColor(editText, mColor, listOfNotMatching); editText.setError(validationHolder.getErrMsg()); } }; @Override public boolean trigger() { halt(); return checkFields(mValidationCallback); } @Override public void halt() { for (ValidationHolder validationHolder : mValidationHolderList) { EditText editText = validationHolder.getEditText(); editText.setError(null); SpanHelper.reset(editText); } } }