package adonai.diary_browser.misc; import android.text.SpannableString; import android.text.Spanned; import android.text.TextUtils; import android.widget.MultiAutoCompleteTextView; import android.widget.MultiAutoCompleteTextView.CommaTokenizer; /** * Класс-помощник для разбивки тем, настроения и музыки в полях ввода по точкам с запятой * * @see CommaTokenizer - копипаста оттуда * @author Адонай */ public class SemicolonTokenizer implements MultiAutoCompleteTextView.Tokenizer { @Override public int findTokenStart(CharSequence text, int cursor) { int i = cursor; while (i > 0 && text.charAt(i - 1) != ';') { i--; } while (i < cursor && text.charAt(i) == ' ') { i++; } return i; } @Override public int findTokenEnd(CharSequence text, int cursor) { int i = cursor; int len = text.length(); while (i < len) { if (text.charAt(i) == ';') { return i; } else { i++; } } return len; } @Override public CharSequence terminateToken(CharSequence text) { int i = text.length(); while (i > 0 && text.charAt(i - 1) == ' ') { i--; } if (i > 0 && text.charAt(i - 1) == ';') { return text; } else { if (text instanceof Spanned) { SpannableString sp = new SpannableString(text + "; "); TextUtils.copySpansFrom((Spanned) text, 0, text.length(), Object.class, sp, 0); return sp; } else { return text + "; "; } } } }