FilterComponent (JTree tree) { final TreeSpeedSearch mySpeedSearch = new TreeSpeedSearch(tree, true, null, new TreePathStringFunction()) { @Override public boolean isPopupActive() { return /*super.isPopupActive()*/true; } @Override public void showPopup(String searchText) { //super.showPopup(searchText); } @Override protected boolean isSpeedSearchEnabled() { return /*super.isSpeedSearchEnabled()*/false; } @Override public void showPopup() { //super.showPopup(); } }; mySpeedSearch.setupListeners(); final FilterComponent filterComponent = new FilterComponent("CUSTOMIZE_ACTIONS", 5) { @Override public void filter() { mySpeedSearch.findAndSelectElement(getFilter()); mySpeedSearch.getComponent().repaint(); } }; JTextField textField = filterComponent.getTextEditor(); int[] keyCodes = {KeyEvent.VK_HOME, KeyEvent.VK_END, KeyEvent.VK_UP, KeyEvent.VK_DOWN}; for (int keyCode : keyCodes) { new DumbAwareAction(){ @Override public void actionPerformed(@NotNull AnActionEvent e) { String filter = filterComponent.getFilter(); if (!StringUtil.isEmpty(filter)) { mySpeedSearch.adjustSelection(keyCode, filter); } } }.registerCustomShortcutSet(keyCode, 0, textField); } return filterComponent; }