package carbon.internal; import android.content.Context; import android.graphics.Rect; import android.text.SpannableString; import android.text.Spanned; import android.text.TextUtils; import android.text.method.TransformationMethod; import android.view.View; import java.util.Locale; /** * Transformation method used for making all characters capitalized. Can be used by all classes * derived from TextView. * * @see(android.widget.TextView) */ public class AllCapsTransformationMethod implements TransformationMethod { private Locale locale; /** * Uses current locale. * * @param context Context to get locale from */ public AllCapsTransformationMethod(Context context) { locale = context.getResources().getConfiguration().locale; } @Override public CharSequence getTransformation(CharSequence source, View view) { if (source == null) return null; if (source instanceof Spanned) { SpannableString string = new SpannableString(source.toString().toUpperCase(locale)); TextUtils.copySpansFrom((Spanned) source, 0, source.length(), null, string, 0); return string; } return source.toString().toUpperCase(locale); } @Override public void onFocusChanged(View view, CharSequence sourceText, boolean focused, int direction, Rect previouslyFocusedRect) { } }