void (@NotNull AnActionEvent e) { Project project = Objects.requireNonNull(e.getProject()); List<RunnerAndConfigurationSettings> runConfigs = getRunCurrentFileActionStatus(e, true).myRunConfigs; if (runConfigs.isEmpty()) { return; } if (runConfigs.size() == 1) { doRunCurrentFile(project, runConfigs.get(0), e.getDataContext()); return; } IPopupChooserBuilder<RunnerAndConfigurationSettings> builder = JBPopupFactory.getInstance() .createPopupChooserBuilder(runConfigs) .setRenderer(new DefaultListCellRenderer() { @Override public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { RunnerAndConfigurationSettings runConfig = (RunnerAndConfigurationSettings)value; JLabel result = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); result.setIcon(runConfig.getConfiguration().getIcon()); result.setText(runConfig.getName()); return result; } }) .setItemChosenCallback(runConfig -> doRunCurrentFile(project, runConfig, e.getDataContext())); InputEvent inputEvent = e.getInputEvent(); if (inputEvent instanceof MouseEvent) { builder.createPopup().showUnderneathOf(inputEvent.getComponent()); } else { Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); if (editor == null) { // Not expected to happen because we are running a file from the current editor. LOG.warn("Run Current File (" + runConfigs + "): getSelectedTextEditor() == null"); return; } builder .setTitle(myExecutor.getActionName()) .createPopup() .showInBestPositionFor(editor); } }