1e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa/*
2e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * Copyright (C) 2008,2009  OMRON SOFTWARE Co., Ltd.
3e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa *
4e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License");
5e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * you may not use this file except in compliance with the License.
6e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * You may obtain a copy of the License at
7e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa *
8e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa *      http://www.apache.org/licenses/LICENSE-2.0
9e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa *
10e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * Unless required by applicable law or agreed to in writing, software
11e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS,
12e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * See the License for the specific language governing permissions and
14e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * limitations under the License.
15e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa */
16e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
17e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawapackage jp.co.omronsoft.openwnn;
18e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
19e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.widget.Button;
20e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.view.MotionEvent;
21e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.view.View;
22e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.graphics.drawable.Drawable;
23e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.util.AttributeSet;
24e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawaimport android.content.Context;
25e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
26e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa/**
27e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * The button for the candidate-view
28e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa * @author Copyright (C) 2009, OMRON SOFTWARE CO., LTD.  All Rights Reserved.
29e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa */
30e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawapublic class CandidateViewButton extends Button {
31e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
32e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** The state of up */
33e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private int[] mUpState;
34e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
35e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Constructor */
36e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    public CandidateViewButton(Context context) {
37e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        super(context);
38e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    }
39e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
40e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Constructor */
41e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    public CandidateViewButton(Context context, AttributeSet attrs) {
42e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        super(context, attrs);
43e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    }
44e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
45e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** @see android.view.View#onTouchEvent */
46e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    public boolean onTouchEvent(MotionEvent me) {
47e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        /* for changing the button on CandidateView when it is pressed. */
48e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
49e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        boolean ret = super.onTouchEvent(me);
50e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        Drawable d = getBackground();
51e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
52e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        switch (me.getAction()) {
53e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        case MotionEvent.ACTION_DOWN:
54e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            mUpState = d.getState();
55e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            d.setState(View.PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET);
56e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            break;
57e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        case MotionEvent.ACTION_UP:
58e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        default:
59e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            d.setState(mUpState);
60e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            break;
61e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        }
62e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa
63e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        return ret;
64e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    }
65e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa}
66