void (JBList<T> list) { AnAction previousPanelAction = new AnAction(IdeBundle.messagePointer("action.FinderRecursivePanel.text.previous"), AllIcons.Actions.Back) { @Override public void update(@NotNull AnActionEvent e) { e.getPresentation().setEnabled(!isRootPanel()); } @Override public @NotNull ActionUpdateThread getActionUpdateThread() { return ActionUpdateThread.EDT; } @Override public void actionPerformed(@NotNull AnActionEvent e) { assert myParent != null; myParent.handleGotoPrevious(); } }; previousPanelAction.registerCustomShortcutSet(KeyEvent.VK_LEFT, 0, list); AnAction nextPanelAction = new AnAction(IdeBundle.messagePointer("action.FinderRecursivePanel.text.next"), AllIcons.Actions.Forward) { @Override public void update(@NotNull AnActionEvent e) { final T value = getSelectedValue(); e.getPresentation().setEnabled(value != null && hasChildren(value) && getSecondComponent() instanceof FinderRecursivePanel); } @Override public @NotNull ActionUpdateThread getActionUpdateThread() { return ActionUpdateThread.EDT; } @Override public void actionPerformed(@NotNull AnActionEvent e) { FinderRecursivePanel<?> finderRecursivePanel = (FinderRecursivePanel<?>)getSecondComponent(); finderRecursivePanel.handleGotoNext(); } }; nextPanelAction.registerCustomShortcutSet(KeyEvent.VK_RIGHT, 0, list); AnAction editAction = new AnAction(IdeBundle.messagePointer("action.FinderRecursivePanel.text.edit"), AllIcons.Actions.Edit) { @Override public void update(@NotNull AnActionEvent e) { e.getPresentation().setEnabled(isEditable()); } @Override public @NotNull ActionUpdateThread getActionUpdateThread() { return ActionUpdateThread.EDT; } @Override public void actionPerformed(@NotNull AnActionEvent e) { performEditAction(); } }; editAction.registerCustomShortcutSet(CommonShortcuts.ENTER, list); AnAction[] actions = new AnAction[]{ previousPanelAction, nextPanelAction, Separator.getInstance(), editAction}; final AnAction[] customActions = getCustomListActions(); if (customActions.length > 0) { actions = ArrayUtil.append(actions, Separator.getInstance()); actions = ArrayUtil.mergeArrays(actions, customActions); } ActionGroup contextActionGroup = new DefaultActionGroup(actions); PopupHandler.installPopupMenu(list, contextActionGroup, "FinderPopup"); }