gcieventlistener.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 181 行

JAVA
181
字号
/* * Copyright  1990-2007 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 com.sun.midp.lcdui;import com.sun.me.gci.windowsystem.*;import com.sun.me.gci.windowsystem.event.*;import com.sun.midp.events.EventTypes;import com.sun.midp.events.NativeEvent;import com.sun.midp.events.EventQueue;import com.sun.midp.configurator.Constants;class GCIEventListener implements     GCIKeyEventListener, GCIPointerEventListener {    /** Preallocate KeyEvent */    final NativeEvent keyEvent;    /** Preallocate Pointer Event */    final NativeEvent pointerEvent;    /** Cached reference to the MIDP event queue. */    private EventQueue eventQueue;    /**     * The constructor for the GCIEventListener that      * gets key and pointer events from GCI,     * does translate to LCDUI input events and posts them to      * LCDUI event queue.     *     * @param eventQueue the event queue     */    GCIEventListener(EventQueue eventQueue) {        this.eventQueue = eventQueue;        keyEvent = new NativeEvent(EventTypes.KEY_EVENT);        pointerEvent = new NativeEvent(EventTypes.PEN_EVENT);    }    /**      * Called when GCIKeyEvent is received. It will translate     * the event into a corresponding MIDP NativeEvent and post     * it to the event queue.     *     * @param event instance of GCIKeyEvent     */    public boolean keyEventReceived(GCIKeyEvent event) {        int type = 0;        int keyCode = event.getKeyCode();        int keyChar = event.getKeyChar();        switch (event.getID()) {            case GCIKeyEvent.KEY_PRESSED:                type = EventConstants.PRESSED;                break;            case GCIKeyEvent.KEY_RELEASED:                type = EventConstants.RELEASED;                break;               default:                return false;        }        DisplayAccess displayAccess = 	    (DisplayAccess)event.getPeerEventTarget();        if (displayAccess == null) {	    return false;	}        boolean foundKeyCode = false;        for (int i = keyMappingTable.length - 1; i >= 0; i--) {	    if (keyCode == keyMappingTable[i][1]) {		keyChar = keyMappingTable[i][0];                foundKeyCode = true; 	    }	}        if (!foundKeyCode &&	    (keyCode == GCIKeyEvent.VK_UNDEFINED ||	     keyChar == GCIKeyEvent.CHAR_UNDEFINED)) {	    return false;	}        keyEvent.intParam1 = type;        keyEvent.intParam2 = keyChar;        keyEvent.intParam4 = displayAccess.getDisplayId();        eventQueue.post(keyEvent);        return true;    }    /**      * Called when GCIPointerEvent is received. It will translate     * the event into a corresponding MIDP NativeEvent and post     * it to the event queue.     *     * @param event instance of GCIPointerEvent     */    public boolean pointerEventReceived(GCIPointerEvent event) {        int id = event.getID();        int x = event.getX();        int y = event.getY();        int button = event.getButton();        int modifiers = event.getModifiers();        long when = System.currentTimeMillis();        int type = 0;        switch (event.getID()) {            case GCIPointerEvent.POINTER_PRESSED:                type = EventConstants.PRESSED;                break;            case GCIPointerEvent.POINTER_RELEASED:                type = EventConstants.RELEASED;                break;            case GCIPointerEvent.POINTER_MOVED:                type = EventConstants.DRAGGED;                break;            default:                return false;        }        DisplayAccess displayAccess = 	    (DisplayAccess)event.getPeerEventTarget();        if (displayAccess == null) {	    return false;	}        pointerEvent.intParam1 = type;        pointerEvent.intParam2 = event.getX();        pointerEvent.intParam3 = event.getY();        pointerEvent.intParam4 = displayAccess.getDisplayId();        eventQueue.post(pointerEvent);	        return true;    }    /** Table used to key mapping */    private int keyMappingTable[][] = {	{Constants.KEYCODE_UP,                38},	{Constants.KEYCODE_DOWN,              40},	{Constants.KEYCODE_LEFT,              37},	{Constants.KEYCODE_RIGHT,             39},	{Constants.KEYCODE_SELECT,            10},	{Constants.KEYCODE_SOFT1,            112},	{Constants.KEYCODE_SOFT2,            113}    };}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?