mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-88111 Before Run->Another configuration: do not reuse tool window's content or allow switching between them somehow
This commit is contained in:
@@ -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<Boolean> REUSE_CONTENT_PROHIBITED = Key.create("ReuseContentProhibited");
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.execution.ui.RunContentDescriptor");
|
||||
|
||||
private ExecutionConsole myExecutionConsole;
|
||||
|
||||
@@ -133,7 +133,13 @@ public class ExecutionManagerImpl extends ExecutionManager implements ProjectCom
|
||||
public void run() {
|
||||
for (BeforeRunTask task : activeTasks) {
|
||||
BeforeRunTaskProvider<BeforeRunTask> 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);
|
||||
}
|
||||
|
||||
+10
-1
@@ -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<RunConfigurationBeforeRunProvider.RunConfigurableB
|
||||
if (runner == null)
|
||||
return false;
|
||||
final ExecutionEnvironment environment = new ExecutionEnvironment(runner, settings, myProject);
|
||||
environment.putUserData(RunContentDescriptor.REUSE_CONTENT_PROHIBITED, env.getUserData(RunContentDescriptor.REUSE_CONTENT_PROHIBITED));
|
||||
if (!ExecutionTargetManager.canRun(settings, env.getExecutionTarget())) {
|
||||
return false;
|
||||
}
|
||||
@@ -309,6 +311,13 @@ extends BeforeRunTaskProvider<RunConfigurationBeforeRunProvider.RunConfigurableB
|
||||
mySettings = settings;
|
||||
init();
|
||||
myJBList.setSelectedValue(mySelectedSettings, true);
|
||||
FontMetrics fontMetrics = myJBList.getFontMetrics(myJBList.getFont());
|
||||
int maxWidth = fontMetrics.stringWidth("m") * 30;
|
||||
for (RunnerAndConfigurationSettings setting : settings) {
|
||||
maxWidth = Math.max(fontMetrics.stringWidth(setting.getConfiguration().getName()), maxWidth);
|
||||
}
|
||||
maxWidth += 24;//icon and gap
|
||||
myJBList.setPreferredSize(new Dimension(maxWidth, myJBList.getPreferredSize().height));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -347,7 +356,7 @@ extends BeforeRunTaskProvider<RunConfigurationBeforeRunProvider.RunConfigurableB
|
||||
|
||||
@Nullable
|
||||
RunnerAndConfigurationSettings getSelectedSettings() {
|
||||
return mySelectedSettings;
|
||||
return isOK() ? mySelectedSettings : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,10 +18,7 @@ package com.intellij.execution.runners;
|
||||
import com.intellij.diagnostic.logging.LogConsoleManagerBase;
|
||||
import com.intellij.diagnostic.logging.LogFilesManager;
|
||||
import com.intellij.diagnostic.logging.OutputFileUtil;
|
||||
import com.intellij.execution.DefaultExecutionResult;
|
||||
import com.intellij.execution.ExecutionManager;
|
||||
import com.intellij.execution.ExecutionResult;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.configurations.RunConfigurationBase;
|
||||
import com.intellij.execution.configurations.RunProfile;
|
||||
import com.intellij.execution.impl.ConsoleViewImpl;
|
||||
@@ -53,7 +50,7 @@ public class RunContentBuilder extends LogConsoleManagerBase {
|
||||
|
||||
private final ProgramRunner myRunner;
|
||||
private final ArrayList<AnAction> myRunnerActions = new ArrayList<AnAction>();
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user