// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.util;
import android.view.KeyEvent;
/**
* This is a helper class to handle navigation related checks for key events.
*/
public class KeyNavigationUtil {
/**
* This is a helper class with no instance.
*/
private KeyNavigationUtil() {
}
/**
* Checks whether the given event is any of DPAD down or NUMPAD down.
* @param event Event to be checked.
* @return Whether the event should be processed as a navigation down.
*/
public static boolean isGoDown(KeyEvent event) {
return isActionDown(event) && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN
|| (!event.isNumLockOn() && event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_2));
}
/**
* Checks whether the given event is any of DPAD up or NUMPAD up.
* @param event Event to be checked.
* @return Whether the event should be processed as a navigation up.
*/
public static boolean isGoUp(KeyEvent event) {
return isActionDown(event) && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP
|| (!event.isNumLockOn() && event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_8));
}
/**
* Checks whether the given event is any of DPAD right or NUMPAD right.
* @param event Event to be checked.
* @return Whether the event should be processed as a navigation right.
*/
public static boolean isGoRight(KeyEvent event) {
return isActionDown(event) && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT
|| (!event.isNumLockOn() && event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_6));
}
/**
* Checks whether the given event is any of DPAD down, DPAD up, NUMPAD down or NUMPAD up.
* @param event Event to be checked.
* @return Whether the event should be processed as any of navigation up or navigation down.
*/
public static boolean isGoUpOrDown(KeyEvent event) {
return isGoDown(event) || isGoUp(event);
}
/**
* Checks whether the given event is any of ENTER or NUMPAD ENTER.
* @param event Event to be checked.
* @return Whether the event should be processed as ENTER.
*/
public static boolean isEnter(KeyEvent event) {
return isActionUp(event) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_ENTER);
}
/**
* Checks whether the given event is an ACTION_DOWN event.
* @param event Event to be checked.
* @return Whether the event is an ACTION_DOWN event.
*/
public static boolean isActionDown(KeyEvent event) {
return event.getAction() == KeyEvent.ACTION_DOWN;
}
/**
* Checks whether the given event is an ACTION_UP event.
* @param event Event to be checked.
* @return Whether the event is an ACTION_UP event.
*/
public static boolean isActionUp(KeyEvent event) {
return event.getAction() == KeyEvent.ACTION_UP;
}
}