package jetbrains.mps.execution.configurations.implementation.plugin.plugin;
/*Generated by MPS */
import jetbrains.mps.debug.api.run.DebuggerRunProfileState;
import com.intellij.execution.configurations.RunProfileState;
import org.jetbrains.annotations.NotNull;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.Executor;
import com.intellij.execution.configurations.ConfigurationPerRunnerSettings;
import com.intellij.execution.configurations.RunnerSettings;
import org.jetbrains.annotations.Nullable;
import com.intellij.execution.ExecutionResult;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.ExecutionException;
import com.intellij.openapi.project.Project;
import com.intellij.execution.ui.ConsoleView;
import jetbrains.mps.execution.api.configurations.ConsoleCreator;
import jetbrains.mps.ide.actions.StandaloneMPSStackTraceFilter;
import org.jetbrains.mps.openapi.model.SNodeReference;
import com.intellij.execution.process.ProcessHandler;
import jetbrains.mps.baseLanguage.execution.api.Java_Command;
import jetbrains.mps.ide.project.ProjectHelper;
import jetbrains.mps.execution.api.configurations.DefaultExecutionResult;
import jetbrains.mps.execution.api.configurations.DefaultExecutionConsole;
import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes;
import jetbrains.mps.debug.api.run.IDebuggerConfiguration;
import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.executors.DefaultDebugExecutor;
public class Java_Configuration_RunProfileState extends DebuggerRunProfileState implements RunProfileState {
@NotNull
private final Java_Configuration myRunConfiguration;
@NotNull
private final ExecutionEnvironment myEnvironment;
public Java_Configuration_RunProfileState(@NotNull Java_Configuration configuration, @NotNull Executor executor, @NotNull ExecutionEnvironment environment) {
myRunConfiguration = configuration;
myEnvironment = environment;
}
public ConfigurationPerRunnerSettings getConfigurationSettings() {
return null;
}
public RunnerSettings getRunnerSettings() {
return null;
}
@Nullable
public ExecutionResult execute(Executor executor, @NotNull ProgramRunner runner) throws ExecutionException {
Project project = myEnvironment.getProject();
ConsoleView console = ConsoleCreator.createConsoleView(project, false);
console.addMessageFilter(new StandaloneMPSStackTraceFilter(project));
SNodeReference pointer = myRunConfiguration.getNode().getNode();
if (pointer == null) {
console.dispose();
throw new ExecutionException("No node selected.");
}
{
ProcessHandler _processHandler = new Java_Command().setDebuggerSettings_String(myDebuggerSettings.getCommandLine(true)).createProcess(myRunConfiguration.getRunParameters().getJavaRunParameters(), pointer, ProjectHelper.getProjectRepository(project));
final ConsoleView _consoleView = console;
_consoleView.attachToProcess(_processHandler);
return new DefaultExecutionResult(_processHandler, new DefaultExecutionConsole(_consoleView.getComponent(), new _FunctionTypes._void_P0_E0() {
public void invoke() {
_consoleView.dispose();
}
}));
}
}
@NotNull
public IDebuggerConfiguration getDebuggerConfiguration() {
return Java_Command.getDebuggerConfiguration();
}
public static boolean canExecute(String executorId) {
if (DefaultRunExecutor.EXECUTOR_ID.equals(executorId)) {
return true;
}
if (DefaultDebugExecutor.EXECUTOR_ID.equals(executorId)) {
return true;
}
return false;
}
}