package cl.monsoon.s1next.widget;
import android.text.InputFilter;
import android.text.Spanned;
import com.google.common.collect.Range;
import org.apache.commons.lang3.StringUtils;
/**
* Constrains input from entering a value which is out of the range.
* <p>
* Forked from http://stackoverflow.com/q/14212518
*/
public final class RangeInputFilter implements InputFilter {
private final Range<Integer> mRange;
public RangeInputFilter(int lower, int upper) {
this.mRange = Range.closed(lower, upper);
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String value = dest.subSequence(0, dstart).toString()
+ source.subSequence(start, end)
+ dest.subSequence(dend, dest.length());
try {
if (mRange.contains(Integer.valueOf(value))) {
return null;
}
} catch (NumberFormatException ignored) {
}
return StringUtils.EMPTY;
}
}