summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java')
-rw-r--r--platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java138
1 files changed, 56 insertions, 82 deletions
diff --git a/platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java b/platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java
index b27a939dd57c..5ad5f73b954a 100644
--- a/platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java
+++ b/platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,23 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package com.intellij.execution;
import com.intellij.execution.configurations.ConfigurationFactory;
import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.configurations.RunConfiguration;
-import com.intellij.execution.configurations.RunProfile;
import com.intellij.execution.impl.RunDialog;
import com.intellij.execution.impl.RunManagerImpl;
+import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
import com.intellij.execution.runners.ExecutionUtil;
import com.intellij.execution.runners.ProgramRunner;
-import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.icons.AllIcons;
import com.intellij.internal.statistic.UsageTrigger;
import com.intellij.internal.statistic.beans.ConvertUsagesUtil;
-import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
@@ -41,11 +38,8 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
-/**
- * @author spleaner
- */
public class ProgramRunnerUtil {
- private static final Logger LOG = Logger.getInstance("#com.intellij.execution.ProgramRunnerUtil");
+ private static final Logger LOG = Logger.getInstance(ProgramRunnerUtil.class);
private ProgramRunnerUtil() {
}
@@ -55,102 +49,82 @@ public class ProgramRunnerUtil {
return configuration == null ? null : RunnerRegistry.getInstance().getRunner(executorId, configuration.getConfiguration());
}
- public static void executeConfiguration(@NotNull final Project project,
- @Nullable final DataContext context,
- @NotNull final RunnerAndConfigurationSettings configuration,
- @NotNull final Executor executor,
- @NotNull final ExecutionTarget target,
- @Nullable RunContentDescriptor contentToReuse,
- final boolean showSettings) {
- ProgramRunner runner = getRunner(executor.getId(), configuration);
- if (runner == null) {
- LOG.error("Runner MUST not be null! Cannot find runner for " +
- executor.getId() +
- " and " +
- configuration.getConfiguration().getFactory().getName());
- return;
- }
- executeConfiguration(project, context, configuration, executor, target, contentToReuse, showSettings, runner, null, true);
- }
-
- public static void executeConfiguration(Project project,
- @Nullable DataContext context,
- @Nullable RunnerAndConfigurationSettings configuration,
- Executor executor,
- ExecutionTarget target,
- RunContentDescriptor contentToReuse,
- boolean showSettings,
- @NotNull ProgramRunner runner,
- @Nullable RunProfile runProfile,
- boolean assignNewId) {
- if (ExecutorRegistry.getInstance().isStarting(project, executor.getId(), runner.getRunnerId())) {
- return;
- }
-
- if (configuration != null && !ExecutionTargetManager.canRun(configuration, target)) {
- ExecutionUtil.handleExecutionError(
- project, executor.getToolWindowId(), configuration.getConfiguration(),
- new ExecutionException(StringUtil.escapeXml("Cannot run '" + configuration.getName() + "' on '" + target.getDisplayName() + "'")));
+ public static void executeConfiguration(@NotNull ExecutionEnvironment environment, boolean showSettings, boolean assignNewId) {
+ if (ExecutorRegistry.getInstance().isStarting(environment)) {
return;
}
- if (configuration != null &&
- (!RunManagerImpl.canRunConfiguration(configuration, executor) || (showSettings && configuration.isEditBeforeRun()))) {
- if (!RunDialog.editConfiguration(project, configuration, "Edit configuration", executor)) {
+ RunnerAndConfigurationSettings runnerAndConfigurationSettings = environment.getRunnerAndConfigurationSettings();
+ if (runnerAndConfigurationSettings != null) {
+ if (!ExecutionTargetManager.canRun(environment)) {
+ ExecutionUtil.handleExecutionError(environment, new ExecutionException(
+ StringUtil.escapeXml("Cannot run '" + environment.getRunProfile().getName() + "' on '" + environment.getExecutionTarget().getDisplayName() + "'")));
return;
}
- while (!RunManagerImpl.canRunConfiguration(configuration, executor)) {
- if (Messages.YES == Messages
- .showYesNoDialog(project, "Configuration is still incorrect. Do you want to edit it again?", "Change Configuration Settings",
- "Edit", "Continue Anyway", Messages.getErrorIcon())) {
- if (!RunDialog.editConfiguration(project, configuration, "Edit configuration", executor)) {
- return;
- }
+ if (!RunManagerImpl.canRunConfiguration(environment) || (showSettings && runnerAndConfigurationSettings.isEditBeforeRun())) {
+ if (!RunDialog.editConfiguration(environment, "Edit configuration")) {
+ return;
}
- else {
- break;
+
+ while (!RunManagerImpl.canRunConfiguration(environment)) {
+ if (Messages.YES == Messages
+ .showYesNoDialog(environment.getProject(), "Configuration is still incorrect. Do you want to edit it again?", "Change Configuration Settings",
+ "Edit", "Continue Anyway", Messages.getErrorIcon())) {
+ if (!RunDialog.editConfiguration(environment, "Edit configuration")) {
+ return;
+ }
+ }
+ else {
+ break;
+ }
}
}
- }
- final ConfigurationType configurationType = configuration != null ? configuration.getType() : null;
- if (configurationType != null) {
- UsageTrigger.trigger("execute." + ConvertUsagesUtil.ensureProperKey(configurationType.getId()) + "." + executor.getId());
+ ConfigurationType configurationType = runnerAndConfigurationSettings.getType();
+ if (configurationType != null) {
+ UsageTrigger.trigger("execute." + ConvertUsagesUtil.ensureProperKey(configurationType.getId()) + "." + environment.getExecutor().getId());
+ }
}
try {
- ExecutionEnvironmentBuilder builder =
- new ExecutionEnvironmentBuilder(project, executor);
- if (configuration != null) {
- builder.setRunnerAndSettings(runner, configuration);
- }
- else {
- builder.setRunnerId(runner.getRunnerId());
- }
- builder.setTarget(target).setContentToReuse(contentToReuse).setDataContext(context);
if (assignNewId) {
- builder.assignNewId();
- }
- if (runProfile != null) {
- builder.setRunProfile(runProfile);
+ environment.assignNewExecutionId();
}
- runner.execute(builder.build());
+ environment.getRunner().execute(environment);
}
catch (ExecutionException e) {
- String name = configuration != null ? configuration.getName() : null;
- if (name == null && runProfile != null) name = runProfile.getName();
- if (name == null && contentToReuse != null) name = contentToReuse.getDisplayName();
- if (name == null) name = "<Unknown>";
- ExecutionUtil.handleExecutionError(project, executor.getToolWindowId(), name, e);
+ String name = runnerAndConfigurationSettings != null ? runnerAndConfigurationSettings.getName() : null;
+ if (name == null) {
+ name = environment.getRunProfile().getName();
+ }
+ if (name == null && environment.getContentToReuse() != null) {
+ name = environment.getContentToReuse().getDisplayName();
+ }
+ if (name == null) {
+ name = "<Unknown>";
+ }
+ ExecutionUtil.handleExecutionError(environment.getProject(), environment.getExecutor().getToolWindowId(), name, e);
}
}
-
public static void executeConfiguration(@NotNull Project project,
@NotNull RunnerAndConfigurationSettings configuration,
@NotNull Executor executor) {
- executeConfiguration(project, null, configuration, executor, ExecutionTargetManager.getActiveTarget(project), null, true);
+ ExecutionEnvironmentBuilder builder;
+ try {
+ builder = ExecutionEnvironmentBuilder.create(executor, configuration);
+ }
+ catch (ExecutionException e) {
+ LOG.error(e);
+ return;
+ }
+
+ executeConfiguration(builder
+ .contentToReuse(null)
+ .dataContext(null)
+ .activeTarget()
+ .build(), true, true);
}
public static Icon getConfigurationIcon(final RunnerAndConfigurationSettings settings,