FramedTextButton.java revision c5590eb1a20b112e67e4c43684790587f844fc6b
1c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardpackage com.android.gallery3d.filtershow.ui;
2c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
3c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.content.Context;
4c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.content.res.TypedArray;
5c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Canvas;
6c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Paint;
7c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Rect;
8c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.util.AttributeSet;
9c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.widget.ImageButton;
10c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
11c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport com.android.gallery3d.R;
12c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
13c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardpublic class FramedTextButton extends ImageButton {
14c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static final String LOGTAG = "FramedTextButton";
15c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private String mText = null;
16c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static int mTextSize = 24;
17c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static int mTextPadding = 20;
18c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static Paint gPaint = new Paint();
19c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private Context mContext = null;
20c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
21c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public static void setTextSize(int value) {
22c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mTextSize = value;
23c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
24c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
25c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public static void setTextPadding(int value) {
26c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mTextPadding = value;
27c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
28c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
29c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public void setText(String text) {
30c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mText = text;
31c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        invalidate();
32c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
33c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
34c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public void setTextFrom(int itemId) {
35c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        switch (itemId) {
36c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_rgb: {
37c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_rgb));
38c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
39c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
40c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_red: {
41c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_red));
42c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
43c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
44c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_green: {
45c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_green));
46c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
47c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
48c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_blue: {
49c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_blue));
50c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
51c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
52c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        }
53c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        invalidate();
54c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
55c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
56c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public FramedTextButton(Context context, AttributeSet attrs) {
57c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        super(context, attrs);
58c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mContext = context;
59c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        TypedArray a = getContext().obtainStyledAttributes(
60c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                attrs, R.styleable.ImageButtonTitle);
61c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
62c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mText = a.getString(R.styleable.ImageButtonTitle_android_text);
63c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
64c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
65c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public String getText(){
66c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        return mText;
67c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
68c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
69c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    @Override
70c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public void onDraw(Canvas canvas) {
71c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        gPaint.setARGB(255, 255, 255, 255);
72c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        gPaint.setStrokeWidth(2);
73c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        gPaint.setStyle(Paint.Style.STROKE);
74c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        canvas.drawRect(mTextPadding, mTextPadding, getWidth() - mTextPadding,
75c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                getHeight() - mTextPadding, gPaint);
76c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        if (mText != null) {
77c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            gPaint.setTextSize(mTextSize);
78c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            float textWidth = gPaint.measureText(mText);
79c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            Rect bounds = new Rect();
80c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            gPaint.getTextBounds(mText, 0, mText.length(), bounds);
81c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            int x = (int) ((getWidth() - textWidth) / 2);
82c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            int y = (getHeight() + bounds.height()) / 2;
83c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
84c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            canvas.drawText(mText, x, y, gPaint);
85c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        }
86c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
87c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
88c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard}
89