Merge branch 'master' of git.labs.intellij.net:idea/community

This commit is contained in:
irengrig
2010-02-02 15:52:12 +03:00
6 changed files with 40 additions and 33 deletions
@@ -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;