@Override
  protected void actionPerformed(GuiButton button) {
    if (button.enabled) {
      switch (button.id) {
        case 0:
          if (rankList.selected != null) {
            MinerRank rank = rankList.selected;

            if (rankField != null) {
              rankField.setText(Integer.toString(rank.getRank()));
            }
          }

          mc.displayGuiScreen(parent);

          rankList.selected = null;
          rankList.scrollToTop();
          break;
        case 1:
          CaveConfigGui.detailInfo = detailInfo.isChecked();
          break;
        case 2:
          CaveConfigGui.instantFilter = instantFilter.isChecked();
          break;
      }
    }
  }
  @Override
  protected void keyTyped(char c, int code) {
    if (filterTextField.isFocused()) {
      if (code == Keyboard.KEY_ESCAPE) {
        filterTextField.setFocused(false);
      }

      String prev = filterTextField.getText();

      filterTextField.textboxKeyTyped(c, code);

      String text = filterTextField.getText();
      boolean changed = text != prev;

      if (Strings.isNullOrEmpty(text) && changed) {
        rankList.setFilter(null);
      } else if (instantFilter.isChecked() && changed || code == Keyboard.KEY_RETURN) {
        rankList.setFilter(text);
      }
    } else {
      if (code == Keyboard.KEY_ESCAPE) {
        mc.displayGuiScreen(parent);
      } else if (code == Keyboard.KEY_BACK) {
        rankList.selected = null;
      } else if (code == Keyboard.KEY_UP) {
        rankList.scrollUp();
      } else if (code == Keyboard.KEY_DOWN) {
        rankList.scrollDown();
      } else if (code == Keyboard.KEY_HOME) {
        rankList.scrollToTop();
      } else if (code == Keyboard.KEY_END) {
        rankList.scrollToEnd();
      } else if (code == Keyboard.KEY_SPACE) {
        rankList.scrollToSelected();
      } else if (code == Keyboard.KEY_PRIOR) {
        rankList.scrollToPrev();
      } else if (code == Keyboard.KEY_NEXT) {
        rankList.scrollToNext();
      } else if (code == Keyboard.KEY_F || code == mc.gameSettings.keyBindChat.getKeyCode()) {
        filterTextField.setFocused(true);
      }
    }
  }