@Override
  protected void onKeyDown(Event event) {
    if (event == null || event.isCancelled()) {
      return;
    }

    switch (event.getKeyCode()) {
      case KeyCodes.KEY_TAB:
        // IE moves the focus when Tab key is down and thus the key press event doesn't get fired.
        // If we block
        // the key down event then IE doesn't fire key press. We are forced to apply out custom
        // behavior for tab
        // key now, on key down, and not later, on key press.
        onTab(event);
        break;
      default:
        super.onKeyDown(event);
        break;
    }
  }