IDEA-182193 Intention to create a new Run configuration for executable class

"Create/Edit Run Configuration" added to run line marker

GitOrigin-RevId: aba80a6e38f7f6cd6f2fb8615032d8e74a9f4fdb
This commit is contained in:
Dmitry Avdeev
2019-07-05 18:04:32 +03:00
committed by intellij-monorepo-bot
parent 25b69d927c
commit e8f25da80c
4 changed files with 31 additions and 3 deletions
@@ -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 ma<caret>in(String[] args) {\n" +
" }\n" +
"}");
List<GutterMark> 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"));
}
}
@@ -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);
@@ -38,11 +38,13 @@ class ExecutorAction private constructor(val origin: AnAction,
@JvmOverloads
fun getActionList(order: Int = 0): List<AnAction> {
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<ConfigurationFromContext> {
@@ -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