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()); } }