/*
 *   
 *
 * Copyright  1990-2006 Sun Microsystems, Inc. All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version
 * 2 only, as published by the Free Software Foundation. 
 * 
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License version 2 for more details (a copy is
 * included at /legal/license.txt). 
 * 
 * You should have received a copy of the GNU General Public License
 * version 2 along with this work; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA 
 * 
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
 * Clara, CA 95054 or visit www.sun.com if you need additional
 * information or have any questions. 
 */

package javax.microedition.lcdui;

/**
 * Utility class that is used to convert key codes from platform independent
 * codes to platform-specific and vice versa.
 */
class KeyConverter {

    /**
     * Return the key code that corresponds to the specified game
     * action on the device.  gameAction must be a defined game action
     * (Canvas.UP, Canvas.DOWN, Canvas.FIRE, etc.)
     * <B>Post-conditions:</B><BR> The key code of the key that
     * corresponds to the specified action is returned.  The return
     * value will be 0 if the game action is invalid or not supported
     * by the device.     
     *
     * @param gameAction The game action to obtain the key code for.
     *
     * @return the key code.
     */
    public static native int getKeyCode(int gameAction);

    /**
     * Returns the game action associated with the given key code on
     * the device.  keyCode must refer to a key that is mapped as a
     * game key on the device. The game action of the key is returned.
     * The return value will be 0 if the key is not mapped to 
     * a game action, or it will be -1 if the keycode is invalid.
     *
     * @param keyCode the key code
     *
     * @return the corresponding game action 
     *         (UP, DOWN, LEFT, RIGHT, FIRE, etc.)
     */
    public static native int getGameAction(int keyCode);

    /**
     * Returns <code>0</code> if keyCode is not a system key.  
     * Otherwise, returns one of the EventConstants.SYSTEM_KEY_ constants.
     *
     * @param keyCode get the system equivalent key.
     *
     * @return translated system key or zero if it is not a system key.
     */
    public static native int getSystemKey(int keyCode);

    /**
     * Gets an informative key string for a key. The string returned
     * should resemble the text physically printed on the key. For
     * example, on a device with function keys F1 through F4, calling
     * this method on the keycode for the F1 key will return the
     * string "F1". A typical use for this string will be to compose
     * help text such as "Press F1 to proceed."
     *
     * <p>There is no direct mapping from game actions to key
     * names. To get the string name for a game action, the
     * application must call
     *
     * <p><code>getKeyName(getKeyCode(GAME_A))</code>
     *
     * @param keyCode the key code being requested
     *
     * @return a string name for the key, or <code>null</code> if no name 
     *         is available
     */
    public static native String getKeyName(int keyCode);
}
