コード例 #1
0
ファイル: NavigatorGui.java プロジェクト: yxm4109/babiloo
  public void onKeyPressed(KeyEvent e) {
    int selectedIndex = list.getSelectedIndex();
    int newIndex = selectedIndex;

    int rowsOnScreen = scroll.getHeight() / list.getFixedCellHeight();

    switch (e.getKeyCode()) {
      case KeyEvent.VK_UP:
      case KeyEvent.VK_KP_UP:
        if (!e.isAltDown()) {
          newIndex--;
        }
        break;
      case KeyEvent.VK_DOWN:
      case KeyEvent.VK_KP_DOWN:
        if (!e.isAltDown()) {
          newIndex++;
        }
        break;
      case KeyEvent.VK_PAGE_UP:
        newIndex -= rowsOnScreen;
        break;
      case KeyEvent.VK_PAGE_DOWN:
        newIndex += rowsOnScreen;
        break;
      case KeyEvent.VK_ENTER:
        if ((e.getModifiersEx() & KeyEvent.CTRL_DOWN_MASK) > 0) {
          model.suggest(field.getText().trim());
        } else if ((e.getModifiersEx() & KeyEvent.SHIFT_DOWN_MASK) > 0) {
          model.popOut(field.getText().trim());
        } else {
          translateSelected();
        }
        break;
    }

    // check, whether index was changed
    if (newIndex == selectedIndex) {
      return;
    }

    int size = list.getModel().getSize();

    if (newIndex < 0) {
      newIndex = 0;
    }
    if (newIndex >= size) {
      newIndex = size - 1;
    }

    setSelectedIndex(newIndex);
    setSearchTextWithoutNavigating(getSelectedIndexText());
  }