diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java index f2d68cdc7ea1..6a3d9cfc65d6 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/navigation/RunLineMarkerTest.java @@ -167,4 +167,21 @@ public class RunLineMarkerTest extends LightJavaCodeInsightFixtureTestCase { "Debug 'Main_class_test.main()'\n" + "Run 'Main_class_test.main()' with Coverage")); } + + public void testEditConfigurationAction() { + myFixture.configureByText("MainTest.java", "public class MainTest {\n" + + " public static void main(String[] args) {\n" + + " }\n" + + "}"); + List marks = myFixture.findGuttersAtCaret(); + assertEquals(1, marks.size()); + GutterIconRenderer mark = (GutterIconRenderer)marks.get(0); + AnAction[] children = mark.getPopupMenuActions().getChildren(new TestActionEvent()); + AnAction action = ContainerUtil.find(children, t -> t.getTemplateText().startsWith("Create")); + assertNotNull(action); + myFixture.testAction(action); + TestActionEvent event = new TestActionEvent(); + action.update(event); + assertTrue(event.getPresentation().getText().startsWith("Edit")); + } } diff --git a/platform/lang-impl/src/com/intellij/execution/actions/CreateAction.java b/platform/lang-impl/src/com/intellij/execution/actions/CreateAction.java index d534501eafb6..3b9caa248072 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/CreateAction.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/CreateAction.java @@ -7,6 +7,7 @@ import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.impl.RunDialog; import com.intellij.execution.impl.RunManagerImpl; import com.intellij.openapi.actionSystem.Presentation; +import com.intellij.openapi.application.ApplicationManager; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -71,7 +72,9 @@ public class CreateAction extends BaseRunConfigurationAction { @Override public void perform(final ConfigurationContext context) { final RunnerAndConfigurationSettings configuration = context.getConfiguration(); - if (RunDialog.editConfiguration(context.getProject(), configuration, ExecutionBundle.message("create.run.configuration.for.item.dialog.title", configuration.getName()))) { + if (ApplicationManager.getApplication().isUnitTestMode() || + RunDialog.editConfiguration(context.getProject(), configuration, + ExecutionBundle.message("create.run.configuration.for.item.dialog.title", configuration.getName()))) { final RunManagerImpl runManager = (RunManagerImpl)context.getRunManager(); runManager.addConfiguration(configuration); runManager.setSelectedConfiguration(configuration); diff --git a/platform/lang-impl/src/com/intellij/execution/lineMarker/ExecutorAction.kt b/platform/lang-impl/src/com/intellij/execution/lineMarker/ExecutorAction.kt index 349dffec49be..76d5dd4e8d42 100644 --- a/platform/lang-impl/src/com/intellij/execution/lineMarker/ExecutorAction.kt +++ b/platform/lang-impl/src/com/intellij/execution/lineMarker/ExecutorAction.kt @@ -38,11 +38,13 @@ class ExecutorAction private constructor(val origin: AnAction, @JvmOverloads fun getActionList(order: Int = 0): List { val actionManager = ActionManager.getInstance() - return ExecutorRegistry.getInstance().registeredExecutors + val createAction = actionManager.getAction("CreateRunConfiguration") + val list = ExecutorRegistry.getInstance().registeredExecutors .mapNotNull { executor -> val action = actionManager.getAction(executor.contextActionId) ?: return@mapNotNull null ExecutorAction(action, executor, order) } + return if (createAction == null) list else list + createAction } private fun getConfigurations(dataContext: DataContext): List { diff --git a/platform/lang-impl/src/com/intellij/execution/lineMarker/LineMarkerActionWrapper.java b/platform/lang-impl/src/com/intellij/execution/lineMarker/LineMarkerActionWrapper.java index 9ca93a842dd1..1f108b9b875f 100644 --- a/platform/lang-impl/src/com/intellij/execution/lineMarker/LineMarkerActionWrapper.java +++ b/platform/lang-impl/src/com/intellij/execution/lineMarker/LineMarkerActionWrapper.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; import java.util.Arrays; /** @@ -82,7 +83,12 @@ public class LineMarkerActionWrapper extends ActionGroup implements PriorityActi @Override public void update(@NotNull AnActionEvent e) { - myOrigin.update(wrapEvent(e)); + AnActionEvent wrapped = wrapEvent(e); + myOrigin.update(wrapped); + Icon icon = wrapped.getPresentation().getIcon(); + if (icon != null) { + getTemplatePresentation().setIcon(icon); + } } @NotNull