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