From 2dc138b5fe757bd363c219939fdfd9f917967f74 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Fri, 30 Jan 2015 16:26:45 +0300 Subject: [PATCH] cleanup & exception fix --- .../console/RunIdeConsoleAction.java | 48 ++++++++++++------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java b/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java index be475d17559e..1ea3011eea36 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java +++ b/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java @@ -60,6 +60,7 @@ import java.util.Map; */ public class RunIdeConsoleAction extends ActionGroup implements DumbAware { + private static final String DEFAULT_FILE_NAME = "ide-scripting"; private static final Key> CONSOLE_VIEW_KEY = Key.create("CONSOLE_VIEW_KEY"); private static final Key HISTORY_CONTROLLER_KEY = Key.create("HISTORY_CONTROLLER_KEY"); @@ -77,6 +78,16 @@ public class RunIdeConsoleAction extends ActionGroup implements DumbAware { e.getPresentation().setEnabledAndVisible(enabled); } + @Override + public void actionPerformed(AnActionEvent e) { + if (ourEngines.size() == 1) { + runConsole(e, ourEngines.values().iterator().next()); + } + else { + super.actionPerformed(e); + } + } + @NotNull @Override public AnAction[] getChildren(@Nullable AnActionEvent e) { @@ -88,26 +99,31 @@ public class RunIdeConsoleAction extends ActionGroup implements DumbAware { return new AnAction(engine.getLanguageName()) { @Override public void actionPerformed(@NotNull AnActionEvent e) { - Project project = e.getProject(); - if (project == null) return; - List extensions = engine.getExtensions(); - try { - String pathName = PathUtil.makeFileName(engine.getLanguageName(), ContainerUtil.getFirstItem(extensions)); - VirtualFile virtualFile = IdeConsoleRootType.getInstance().findFile(project, pathName, ScratchFileService.Option.create_if_missing); - if (virtualFile != null) { - FileEditorManager.getInstance(project).openFile(virtualFile, true); - } - } - catch (IOException ignored) { - } + runConsole(e, engine); } }; } }); } + protected void runConsole(@NotNull AnActionEvent e, @NotNull ScriptEngineFactory engine) { + Project project = e.getProject(); + if (project == null) return; + List extensions = engine.getExtensions(); + try { + String pathName = PathUtil.makeFileName(DEFAULT_FILE_NAME, ContainerUtil.getFirstItem(extensions)); + VirtualFile virtualFile = IdeConsoleRootType.getInstance().findFile(project, pathName, ScratchFileService.Option.create_if_missing); + if (virtualFile != null) { + FileEditorManager.getInstance(project).openFile(virtualFile, true); + } + } + catch (IOException ignored) { + } + } + public static void configureConsole(@NotNull VirtualFile file, @NotNull FileEditorManager source) { - ScriptEngine engine = createScriptEngine(file); + ScriptEngine engine = findScriptEngine(file); + if (engine == null) return; //new ConsoleHistoryController(IdeConsoleRootType.getInstance(), engine.getFactory().getLanguageName()) MyRunAction runAction = new MyRunAction(engine); for (FileEditor fileEditor : source.getEditors(file)) { @@ -117,14 +133,14 @@ public class RunIdeConsoleAction extends ActionGroup implements DumbAware { } } - @NotNull - private static ScriptEngine createScriptEngine(VirtualFile file) { + @Nullable + private static ScriptEngine findScriptEngine(@NotNull VirtualFile file) { for (ScriptEngineFactory factory : ourEngines.values()) { if (factory.getExtensions().contains(file.getExtension())) { return factory.getScriptEngine(); } } - throw new AssertionError(file); + return null; } private static void executeQuery(@NotNull Project project,