From 4c7c29fa4c96dc165cbe54be697381ec728fc019 Mon Sep 17 00:00:00 2001 From: Alexander Doroshko Date: Tue, 6 May 2014 17:10:32 +0400 Subject: [PATCH] Run/Debug buttons stay disabled, thread hanging if external tool configured as 'before launch task' fails to start. --- .../intellij/tools/AbstractToolBeforeRunTask.java | 11 +++++------ platform/lang-impl/src/com/intellij/tools/Tool.java | 13 ++++--------- .../src/com/intellij/tools/ToolAction.java | 12 ++++++------ 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/tools/AbstractToolBeforeRunTask.java b/platform/lang-impl/src/com/intellij/tools/AbstractToolBeforeRunTask.java index 2e58ce737759..d2d80aaeb05a 100644 --- a/platform/lang-impl/src/com/intellij/tools/AbstractToolBeforeRunTask.java +++ b/platform/lang-impl/src/com/intellij/tools/AbstractToolBeforeRunTask.java @@ -84,18 +84,17 @@ public abstract class AbstractToolBeforeRunTasktrue if task has been started successfully - */ - public boolean execute(AnActionEvent event, DataContext dataContext, long executionId, @Nullable final ProcessListener processListener) { + public void execute(AnActionEvent event, DataContext dataContext, long executionId, @Nullable final ProcessListener processListener) { final Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) { - return false; + return; } + FileDocumentManager.getInstance().saveAllDocuments(); try { if (isUseConsole()) { @@ -294,12 +292,11 @@ public class Tool implements SchemeElement { } } }); - return true; } else { GeneralCommandLine commandLine = createCommandLine(dataContext); if (commandLine == null) { - return false; + return; } OSProcessHandler handler = new OSProcessHandler(commandLine.createProcess(), commandLine.getCommandLineString()); handler.addProcessListener(new ToolProcessAdapter(project, synchronizeAfterExecution(), getName())); @@ -307,13 +304,11 @@ public class Tool implements SchemeElement { handler.addProcessListener(processListener); } handler.startNotify(); - return true; } } catch (ExecutionException ex) { ExecutionErrorDialog.show(ex, ToolsBundle.message("tools.process.start.error"), project); } - return false; } @Nullable diff --git a/platform/lang-impl/src/com/intellij/tools/ToolAction.java b/platform/lang-impl/src/com/intellij/tools/ToolAction.java index d02d0c26c8ed..dce2a45237e0 100644 --- a/platform/lang-impl/src/com/intellij/tools/ToolAction.java +++ b/platform/lang-impl/src/com/intellij/tools/ToolAction.java @@ -69,14 +69,14 @@ public class ToolAction extends AnAction implements DumbAware { runTool(actionId, context, null, 0L, null); } - /** - * @return true if task has been started successfully - */ - static boolean runTool(String actionId, DataContext context, @Nullable AnActionEvent e, long executionId, @Nullable ProcessListener processListener) { + static void runTool(String actionId, + DataContext context, + @Nullable AnActionEvent e, + long executionId, + @Nullable ProcessListener processListener) { Tool tool = findTool(actionId, context); if (tool != null) { - return tool.execute(e, new HackyDataContext(context), executionId, processListener); + tool.execute(e, new HackyDataContext(context), executionId, processListener); } - return false; } }