Package org.eclipse.gef

# Class KeyHandler

java.lang.Object
org.eclipse.gef.KeyHandler

Direct Known Subclasses:
  `GraphicalViewerKeyHandler`

public class KeyHandler extends Object
The KeyHandler should handle all normal keystrokes on an `EditPartViewer`. Normal is simply defined as keystrokes which are not associated with an Accelerator on the Menu. The KeyHandler will be forwarded KeyEvents by the active Tool, which is usually the SelectionTool. The Tool may be in a state where keystrokes should not be processed, in which case it will not forward the keystrokes. For this reason, it is important to always handle KeyEvents by using a KeyHandler.

KeyHandlers can be chained by calling `setParent(KeyHandler)`. If this KeyHandler does not handle the keystroke, it will pass the keystroke to its parent KeyHandler.

KeyHandlers can be implemented using two stragegies. One is to map `KeyStrokes` to `Actions` using the `put(KeyStroke, IAction)` and `remove(KeyStroke)` API. The other is to subclass KeyHandler, and override various methods. A combination of the two is also useful.

Since:
  2.0

## Constructor Summary

Constructors
Constructor
Description
`KeyHandler()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`keyPressed(KeyEvent event)`
Processes a key pressed event.
`boolean`
`keyReleased(KeyEvent event)`
Processes a key released event.
`void`
`put(KeyStroke keystroke, IAction action)`
Maps a specified `KeyStroke` to an `IAction`.
`void`
`remove(KeyStroke keystroke)`
Removed a mapped `IAction` for the specified `KeyStroke`.
`KeyHandler`
`setParent(KeyHandler parent)`
Sets a parent `KeyHandler` to which this KeyHandler will forward un-consumed KeyEvents.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### KeyHandler

public KeyHandler()

## Method Details

### keyPressed

public boolean keyPressed(KeyEvent event)
Processes a key pressed event. This method is called by the Tool whenever a key is pressed, and the Tool is in the proper state.

Parameters:
  `event` - the KeyEvent
Returns:
  `true` if KeyEvent was handled in some way

### keyReleased

public boolean keyReleased(KeyEvent event)
Processes a key released event. This method is called by the Tool whenever a key is released, and the Tool is in the proper state.

Parameters:
  `event` - the KeyEvent
Returns:
  `true` if KeyEvent was handled in some way

### put

public void put(KeyStroke keystroke, IAction action)
Maps a specified `KeyStroke` to an `IAction`. When a KeyEvent occurs matching the given KeyStroke, the Action will be `run()` iff it is enabled.

Parameters:
  `keystroke` - the KeyStroke
  `action` - the Action to run

### remove

public void remove(KeyStroke keystroke)
Removed a mapped `IAction` for the specified `KeyStroke`.

Parameters:
  `keystroke` - the KeyStroke to be unmapped

### setParent

public KeyHandler setParent(KeyHandler parent)
Sets a parent `KeyHandler` to which this KeyHandler will forward un-consumed KeyEvents. This KeyHandler will first attempt to handle KeyEvents. If it does not recognize a given KeyEvent, that event is passed to its parent

Parameters:
  `parent` - the parent KeyHandler
Returns:
  `this` for convenience