|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectmome.keyb.KeyProcessor
public class KeyProcessor
This class is intended to associate key (game action) or sequence of keys
and/or game actions with command. In this class term "command" is abstracted
to an Object (like in mome package). This class
maintains association between key codes or game action constants and
commands. This associations can be added or removed by
addKey(int, Object) method. Command can be looked up by
process(int) method. Key - command association can be looked up by
calling method process(int) with key code.
Game action - command association can be looked up by calling the same method
with key code mapped to the given game action or with game action directly.
Based on fact, that key codes and game action constants do not intersect (key
code is unicode code of character representation of key or a negative value
and game action constants are mapped to control unicode characters), it is
possible to look up commands with key codes and game action constants
independently. For example methods invocations:
processor.process(Canvas.KEY_NUM4); and
processor.process(Canvas.LEFT); will return the same result on
almost every phone, because mostly key '4' is mapped to game action
"LEFT".
Association of sequences of keys and/or game actions with command is based on
introduction of alt keys (alt game actions), that can be associated with
other KeyProcessors. This class maintains alt key (alt game action) -
KeyProcessor association. These associations can be added or removed by
addAltKey(int, KeyProcessor) method. If alt key (alt game action) is
found method process(int) returns
ALT_KEY_ACTIVATED constant. Next invocation of
process(int) will look up key or game action
at KeyProcessor associated with previous alt key (alt game action), For
example, to associate a key sequence '#', '9' with cmd :
...
KeyProcessor p1 = new KeyProcessor( ... );
...
KeyProcessor p = new KeyProcessor( ... );
...
p1.addKey( Canvas.KEY_NUM9, cmd);
...
p.addAltKey( Canvas.KEY_POUND, p1);
...
Cycle chaining of KeyProcessors (direct or indirect) is detected via
IllegalStateException thrown from method
process(int), when cycle is actually reached.
Note Game action - command association can be looked up
based on key code only if canvas property was set to not
null value (via
method setCanvas(Canvas) or during
instantiation of KeyProcessor via
KeyProcessor(Canvas) or
KeyProcessor(Canvas, int[], Object[]) or
KeyProcessor(Canvas, int[], Object[], int[], mome.keyb.KeyProcessor[])).
This limitation exists because
Canvas.getGameAction(int) method is not
static.
| Field Summary | |
|---|---|
static Object |
ALT_KEY_ACTIVATED
Command returned by process(int) if alt key or alt game action is
found. |
| Constructor Summary | |
|---|---|
KeyProcessor()
Instantiates KeyProcessor, with empty maps of key (game action) - command associations and alt key (alt game action) - KeyProcessors associations and null canvas property. |
|
KeyProcessor(Canvas owner)
Instantiates KeyProcessor, with given canvas and empty maps of key (game action) - command associations and alt key (alt game action) - KeyProcessors associations. |
|
KeyProcessor(Canvas owner,
int[] keys,
Object[] cmds)
Instantiates KeyProcessor with given canvas. |
|
KeyProcessor(Canvas owner,
int[] keys,
Object[] cmds,
int[] altKeys,
KeyProcessor[] processors)
Instantiates KeyProcessor with given canvas. |
|
| Method Summary | |
|---|---|
void |
addAltKey(int key,
KeyProcessor processor)
Adds alt key (alt game action) - KeyProcessor association or
removes it if processor is null. |
void |
addKey(int key,
Object cmd)
Adds key (game action) - command association to the KeyProcessor or removes it if cmd is null. |
Object |
process(int key)
Returns an object identifying command associated with given key-code (game action constant) or game action mapped to given key code. |
protected Object |
process(int key,
Vector fProcessors)
Returns an object identifying command associated with given key-code (game action constant) or game action mapped to given key code. |
void |
setCanvas(Canvas owner)
Sets the canvas property to the given value. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final Object ALT_KEY_ACTIVATED
process(int) if alt key or alt game action is
found.
| Constructor Detail |
|---|
public KeyProcessor()
public KeyProcessor(Canvas owner)
owner - Canvas to be associated with this KeyProcessor. This
property is needed to get game action constant from key code, due
to non static Canvas.getGameAction(int) method.
public KeyProcessor(Canvas owner,
int[] keys,
Object[] cmds)
keys array's
length must be equal or less then cmds array. All extra
commands are ignored. If keys is null no
commands are added and cmds parameter is ignored.
cmds parameter can't be null. Key codes or game action values
and commands are associated based on position in array.
- Parameters:
owner - Canvas to be associated with this KeyProcessor. This
property is needed to get game action value from key code, due to
non static Canvas.getGameAction(int) method.keys - array of key codes and/or game action constants.cmds - array of commands to be associated with key codes or game action
constants. Can't be null.
- Throws:
NullPointerException - when cmds is null or
some element of cmds is null and
keys is not null.
public KeyProcessor(Canvas owner,
int[] keys,
Object[] cmds,
int[] altKeys,
KeyProcessor[] processors)
keys array's length must
be equal or less then cmds array. altKeys
array's length must be equal or less then processors array.
All extra commands or processors are ignored. If keys is
null no commands are added and cmds parameter
is ignored. If altKeys is null no processors
are added and processors parameter is ignored.
cmds and processors parameters can't be null.
Key codes (game action constants) and commands are associated based on
position in array. Alt key codes (alt game action constants)
and processors are associated based on position in array.
- Parameters:
owner - Canvas to be associated with this KeyProcessor. This
property is needed to get game action value from key code, due to
non static Canvas.getGameAction(int) method.keys - array of key codes and/or game action constants.cmds - array of commands to be associated with key codes or game action constants.
Can't be null.altKeys - array of alt key codes and/or alt game action constants.processors - array of processors to be associated with key codes or game action constants.
Can't be null.
- Throws:
NullPointerException - when cmds is null or
some element of cmds is null and
keys is not null or when
processors is null or some element of
processors is null and altKeys
is not null.
| Method Detail |
|---|
public void setCanvas(Canvas owner)
owner - Canvas to be associated with this KeyProcessor. This
property is needed to get game action value from key code, due to
non static Canvas.getGameAction(int) method.
public void addKey(int key,
Object cmd)
cmd is null.
key - key code or game action constant.cmd - command to be associated with given key or game action or
null to remove key (game action) - command
association.
public void addAltKey(int key,
KeyProcessor processor)
KeyProcessor association or
removes it if processor is null.
key - key code or game action constant.processor - KeyProcessor to be associated with given key or game
action or null to remove key (game action) -
KeyProcessor association.public Object process(int key)
ALT_KEY_ACTIVATED constant and moves KeyProcessor to "alt" state.
In this state next invocation of process(int) will lookup key or
game action codes at KeyProcessor associated with previous alt key (alt
game action), returns the result and moves KeyProcessor to regular state,
if nested alt key is not found.
key - key code or game action constant.
ALT_KEY_ACTIVATED if key is alt Key (alt
game action) or null if not found.
IllegalStateException - KeyProcessors cycle is reached.
protected Object process(int key,
Vector fProcessors)
ALT_KEY_ACTIVATED constant and moves KeyProcessor to "alt" state.
In this state next invocation of process(int) will lookup key or
game action codes at KeyProcessor associated with previous alt key (alt
game action), returns the result and moves KeyProcessor to regular state,
if nested alt key is not found.
key - key code or game action constant.fProcessors - processors looked up before this one in this sequence of keys
and/or game actions.
ALT_KEY_ACTIVATED if key is alt Key (alt
game action) or null if not found.
IllegalStateException - KeyProcessors cycle is reached.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||