From 0eaaf6a0847d3501938da1eda9f103f6d0d3a227 Mon Sep 17 00:00:00 2001 From: Aleksander Kuznetsov Date: Mon, 2 Nov 2020 12:59:21 +0300 Subject: [PATCH] [maven] show actions related to executor groups in build/run configuration menu This also contributes to IDEA-251443. GitOrigin-RevId: a5ce1d09159ae52c503ce71f34953a3483fcdda9 --- .../idea/maven/navigator/actions/MavenBuildMenu.kt | 10 +++++++--- .../actions/MavenRunConfigurationMenu.java | 13 ++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenBuildMenu.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenBuildMenu.kt index 46550d74119a..9b20bf2ad442 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenBuildMenu.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenBuildMenu.kt @@ -2,14 +2,13 @@ package org.jetbrains.idea.maven.navigator.actions import com.intellij.execution.Executor -import com.intellij.execution.actions.RunContextAction import com.intellij.openapi.actionSystem.* import com.intellij.openapi.project.DumbAware import org.jetbrains.idea.maven.project.actions.RunBuildAction import org.jetbrains.idea.maven.statistics.MavenActionsUsagesCollector class MavenBuildMenu : DefaultActionGroup(), DumbAware { - + private val actionManager = ActionManager.getInstance() override fun update(e: AnActionEvent) { val project = AnAction.getEventProject(e) ?: return @@ -20,7 +19,12 @@ class MavenBuildMenu : DefaultActionGroup(), DumbAware { Executor.EXECUTOR_EXTENSION_NAME.extensionList .filter { it.isApplicable(project) } .reversed() - .forEach { add(wrap(RunContextAction(it), it), Constraints.FIRST) } + .forEach { + val contextAction = actionManager.getAction(it.contextActionId) + if (contextAction != null) { + add(wrap(contextAction, it), Constraints.FIRST) + } + } ActionManager.getInstance().getAction("Maven.RunBuild")?.let { add(it, Constraints.FIRST) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenRunConfigurationMenu.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenRunConfigurationMenu.java index 97affa68be35..aede3ed52c73 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenRunConfigurationMenu.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenRunConfigurationMenu.java @@ -4,6 +4,7 @@ package org.jetbrains.idea.maven.navigator.actions; import com.intellij.execution.Executor; import com.intellij.execution.ProgramRunnerUtil; import com.intellij.execution.RunnerAndConfigurationSettings; +import com.intellij.execution.executors.ExecutorGroup; import com.intellij.execution.runners.ProgramRunner; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; @@ -14,6 +15,7 @@ import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.utils.MavenDataKeys; +import java.util.ArrayList; import java.util.List; public final class MavenRunConfigurationMenu extends DefaultActionGroup implements DumbAware { @@ -32,7 +34,16 @@ public final class MavenRunConfigurationMenu extends DefaultActionGroup implemen return; } - List executors = Executor.EXECUTOR_EXTENSION_NAME.getExtensionList(); + @SuppressWarnings("DuplicatedCode") + final List executors = new ArrayList<>(); + for (final Executor executor: Executor.EXECUTOR_EXTENSION_NAME.getExtensionList()) { + if (executor instanceof ExecutorGroup) { + executors.addAll(((ExecutorGroup)executor).childExecutors()); + } + else { + executors.add(executor); + } + } for (int i = executors.size(); --i >= 0; ) { Executor executor = executors.get(i); if (!executor.isApplicable(project)) {