From f8b3393fe7b18532336d7cc2cfae790d4241b857 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Fri, 28 Nov 2014 17:48:44 +0300 Subject: [PATCH] IDEA-90936 Force project make option before launch in run configuration --- .../options/CompileStepBeforeRun.java | 8 +- .../options/MakeProjectStepBeforeRun.java | 108 ++++++++++++++++++ .../src/messages/ExecutionBundle.properties | 1 + resources/src/idea/RichPlatformPlugin.xml | 1 + 4 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 java/execution/impl/src/com/intellij/compiler/options/MakeProjectStepBeforeRun.java diff --git a/java/execution/impl/src/com/intellij/compiler/options/CompileStepBeforeRun.java b/java/execution/impl/src/com/intellij/compiler/options/CompileStepBeforeRun.java index 124220d75966..b0d878f9bea9 100644 --- a/java/execution/impl/src/com/intellij/compiler/options/CompileStepBeforeRun.java +++ b/java/execution/impl/src/com/intellij/compiler/options/CompileStepBeforeRun.java @@ -102,7 +102,11 @@ public class CompileStepBeforeRun extends BeforeRunTaskProvider { + public static final Key ID = Key.create("MakeProject"); + + private final Project myProject; + + public MakeProjectStepBeforeRun(@NotNull Project project) { + myProject = project; + } + + @Override + public Key getId() { + return ID; + } + + @Override + public String getName() { + return ExecutionBundle.message("before.launch.make.project.step"); + } + + @Override + public String getDescription(MakeProjectBeforeRunTask task) { + return getName(); + } + @Override + public Icon getIcon() { + return AllIcons.Actions.Compile; + } + + @Override + public Icon getTaskIcon(MakeProjectBeforeRunTask task) { + return AllIcons.Actions.Compile; + } + + public boolean configureTask(RunConfiguration runConfiguration, MakeProjectBeforeRunTask task) { + return false; + } + + @Override + public boolean canExecuteTask(RunConfiguration configuration, MakeProjectBeforeRunTask task) { + return true; + } + + public boolean executeTask(DataContext context, final RunConfiguration configuration, final ExecutionEnvironment env, MakeProjectBeforeRunTask task) { + return CompileStepBeforeRun.doMake(myProject, configuration, env, false, true); + } + + public boolean isConfigurable() { + return false; + } + + @Nullable + public static RunConfiguration getRunConfiguration(final CompileContext context) { + return getRunConfiguration(context.getCompileScope()); + } + + @Nullable + public static RunConfiguration getRunConfiguration(final CompileScope compileScope) { + return compileScope.getUserData(CompileStepBeforeRun.RUN_CONFIGURATION); + } + + + public MakeProjectBeforeRunTask createTask(RunConfiguration runConfiguration) { + return !(runConfiguration instanceof RemoteConfiguration) && runConfiguration instanceof RunProfileWithCompileBeforeLaunchOption + ? new MakeProjectBeforeRunTask() + : null; + } + + public static class MakeProjectBeforeRunTask extends BeforeRunTask { + public MakeProjectBeforeRunTask() { + super(ID); + } + } +} diff --git a/platform/platform-resources-en/src/messages/ExecutionBundle.properties b/platform/platform-resources-en/src/messages/ExecutionBundle.properties index a98190c6a751..b2f05abc66bd 100644 --- a/platform/platform-resources-en/src/messages/ExecutionBundle.properties +++ b/platform/platform-resources-en/src/messages/ExecutionBundle.properties @@ -323,6 +323,7 @@ configuration.action.chooser.title=Choose configuration type to run env.vars.checkbox.title=&Include parent environment variables before.launch.compile.step=Make +before.launch.make.project.step=Make Project before.launch.compile.step.no.error.check=Make, no error check execute.before.run.debug.dialog.title=Execute {0} Before Run/Debug diff --git a/resources/src/idea/RichPlatformPlugin.xml b/resources/src/idea/RichPlatformPlugin.xml index c125b2a5f651..67a2f01437ac 100644 --- a/resources/src/idea/RichPlatformPlugin.xml +++ b/resources/src/idea/RichPlatformPlugin.xml @@ -330,6 +330,7 @@ + -- 2.32.0