From 82ec82a4f9b1bcd6fed4af721b8ca3bb292fc073 Mon Sep 17 00:00:00 2001 From: Vassiliy Kudryashov Date: Mon, 8 Oct 2012 23:15:58 +0400 Subject: [PATCH] IDEA-88111 Before Run->Another configuration: do not reuse tool window's content or allow switching between them somehow --- .../intellij/execution/ui/RunContentDescriptor.java | 2 ++ .../intellij/execution/impl/ExecutionManagerImpl.java | 8 +++++++- .../impl/RunConfigurationBeforeRunProvider.java | 11 ++++++++++- .../intellij/execution/runners/RunContentBuilder.java | 8 +++----- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java b/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java index 295da9011365..473c9e037e52 100644 --- a/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java +++ b/platform/lang-api/src/com/intellij/execution/ui/RunContentDescriptor.java @@ -21,6 +21,7 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.Key; import com.intellij.ui.content.Content; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; @@ -28,6 +29,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; public class RunContentDescriptor implements Disposable { + public static final Key REUSE_CONTENT_PROHIBITED = Key.create("ReuseContentProhibited"); private static final Logger LOG = Logger.getInstance("#com.intellij.execution.ui.RunContentDescriptor"); private ExecutionConsole myExecutionConsole; diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java index df913f1e6dc7..6b7595ead268 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ExecutionManagerImpl.java @@ -133,7 +133,13 @@ public class ExecutionManagerImpl extends ExecutionManager implements ProjectCom public void run() { for (BeforeRunTask task : activeTasks) { BeforeRunTaskProvider provider = BeforeRunTaskProvider.getProvider(myProject, task.getProviderId()); - if (provider != null && !provider.executeTask(dataContext, runConfiguration, env, task)) { + if (provider == null) { + LOG.warn("Cannot find BeforeRunTaskProvider for id='" + task.getProviderId()+"'"); + continue; + } + ExecutionEnvironment taskEnvironment = new ExecutionEnvironment(env.getRunProfile(), env.getProject(), null, null, null, null); + taskEnvironment.putUserData(RunContentDescriptor.REUSE_CONTENT_PROHIBITED, RunConfigurationBeforeRunProvider.ID.equals(provider.getId())); + if (!provider.executeTask(dataContext, runConfiguration, taskEnvironment, task)) { if (onCancelRunnable != null) { SwingUtilities.invokeLater(onCancelRunnable); } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java index 1a29ad53192f..96d892118ddd 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurationBeforeRunProvider.java @@ -46,6 +46,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import java.awt.*; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -165,6 +166,7 @@ extends BeforeRunTaskProvider myRunnerActions = new ArrayList(); - private final boolean myReuseProhibited = false; + private boolean myReuseProhibited = false; private ExecutionResult myExecutionResult; private final LogFilesManager myManager; @@ -82,6 +79,7 @@ public class RunContentBuilder extends LogConsoleManagerBase { if (profile instanceof RunConfigurationBase) { myManager.registerFileMatcher((RunConfigurationBase)profile); } + myReuseProhibited = Boolean.TRUE.equals(env.getUserData(RunContentDescriptor.REUSE_CONTENT_PROHIBITED)); } public void addAction(@NotNull final AnAction action) {