package org.witness.informacam.app.utils.app; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.witness.informacam.app.R; import org.witness.informacam.app.utils.Constants.Utils; import android.text.SpannableStringBuilder; import android.text.TextPaint; import android.text.style.CharacterStyle; import android.util.Log; public class TextFormatter { public final static String LOG = Utils.LOG; public static class BoldGrey extends CharacterStyle { public static final String token = "@@@"; static final int color = R.drawable.grey; @Override public void updateDrawState(TextPaint tp) { tp.setColor(color); } } public static class BoldBlack extends CharacterStyle { public static final String token = "###"; static final int color = R.drawable.black; @Override public void updateDrawState(TextPaint tp) { tp.setColor(color); } } public static class BoldBrick extends CharacterStyle { public static final String token = "$$$"; static final int color = R.drawable.app_primary; @Override public void updateDrawState(TextPaint tp) { tp.setColor(color); } } public static Map<String, CharacterStyle> STYLE_MAP; static { Map<String, CharacterStyle> StyleMap = new HashMap<String, CharacterStyle>(); StyleMap.put(BoldBlack.token, new BoldBlack()); StyleMap.put(BoldGrey.token, new BoldGrey()); StyleMap.put(BoldBrick.token, new BoldBrick()); STYLE_MAP = Collections.unmodifiableMap(StyleMap); } public static CharSequence formatSpan(CharSequence text) { Iterator<String> i = STYLE_MAP.keySet().iterator(); while(i.hasNext()) { String token = i.next(); Log.d(LOG, "token: " + token); if(String.valueOf(text).indexOf(token) >= 0) { int start = String.valueOf(text).indexOf(token) + token.length(); int end = String.valueOf(text).lastIndexOf(token); Log.d(LOG, "start: " + start + " end: " + end); String sub = String.valueOf(text).substring(start, end); Log.d(LOG, sub); text = String.valueOf(text).replace(token, ""); CharacterStyle cs = STYLE_MAP.get(token); SpannableStringBuilder ssb = new SpannableStringBuilder(sub); ssb.setSpan(cs, 0, sub.length(), 0); text = String.valueOf(text).replace(sub, ssb); } } return text; } public static CharSequence wrap(CharSequence text, String wrapper) { return (wrapper + text + wrapper); } }