197d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung/* 297d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * Copyright (C) 2011 The Android Open Source Project 397d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * 497d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 597d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * you may not use this file except in compliance with the License. 697d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * You may obtain a copy of the License at 797d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * 897d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * http://www.apache.org/licenses/LICENSE-2.0 997d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * 1097d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * Unless required by applicable law or agreed to in writing, software 1197d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * distributed under the License is distributed on an "AS IS" BASIS, 1297d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1397d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * See the License for the specific language governing permissions and 1497d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung * limitations under the License. 1597d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung */ 1697d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung 1797d85d23b013347bead4e2f5fa430a79ce69431eWinson Chungpackage com.android.launcher2; 1897d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung 1997d85d23b013347bead4e2f5fa430a79ce69431eWinson Chungimport android.content.Context; 2097d85d23b013347bead4e2f5fa430a79ce69431eWinson Chungimport android.util.AttributeSet; 2197d85d23b013347bead4e2f5fa430a79ce69431eWinson Chungimport android.view.KeyEvent; 2297d85d23b013347bead4e2f5fa430a79ce69431eWinson Chungimport android.widget.TextView; 2397d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung 24785d2eb2b8d7072c8124300dd9168ff51a91cf38Winson Chung/** 25785d2eb2b8d7072c8124300dd9168ff51a91cf38Winson Chung * We use a custom tab view to process our own focus traversals. 26785d2eb2b8d7072c8124300dd9168ff51a91cf38Winson Chung */ 2797d85d23b013347bead4e2f5fa430a79ce69431eWinson Chungpublic class AccessibleTabView extends TextView { 2897d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung public AccessibleTabView(Context context) { 2997d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung super(context); 3097d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung } 3197d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung 3297d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung public AccessibleTabView(Context context, AttributeSet attrs) { 3397d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung super(context, attrs); 3497d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung } 3597d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung 3697d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung public AccessibleTabView(Context context, AttributeSet attrs, int defStyle) { 3797d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung super(context, attrs, defStyle); 3897d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung } 3997d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung 4097d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung @Override 4197d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung public boolean onKeyDown(int keyCode, KeyEvent event) { 4297d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung return FocusHelper.handleTabKeyEvent(this, keyCode, event) 4397d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung || super.onKeyDown(keyCode, event); 4497d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung } 4597d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung 4697d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung @Override 4797d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung public boolean onKeyUp(int keyCode, KeyEvent event) { 4897d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung return FocusHelper.handleTabKeyEvent(this, keyCode, event) 4997d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung || super.onKeyUp(keyCode, event); 5097d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung } 5197d85d23b013347bead4e2f5fa430a79ce69431eWinson Chung} 52