package org.xcontest.xctrack; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Font; import javax.microedition.lcdui.Graphics; public class KeyTestScreen extends Canvas{ int _keyCode = 0; String _keyName = ""; int _x=-1,_y=-1; int _dx=-1,_dy=-1; boolean _dragging = false; int _exitX,_exitY,_exitW,_exitH; public KeyTestScreen() { setFullScreenMode(true); } protected void keyPressed(int keyCode) { _keyCode = keyCode; _keyName = getKeyName(keyCode); if (getGameAction(keyCode) == LEFT) hide(); repaint(); } protected void paint(Graphics g) { int w = getWidth(); int h = getHeight(); Font f = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM); int fonth = f.getHeight(); _exitW = f.stringWidth("EXIT"); _exitH = f.getHeight(); _exitX = (w-_exitW)/2; _exitY = (h-_exitH)/2; g.setColor(0); g.fillRect(0, 0, w, h); g.setFont(f); g.setColor(0xFFFFFF); g.drawString("Press LEFT arrow or click the EXIT to cancel",0,0,Graphics.TOP|Graphics.LEFT); g.drawString("KeyCode: "+_keyCode, 0, fonth, Graphics.TOP|Graphics.LEFT); g.drawString("KeyName: "+_keyName, 0, 2*fonth, Graphics.TOP|Graphics.LEFT); g.setColor(0xFFC0C0); g.drawString("EXIT", _exitX, _exitY, Graphics.TOP | Graphics.LEFT); g.setColor(_dragging ? 0xFFFF00 : 0xFFFFFF); g.drawLine(_x, _y, _dx, _dy); } protected void pointerPressed(int x, int y) { if (x >= _exitX && x <= _exitX+_exitW && y >= _exitY && y <= _exitY + _exitH) hide(); _x = x; _y = y; _dx = x; _dy = y; _dragging = true; repaint(); } protected void pointerDragged(int x, int y) { _dx = x; _dy = y; repaint(); } protected void pointerReleased(int x, int y) { _dragging = false; repaint(); } public void show() { App.showScreen(this); } public void hide() { App.hideScreen(this); } }