javauis/lcdui_qt/src/javax/microedition/lcdui/KeyTable.java
author hgs
Fri, 23 Jul 2010 12:27:20 +0300
changeset 56 abc41079b313
parent 23 98ccebc37403
child 72 1f0034e370aa
permissions -rw-r--r--
v2.2.7_1

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package javax.microedition.lcdui;

import org.eclipse.swt.SWT;

/**
 * Key table.
 */
final class KeyTable
{

    static final int[][] KEY_TO_GAME_TABLE =
    {
        {-1,  Canvas.UP},
        {Canvas.KEY_NUM2,  Canvas.UP},
        {SWT.ARROW_UP,  Canvas.UP},

        {-2,  Canvas.DOWN},
        {Canvas.KEY_NUM8,  Canvas.DOWN},
        {SWT.ARROW_DOWN,  Canvas.DOWN},

        {-3,  Canvas.LEFT},
        {Canvas.KEY_NUM4,  Canvas.LEFT},
        {SWT.ARROW_LEFT,  Canvas.LEFT},

        {-4,  Canvas.RIGHT},
        {Canvas.KEY_NUM6,  Canvas.RIGHT},
        {SWT.ARROW_RIGHT,  Canvas.RIGHT},

        {-5,  Canvas.FIRE},
        {Canvas.KEY_NUM5,  Canvas.FIRE},
        {-10, Canvas.FIRE},

        {Canvas.KEY_NUM7,  Canvas.GAME_A},
        {Canvas.KEY_NUM9,  Canvas.GAME_B},
        {Canvas.KEY_STAR,  Canvas.GAME_C},
        {Canvas.KEY_POUND,  Canvas.GAME_D},
        
        {Canvas.KEY_NUM0, 0},
        {Canvas.KEY_NUM1, 0},
        {Canvas.KEY_NUM3, 0}
    };

    /**
     * Private constructor.
     */
    private KeyTable()
    {
    }

    static int getGameAction(int keyCode)
    {
        for(int i = 0; i < KEY_TO_GAME_TABLE.length; i++)
        {
            if(KEY_TO_GAME_TABLE[i][0] == keyCode)
            {
                return KEY_TO_GAME_TABLE[i][1];
            }
        }
        throw new IllegalArgumentException(
            MsgRepository.CANVAS_EXCEPTION_INVALID_KEY_CODE);
    }

    static int getKeyCode(int gameAction)
    {
        for(int i = 0; i < KEY_TO_GAME_TABLE.length; i++)
        {
            if(KEY_TO_GAME_TABLE[i][1] == gameAction)
            {
                return KEY_TO_GAME_TABLE[i][0];
            }
        }
        throw new IllegalArgumentException(
            MsgRepository.CANVAS_EXCEPTION_INVALID_GAME_ACTION);
    }


    static String getKeyName(int keyCode)
    {

        switch(keyCode)
        {
        case Canvas.KEY_NUM0:
            return "0";

        case Canvas.KEY_NUM1:
            return "1";

        case Canvas.KEY_NUM2:
            return "2";

        case Canvas.KEY_NUM3:
            return "3";

        case Canvas.KEY_NUM4:
            return "4";

        case Canvas.KEY_NUM5:
            return "5";

        case Canvas.KEY_NUM6:
            return "6";

        case Canvas.KEY_NUM7:
            return "7";

        case Canvas.KEY_NUM8:
            return "8";

        case Canvas.KEY_NUM9:
            return "9";

        case Canvas.KEY_STAR:
            return "*";

        case Canvas.KEY_POUND:
            return "#";
                
        case -1:
            return OpenLcduiLocalization.getMessage("key_up");

        case -2:
            return OpenLcduiLocalization.getMessage("key_down");

        case -3:
            return OpenLcduiLocalization.getMessage("key_left");

        case -4:
            return OpenLcduiLocalization.getMessage("key_right");

        case -5:
            return OpenLcduiLocalization.getMessage("key_select");

        default:
            throw new IllegalArgumentException(
            MsgRepository.CANVAS_EXCEPTION_INVALID_KEY_CODE);
        }
    }

}