KeymapGroup (Condition<? super AnAction> condition, final Project project) { KeymapGroup result = KeymapGroupFactory.getInstance().createGroup(TasksBundle.message("maven.tasks.action.group.name"), RepositoryLibraryLogo); if (project == null) return result; Comparator<MavenProject> projectComparator = (o1, o2) -> o1.getDisplayName().compareToIgnoreCase(o2.getDisplayName()); Map<MavenProject, Set<Pair<String, String>>> projectToActionsMapping = new TreeMap<>(projectComparator); ActionManager actionManager = ActionManager.getInstance(); for (String eachId : getActionIdList(project, null)) { AnAction eachAction = actionManager.getAction(eachId); if (!(eachAction instanceof MavenGoalAction mavenAction)) continue; if (condition != null && !condition.value(actionManager.getActionOrStub(eachId))) continue; MavenProject mavenProject = mavenAction.getMavenProject(); Set<Pair<String, String>> actions = projectToActionsMapping.get(mavenProject); if (actions == null) { final List<String> projectGoals = collectGoals(mavenProject); actions = new TreeSet<>((o1, o2) -> { String goal1 = o1.getFirst(); String goal2 = o2.getFirst(); int index1 = projectGoals.indexOf(goal1); int index2 = projectGoals.indexOf(goal2); if (index1 == index2) return goal1.compareToIgnoreCase(goal2); return index1 < index2 ? -1 : 1; }); projectToActionsMapping.put(mavenProject, actions); } actions.add(Pair.create(mavenAction.getGoal(), eachId)); } for (Map.Entry<MavenProject, Set<Pair<String, String>>> each : projectToActionsMapping.entrySet()) { Set<Pair<String, String>> goalsToActionIds = each.getValue(); for (Pair<String, String> eachGoalToActionId : goalsToActionIds) { result.addActionId(eachGoalToActionId.getSecond()); } } Icon icon = AllIcons.General.Add; ((Group)result).addHyperlink(new Hyperlink(icon, MavenConfigurableBundle.message("link.label.choose.phase.goal.to.assign.shortcut")) { @Override public void onClick(MouseEvent e) { SelectMavenGoalDialog dialog = new SelectMavenGoalDialog(project); if (dialog.showAndGet() && dialog.getResult() != null) { var goalNode = dialog.getResult(); String goal = goalNode.getGoal(); String actionId = MavenShortcutsManager.getInstance(project).getActionId(goalNode.getProjectPath(), goal); getOrRegisterAction(goalNode.getMavenProject(), actionId, goal); ApplicationManager.getApplication().getMessageBus().syncPublisher(KeymapListener.CHANGE_TOPIC).processCurrentKeymapChanged(); Settings allSettings = Settings.KEY.getData(DataManager.getInstance().getDataContext(e.getComponent())); KeymapPanel keymapPanel = allSettings != null ? allSettings.find(KeymapPanel.class) : null; if (keymapPanel != null) { // clear actions filter keymapPanel.showOption(""); keymapPanel.selectAction(actionId); } } } }); return result; }