blob: 4d30fa29a3b3d281878c3db05eeac8554bcab601 [file] [log] [blame]
package com.jetbrains.python.edu;
import com.intellij.execution.Location;
import com.intellij.execution.RunManagerEx;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.executors.DefaultRunExecutor;
import com.intellij.execution.runners.ExecutionUtil;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
import com.jetbrains.python.PythonFileType;
import org.jetbrains.annotations.NotNull;
/**
* @author traff
*/
public class PyRunCurrentFileAction extends AnAction {
public PyRunCurrentFileAction() {
getTemplatePresentation().setIcon(AllIcons.Actions.Execute);
}
@Override
public void update(AnActionEvent e) {
Presentation presentation = e.getPresentation();
final ConfigurationContext context = ConfigurationContext.getFromContext(e.getDataContext());
Location location = context.getLocation();
if (location != null && location.getPsiElement().getContainingFile() != null && location.getPsiElement().getContainingFile().getFileType() == PythonFileType.INSTANCE) {
presentation.setEnabled(true);
presentation.setText("Run '" + location.getPsiElement().getContainingFile().getName() + "'");
}
}
@Override
public void actionPerformed(AnActionEvent e) {
final ConfigurationContext context = ConfigurationContext.getFromContext(e.getDataContext());
run(context);
}
public static void run(@NotNull ConfigurationContext context) {
RunnerAndConfigurationSettings configuration = context.findExisting();
final RunManagerEx runManager = (RunManagerEx)context.getRunManager();
if (configuration == null) {
configuration = context.getConfiguration();
if (configuration == null) {
return;
}
runManager.setTemporaryConfiguration(configuration);
}
runManager.setSelectedConfiguration(configuration);
ExecutionUtil.runConfiguration(configuration, DefaultRunExecutor.getRunExecutorInstance());
}
}