@Override
  protected boolean processKeyBinding( KeyStroke keystroke, KeyEvent event, int condition, boolean pressed )
  {
    if ( !isEnabled() )
    {
      // Don't bother to process keys for a disabled component...
      return false;
    }

    InputMap inputMap = getInputMap( condition );
    ActionMap actionMap = getActionMap();

    try
    {
      if ( ( inputMap != null ) && ( actionMap != null ) && ( event.getID() == KeyEvent.KEY_PRESSED ) )
      {
        Object binding = inputMap.get( keystroke );
        if ( binding != null )
        {
          Action action = actionMap.get( binding );
          if ( action != null )
          {
            // Normal action; invoke it...
            return SwingUtilities.notifyAction( action, keystroke, event, this, event.getModifiers() );
          }
          else
          {
            // Keystroke we've mapped without an action, means we're going to
            // test whether there's a mapping for it. If so, use that as
            // response, otherwise respond with the 'regular' key...
            String mapping = mapKeyCode( keystroke.getKeyCode(), keystroke.getModifiers() );
            if ( mapping != null )
            {
              respond( mapping );
              return true;
            }
          }
        }

        if ( isRegularKey( keystroke ) )
        {
          respond( event.getKeyChar() );
          return true;
        }
      }
    }
    catch ( IOException exception )
    {
      exception.printStackTrace(); // XXX
    }

    return false;
  }