void (@NotNull AnActionEvent e) { final Project project = getEventProject(e); if (project == null) return; final List<Artifact> artifacts = ArtifactUtil.getArtifactWithOutputPaths(project); if (artifacts.isEmpty()) return; List<ArtifactPopupItem> items = new ArrayList<>(); if (artifacts.size() > 1) { items.add(0, new ArtifactPopupItem(null, JavaCompilerBundle.message("artifacts.menu.item.all"), EmptyIcon.ICON_16)); } Set<Artifact> selectedArtifacts = new HashSet<>(ArtifactsWorkspaceSettings.getInstance(project).getArtifactsToBuild()); IntList selectedIndices = new IntArrayList(); if (Comparing.haveEqualElements(artifacts, selectedArtifacts) && selectedArtifacts.size() > 1) { selectedIndices.add(0); selectedArtifacts.clear(); } for (Artifact artifact : artifacts) { final ArtifactPopupItem item = new ArtifactPopupItem(artifact, artifact.getName(), artifact.getArtifactType().getIcon()); if (selectedArtifacts.contains(artifact)) { selectedIndices.add(items.size()); } items.add(item); } final ProjectSettingsService projectSettingsService = ProjectSettingsService.getInstance(project); final ArtifactAwareProjectSettingsService settingsService = projectSettingsService instanceof ArtifactAwareProjectSettingsService ? (ArtifactAwareProjectSettingsService)projectSettingsService : null; final ChooseArtifactStep step = new ChooseArtifactStep(items, artifacts.get(0), project, settingsService); step.setDefaultOptionIndices(selectedIndices.toIntArray()); ListPopup popup = JBPopupFactory.getInstance().createListPopup(step); KeyStroke editKeyStroke = KeymapUtil.getKeyStroke(CommonShortcuts.getEditSource()); if (popup instanceof ListPopupImpl popupImpl && settingsService != null && editKeyStroke != null) { popupImpl.registerAction("editArtifact", editKeyStroke, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { Object[] values = popupImpl.getSelectedValues(); popupImpl.cancel(); settingsService.openArtifactSettings(values.length > 0 ? ((ArtifactPopupItem)values[0]).getArtifact() : null); } }); } popup.showCenteredInCurrentWindow(project); }