mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge branch 'master' of git.labs.intellij.net:idea/community
This commit is contained in:
@@ -16,16 +16,20 @@
|
||||
|
||||
package com.intellij.execution.runners;
|
||||
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.configurations.RunProfile;
|
||||
import com.intellij.execution.configurations.RunnerSettings;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.configurations.ConfigurationPerRunnerSettings;
|
||||
import com.intellij.execution.configurations.RunProfile;
|
||||
import com.intellij.execution.configurations.RunProfileState;
|
||||
import com.intellij.execution.configurations.RunnerSettings;
|
||||
import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
|
||||
/**
|
||||
* @author spleaner
|
||||
@@ -36,6 +40,7 @@ public class ExecutionEnvironment {
|
||||
private RunnerSettings myRunnerSettings;
|
||||
private ConfigurationPerRunnerSettings myConfigurationSettings;
|
||||
|
||||
@TestOnly
|
||||
public ExecutionEnvironment() {
|
||||
}
|
||||
|
||||
@@ -62,10 +67,21 @@ public class ExecutionEnvironment {
|
||||
return myRunProfile;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Project getProject() {
|
||||
return PlatformDataKeys.PROJECT.getData(myDataContext);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public DataContext getDataContext() {
|
||||
return myDataContext;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public RunContentDescriptor getContentToReuse() {
|
||||
return GenericProgramRunner.CONTENT_TO_REUSE_DATA_KEY.getData(myDataContext);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public RunnerSettings getRunnerSettings() {
|
||||
return myRunnerSettings;
|
||||
|
||||
@@ -26,9 +26,7 @@ import com.intellij.execution.ui.RunContentDescriptor;
|
||||
import com.intellij.history.LocalHistory;
|
||||
import com.intellij.history.LocalHistoryConfiguration;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.DataKey;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.options.SettingsEditor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -75,15 +73,14 @@ public abstract class GenericProgramRunner<Settings extends JDOMExternalizable>
|
||||
|
||||
public void execute(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env, @Nullable final Callback callback)
|
||||
throws ExecutionException {
|
||||
final DataContext dataContext = env.getDataContext();
|
||||
final RunProfile profile = env.getRunProfile();
|
||||
|
||||
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
|
||||
final Project project = env.getProject();
|
||||
if (project == null) {
|
||||
return;
|
||||
}
|
||||
final RunContentDescriptor reuseContent =
|
||||
ExecutionManager.getInstance(project).getContentManager().getReuseContent(executor, dataContext);
|
||||
ExecutionManager.getInstance(project).getContentManager().getReuseContent(executor, env.getContentToReuse());
|
||||
|
||||
final RunProfileState state = env.getState(executor);
|
||||
if (state == null) {
|
||||
|
||||
@@ -34,12 +34,16 @@ public interface RunContentManager {
|
||||
/**
|
||||
* to reduce number of open contents RunContentManager reuses
|
||||
* some of them during showRunContent (for ex. if a process was stopped)
|
||||
*
|
||||
* getReuseContent returns content that will be reused by showRunContent
|
||||
* @param dataContext
|
||||
* @return
|
||||
* @return content that will be reused by showRunContent
|
||||
*/
|
||||
@Nullable
|
||||
RunContentDescriptor getReuseContent(Executor requestor, @Nullable RunContentDescriptor contentToReuse);
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #getReuseContent(com.intellij.execution.Executor, RunContentDescriptor)}
|
||||
*/
|
||||
@Deprecated
|
||||
@Nullable
|
||||
RunContentDescriptor getReuseContent(Executor requestor, DataContext dataContext);
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -18,25 +18,21 @@ package com.intellij.execution;
|
||||
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationException;
|
||||
import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl;
|
||||
import com.intellij.execution.impl.RunManagerImpl;
|
||||
import com.intellij.execution.impl.RunDialog;
|
||||
import com.intellij.execution.impl.RunManagerImpl;
|
||||
import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.actionSystem.impl.SimpleDataContext;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.ui.LayeredIcon;
|
||||
import com.intellij.ide.DataManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* @author spleaner
|
||||
@@ -58,8 +54,6 @@ public class ExecutionUtil {
|
||||
ProgramRunner runner = getRunner(executor.getId(), configuration);
|
||||
LOG.assertTrue(runner != null, "Runner MUST not be null!");
|
||||
|
||||
final Component component = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext);
|
||||
LOG.assertTrue(component != null, "component MUST not be null!");
|
||||
if (!RunManagerImpl.canRunConfiguration(configuration, executor)) {
|
||||
final boolean result = RunDialog.editConfiguration(project, configuration, "Edit configuration", executor.getActionName(), executor.getIcon());
|
||||
if (!result) {
|
||||
@@ -91,11 +85,6 @@ public class ExecutionUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private static DataContext recreateDataContext(final Project project, final Component component) {
|
||||
if (component != null && component.isDisplayable()) return DataManager.getInstance().getDataContext(component);
|
||||
return SimpleDataContext.getProjectContext(project);
|
||||
}
|
||||
|
||||
public static Icon getConfigurationIcon(final Project project, final RunnerAndConfigurationSettings settings, final boolean invalid) {
|
||||
final RunManager runManager = RunManager.getInstance(project);
|
||||
RunConfiguration configuration = settings.getConfiguration();
|
||||
|
||||
@@ -312,13 +312,15 @@ public class RunContentManagerImpl implements RunContentManager, Disposable {
|
||||
@Nullable
|
||||
public RunContentDescriptor getReuseContent(final Executor requestor, DataContext dataContext) {
|
||||
if(ApplicationManager.getApplication().isUnitTestMode()) return null;
|
||||
RunContentDescriptor runContentDescriptor = GenericProgramRunner.CONTENT_TO_REUSE_DATA_KEY.getData(dataContext);
|
||||
return getReuseContent(requestor, GenericProgramRunner.CONTENT_TO_REUSE_DATA_KEY.getData(dataContext));
|
||||
}
|
||||
|
||||
if(runContentDescriptor != null) return runContentDescriptor;
|
||||
public RunContentDescriptor getReuseContent(Executor requestor, @Nullable RunContentDescriptor contentToReuse) {
|
||||
if(ApplicationManager.getApplication().isUnitTestMode()) return null;
|
||||
if (contentToReuse != null) return contentToReuse;
|
||||
|
||||
final ContentManager contentManager = getContentManagerForRunner(requestor);
|
||||
|
||||
return chooseReuseContentForDescriptor(contentManager, runContentDescriptor);
|
||||
return chooseReuseContentForDescriptor(contentManager, contentToReuse);
|
||||
}
|
||||
|
||||
public RunContentDescriptor findContentDescriptor(final Executor requestor, final ProcessHandler handler) {
|
||||
|
||||
@@ -25,12 +25,11 @@ import com.intellij.execution.filters.TextConsoleBuilderFactory;
|
||||
import com.intellij.execution.process.OSProcessHandler;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.process.ProcessTerminatedListener;
|
||||
import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.ide.IdeEventQueue;
|
||||
import com.intellij.ide.impl.DataManagerImpl;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -72,7 +71,7 @@ public class ToolRunProfile implements ModuleRunProfile{
|
||||
}
|
||||
|
||||
public RunProfileState getState(@NotNull final Executor executor, @NotNull final ExecutionEnvironment env) {
|
||||
final Project project = PlatformDataKeys.PROJECT.getData(env.getDataContext());
|
||||
final Project project = env.getProject();
|
||||
if (project == null || myCommandLine == null) {
|
||||
// can return null if creation of cmd line has been cancelled
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user