IDEA-79934 Run Configurations: Ability to specify another Run configuration as a 'before run' task

This commit is contained in:
Vassiliy Kudryashov
2012-04-16 17:49:48 +04:00
parent b4d63ddeb8
commit 1c6aced169
40 changed files with 1049 additions and 355 deletions
@@ -32,12 +32,15 @@ import com.intellij.openapi.compiler.CompilerManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.Key;
import com.intellij.util.concurrency.Semaphore;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* @author spleaner
*/
@@ -47,6 +50,9 @@ public class CompileStepBeforeRun extends BeforeRunTaskProvider<CompileStepBefor
private static final Key<RunConfiguration> RUN_CONFIGURATION = Key.create("RUN_CONFIGURATION");
@NonNls protected static final String MAKE_PROJECT_ON_RUN_KEY = "makeProjectOnRun";
private static final Icon ICON = IconLoader.getIcon("/actions/compile.png");
private final Project myProject;
public CompileStepBeforeRun(@NotNull final Project project) {
@@ -57,10 +63,26 @@ public class CompileStepBeforeRun extends BeforeRunTaskProvider<CompileStepBefor
return ID;
}
public String getDescription(final RunConfiguration runConfiguration, MakeBeforeRunTask task) {
@Override
public String getName() {
return ExecutionBundle.message("before.launch.compile.step");
}
@Override
public String getDescription(MakeBeforeRunTask task) {
return ExecutionBundle.message("before.launch.compile.step");
}
@Override
public Icon getIcon() {
return ICON;
}
@Override
public Icon getTaskIcon(MakeBeforeRunTask task) {
return ICON;
}
public MakeBeforeRunTask createTask(RunConfiguration runConfiguration) {
return !(runConfiguration instanceof RemoteConfiguration) && runConfiguration instanceof RunProfileWithCompileBeforeLaunchOption
? new MakeBeforeRunTask()
@@ -71,6 +93,11 @@ public class CompileStepBeforeRun extends BeforeRunTaskProvider<CompileStepBefor
return false;
}
@Override
public boolean canExecuteTask(RunConfiguration configuration, MakeBeforeRunTask task) {
return true;
}
public boolean executeTask(DataContext context, final RunConfiguration configuration, MakeBeforeRunTask task) {
if (!(configuration instanceof RunProfileWithCompileBeforeLaunchOption)) {
return true;
@@ -134,7 +161,7 @@ public class CompileStepBeforeRun extends BeforeRunTaskProvider<CompileStepBefor
return result[0];
}
public boolean hasConfigurationButton() {
public boolean isConfigurable() {
return false;
}
@@ -148,8 +175,9 @@ public class CompileStepBeforeRun extends BeforeRunTaskProvider<CompileStepBefor
return compileScope.getUserData(RUN_CONFIGURATION);
}
public static class MakeBeforeRunTask extends BeforeRunTask {
public static class MakeBeforeRunTask extends BeforeRunTask<MakeBeforeRunTask> {
private MakeBeforeRunTask() {
super(ID);
setEnabled(true);
}
}