FramedTextButton.java revision a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1
1a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard/*
2a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * Copyright (C) 2012 The Android Open Source Project
3a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard *
4a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * Licensed under the Apache License, Version 2.0 (the "License");
5a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * you may not use this file except in compliance with the License.
6a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * You may obtain a copy of the License at
7a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard *
8a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard *      http://www.apache.org/licenses/LICENSE-2.0
9a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard *
10a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * Unless required by applicable law or agreed to in writing, software
11a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * distributed under the License is distributed on an "AS IS" BASIS,
12a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * See the License for the specific language governing permissions and
14a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard * limitations under the License.
15a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard */
16a9f280f938b5fd5891c5cfe0999f8f1d4945d7a1nicolasroard
17c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardpackage com.android.gallery3d.filtershow.ui;
18c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
19c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.content.Context;
20c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.content.res.TypedArray;
21c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Canvas;
22c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Paint;
23c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.graphics.Rect;
24c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.util.AttributeSet;
25c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport android.widget.ImageButton;
26c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
27c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardimport com.android.gallery3d.R;
28c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
29c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroardpublic class FramedTextButton extends ImageButton {
30c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static final String LOGTAG = "FramedTextButton";
31c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private String mText = null;
32c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static int mTextSize = 24;
33c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static int mTextPadding = 20;
34c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private static Paint gPaint = new Paint();
35c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    private Context mContext = null;
36c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
37c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public static void setTextSize(int value) {
38c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mTextSize = value;
39c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
40c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
41c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public static void setTextPadding(int value) {
42c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mTextPadding = value;
43c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
44c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
45c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public void setText(String text) {
46c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mText = text;
47c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        invalidate();
48c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
49c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
50c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public void setTextFrom(int itemId) {
51c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        switch (itemId) {
52c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_rgb: {
53c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_rgb));
54c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
55c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
56c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_red: {
57c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_red));
58c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
59c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
60c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_green: {
61c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_green));
62c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
63c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
64c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            case R.id.curve_menu_blue: {
65c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                setText(mContext.getString(R.string.curves_channel_blue));
66c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                break;
67c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            }
68c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        }
69c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        invalidate();
70c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
71c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
72c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public FramedTextButton(Context context, AttributeSet attrs) {
73c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        super(context, attrs);
74c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mContext = context;
75c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        TypedArray a = getContext().obtainStyledAttributes(
76c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                attrs, R.styleable.ImageButtonTitle);
77c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
78c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        mText = a.getString(R.styleable.ImageButtonTitle_android_text);
79c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
80c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
81c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public String getText(){
82c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        return mText;
83c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
84c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
85c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    @Override
86c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    public void onDraw(Canvas canvas) {
87c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        gPaint.setARGB(255, 255, 255, 255);
88c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        gPaint.setStrokeWidth(2);
89c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        gPaint.setStyle(Paint.Style.STROKE);
90c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        canvas.drawRect(mTextPadding, mTextPadding, getWidth() - mTextPadding,
91c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard                getHeight() - mTextPadding, gPaint);
92c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        if (mText != null) {
93c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            gPaint.setTextSize(mTextSize);
94c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            float textWidth = gPaint.measureText(mText);
95c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            Rect bounds = new Rect();
96c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            gPaint.getTextBounds(mText, 0, mText.length(), bounds);
97c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            int x = (int) ((getWidth() - textWidth) / 2);
98c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            int y = (getHeight() + bounds.height()) / 2;
99c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
100c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard            canvas.drawText(mText, x, y, gPaint);
101c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard        }
102c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard    }
103c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard
104c5590eb1a20b112e67e4c43684790587f844fc6bnicolasroard}
105