/*
* Copyright 2010 Jon S Akhtar (Sylvanaar)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sylvanaar.idea.Lua.run;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.ExecutionResult;
import com.intellij.execution.Executor;
import com.intellij.execution.configurations.ConfigurationPerRunnerSettings;
import com.intellij.execution.configurations.RunnerSettings;
import com.intellij.execution.filters.TextConsoleBuilder;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.ui.ConsoleView;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.sylvanaar.idea.Lua.KahLuaInterpreterWindowFactory;
import org.jetbrains.annotations.NotNull;
/**
* Created by IntelliJ IDEA.
* User: Jon S Akhtar
* Date: Aug 28, 2010
* Time: 6:35:19 PM
*/
public class KahluaCommandLineState extends LuaCommandLineState {
private static final Logger log = Logger.getInstance("Lua.KahluaCommandLineState");
public KahluaCommandLineState(LuaRunConfiguration runConfiguration, ExecutionEnvironment env) {
super(runConfiguration, env);
}
public ExecutionResult execute(@NotNull final Executor executor,
@NotNull ProgramRunner runner) throws ExecutionException {
log.info("execute " + executor.getActionName());
final ProcessHandler processHandler = startProcess();
final TextConsoleBuilder builder = getConsoleBuilder();
final ConsoleView console = builder != null ? builder.getConsole() : null;
if (console != null) {
console.attachToProcess(processHandler);
}
VirtualFile file = LocalFileSystem.getInstance().findFileByPath(getRunConfiguration().getScriptName());
final String text;
if (file != null) {
text = FileDocumentManager.getInstance().getDocument(file).getText();
} else text = "";
if (KahLuaInterpreterWindowFactory.INSTANCE != null) {
KahLuaInterpreterWindowFactory.WINDOW
.activate(KahLuaInterpreterWindowFactory.INSTANCE.getRunnableExecution(text), true);
}
return new KahluaExecutionResult(console, createActions(console, processHandler, executor));
}
@Override
protected ProcessHandler startProcess() throws ExecutionException {
log.info("startProcess");
return new KahluaProcessHandler();
}
@Override
public RunnerSettings getRunnerSettings() {
return null;
}
@Override
public ConfigurationPerRunnerSettings getConfigurationSettings() {
return null;
}
}