From d65d899f972e2d0af36e099d02fcde252f31d8c9 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Wed, 14 Apr 2010 13:12:15 +0400 Subject: [PATCH] cidr: build before run + refactoring run configurations: error balloons if cannot run instead of dialog boxes --- .../debugger/engine/DebugProcessImpl.java | 4 +- .../execution/applet/AppletConfiguration.java | 2 +- .../application/ApplicationConfiguration.java | 2 +- .../execution/runners/ExecutionUtil.java | 79 +++++++++++++++++++ .../runners/GenericProgramRunner.java | 2 +- .../execution/runners/ProgramRunnerUtil.java | 64 --------------- .../execution/ExecutorRegistryImpl.java | 2 +- ...cutionUtil.java => ProgramRunnerUtil.java} | 18 ++--- .../actions/BaseRunConfigurationAction.java | 4 +- .../actions/ChooseRunConfigurationAction.java | 18 ++--- .../actions/RunConfigurationAction.java | 2 +- .../execution/impl/RunConfigurable.java | 4 +- .../src/messages/ExecutionBundle.properties | 2 +- .../util/concurrency/FutureResult.java | 53 +++++++++++++ .../plugins/groovy/gant/GantRunner.java | 3 +- .../groovy/gradle/GradleScriptType.java | 3 +- .../runner/DefaultGroovyScriptRunner.java | 9 +-- .../runner/GroovyScriptRunConfiguration.java | 2 +- .../groovy/runner/GroovyScriptRunner.java | 3 +- .../intellij/execution/junit/TestClass.java | 2 +- .../intellij/execution/junit/TestMethod.java | 2 +- .../configuration/TestNGConfiguration.java | 2 +- 22 files changed, 173 insertions(+), 109 deletions(-) create mode 100644 platform/lang-api/src/com/intellij/execution/runners/ExecutionUtil.java delete mode 100644 platform/lang-api/src/com/intellij/execution/runners/ProgramRunnerUtil.java rename platform/lang-impl/src/com/intellij/execution/{ExecutionUtil.java => ProgramRunnerUtil.java} (89%) create mode 100644 platform/util/src/com/intellij/util/concurrency/FutureResult.java diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java index 395ae31245f8..9f1aa5ef1ffa 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/DebugProcessImpl.java @@ -56,7 +56,7 @@ import com.intellij.execution.process.ProcessEvent; import com.intellij.execution.process.ProcessListener; import com.intellij.execution.process.ProcessOutputTypes; import com.intellij.execution.runners.ProgramRunner; -import com.intellij.execution.runners.ProgramRunnerUtil; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.idea.ActionsBundle; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; @@ -1740,7 +1740,7 @@ public abstract class DebugProcessImpl implements DebugProcess { // this problem to the user SwingUtilities.invokeLater(new Runnable() { public void run() { - ProgramRunnerUtil.handleExecutionError(myProject, state.getRunnerSettings().getRunProfile(), e); + ExecutionUtil.handleExecutionError(myProject, state.getRunnerSettings().getRunProfile(), e); } }); } diff --git a/java/execution/impl/src/com/intellij/execution/applet/AppletConfiguration.java b/java/execution/impl/src/com/intellij/execution/applet/AppletConfiguration.java index 32792c3f7a31..37b27e4cbef9 100644 --- a/java/execution/impl/src/com/intellij/execution/applet/AppletConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/applet/AppletConfiguration.java @@ -231,7 +231,7 @@ public class AppletConfiguration extends ModuleBasedConfiguration 1024 * 32) { + type = NotificationDisplayType.STICKY_BALLOON; + message += "\n" + + "Command line is too long. In order to reduce its length classpath file can be used.
" + + "Would you like to enable classpath file mode for all run configurations of your project?
" + + "Enable"; + + listener = new NotificationListener() { + public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) { + PropertiesComponent.getInstance(project).setValue("dynamic.classpath", "true"); + notification.expire(); + } + }; + } + } + } + Notification n = new Notification(NOTIFICATION_GROUP_ID, title, message, NotificationType.ERROR, listener); + Notifications.Bus.notify(n, type, project); + } + + public static void handleExecutionError(final Project project, @NotNull final RunProfile runProfile, final ExecutionException e) { + handleExecutionError(project, runProfile.getName(), e); + } +} diff --git a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java index 30dcbc46cc8a..02b2d95a9247 100644 --- a/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java +++ b/platform/lang-api/src/com/intellij/execution/runners/GenericProgramRunner.java @@ -108,7 +108,7 @@ public abstract class GenericProgramRunner } } catch (ExecutionException e) { - ProgramRunnerUtil.handleExecutionError(project, profile, e); + ExecutionUtil.handleExecutionError(project, profile, e); } } }; diff --git a/platform/lang-api/src/com/intellij/execution/runners/ProgramRunnerUtil.java b/platform/lang-api/src/com/intellij/execution/runners/ProgramRunnerUtil.java deleted file mode 100644 index 1362af5b7213..000000000000 --- a/platform/lang-api/src/com/intellij/execution/runners/ProgramRunnerUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2000-2009 JetBrains s.r.o. - * - * 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.intellij.execution.runners; - -import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.ExecutionException; -import com.intellij.execution.RunCanceledByUserException; -import com.intellij.execution.configurations.RunProfile; -import com.intellij.execution.process.ProcessNotCreatedException; -import com.intellij.ide.util.PropertiesComponent; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.DialogWrapper; -import com.intellij.openapi.ui.Messages; - -/** - * @author spleaner - */ -public class ProgramRunnerUtil { - private static final Logger LOG = Logger.getInstance("com.intellij.execution.runners.ProgramRunnerUtil"); - - private ProgramRunnerUtil() { - } - - public static void handleExecutionError(final Project project, final RunProfile runProfile, final ExecutionException e) { - if (e instanceof RunCanceledByUserException) { - return; - } - - String message = ExecutionBundle.message("error.running.configuration.with.error.error.message", runProfile != null? runProfile.getName() : "Run profile", e.getMessage()); - if (ApplicationManager.getApplication().isUnitTestMode()) { - LOG.error(message); - } - else { - if (message.contains("87") && e instanceof ProcessNotCreatedException) { - final String commandLineString = ((ProcessNotCreatedException)e).getCommandLine().getCommandLineString(); - if (commandLineString.length() > 1024 * 32) { - if (Messages.showYesNoDialog(project, message + "\nCommand line is too long. In order to reduce its length classpath file can be used. Would you like to enable classpath file mode for all run configurations of your project?", ExecutionBundle.message("run.error.message.title"), Messages.getErrorIcon()) == - DialogWrapper.OK_EXIT_CODE) { - PropertiesComponent.getInstance(project).setValue("dynamic.classpath", "true"); - return; - } - } - } - Messages.showErrorDialog(project, message, ExecutionBundle.message("run.error.message.title")); - } - } - -} diff --git a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java index 5d8239c29a85..cd0020967024 100644 --- a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java @@ -190,7 +190,7 @@ public class ExecutorRegistryImpl extends ExecutorRegistry { return; } - ExecutionUtil.executeConfiguration(project, getConfiguration(project), myExecutor, dataContext); + ProgramRunnerUtil.executeConfiguration(project, getConfiguration(project), myExecutor, dataContext); } } } diff --git a/platform/lang-impl/src/com/intellij/execution/ExecutionUtil.java b/platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java similarity index 89% rename from platform/lang-impl/src/com/intellij/execution/ExecutionUtil.java rename to platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java index edcb446c5a37..63f187014830 100644 --- a/platform/lang-impl/src/com/intellij/execution/ExecutionUtil.java +++ b/platform/lang-impl/src/com/intellij/execution/ProgramRunnerUtil.java @@ -22,6 +22,7 @@ import com.intellij.execution.impl.RunDialog; import com.intellij.execution.impl.RunManagerImpl; import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl; import com.intellij.execution.runners.ExecutionEnvironment; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.execution.runners.ProgramRunner; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.diagnostic.Logger; @@ -37,12 +38,11 @@ import javax.swing.*; /** * @author spleaner */ -public class ExecutionUtil { - private static final Logger LOG = Logger.getInstance("#com.intellij.execution.ExecutionUtil"); - +public class ProgramRunnerUtil { + private static final Logger LOG = Logger.getInstance("#com.intellij.execution.ProgramRunnerUtil"); private static final Icon INVALID_CONFIGURATION = IconLoader.getIcon("/runConfigurations/invalidConfigurationLayer.png"); - private ExecutionUtil() { + private ProgramRunnerUtil() { } @Nullable @@ -75,13 +75,8 @@ public class ExecutionUtil { try { runner.execute(executor, new ExecutionEnvironment(runner, configuration, dataContext)); } - catch (RunCanceledByUserException e) { - // nothing - } - catch (ExecutionException e1) { - Messages.showErrorDialog(project, ExecutionBundle.message("error.running.configuration.with.error.error.message", - configuration.getName(), e1.getMessage()), - ExecutionBundle.message("run.error.message.title")); + catch (ExecutionException e) { + ExecutionUtil.handleExecutionError(project, configuration.getConfiguration(), e); } } @@ -115,5 +110,4 @@ public class ExecutionUtil { if (name.length() < symbols) return name; else return name.substring(0, symbols) + "..."; } - } diff --git a/platform/lang-impl/src/com/intellij/execution/actions/BaseRunConfigurationAction.java b/platform/lang-impl/src/com/intellij/execution/actions/BaseRunConfigurationAction.java index 954e8b72a148..e8344eefabbf 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/BaseRunConfigurationAction.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/BaseRunConfigurationAction.java @@ -17,7 +17,7 @@ package com.intellij.execution.actions; import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.ExecutionUtil; +import com.intellij.execution.ProgramRunnerUtil; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.LocatableConfiguration; @@ -202,7 +202,7 @@ public abstract class BaseRunConfigurationAction extends ActionGroup { public static String suggestRunActionName(final LocatableConfiguration configuration) { if (!configuration.isGeneratedName()) { - return "\"" + ExecutionUtil.shortenName(configuration.getName(), 0) + "\""; + return "\"" + ProgramRunnerUtil.shortenName(configuration.getName(), 0) + "\""; } else return "\"" + configuration.suggestedName() + "\""; } diff --git a/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationAction.java b/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationAction.java index 96f1676dd111..2d2ab18af240 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationAction.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/ChooseRunConfigurationAction.java @@ -92,7 +92,7 @@ public class ChooseRunConfigurationAction extends AnAction { } protected static boolean canRun(@NotNull final Executor executor, final RunnerAndConfigurationSettingsImpl settings) { - return ExecutionUtil.getRunner(executor.getId(), settings) != null; + return ProgramRunnerUtil.getRunner(executor.getId(), settings) != null; } @Nullable @@ -219,7 +219,7 @@ public class ChooseRunConfigurationAction extends AnAction { PropertiesComponent.getInstance().setValue("run.configuration.edit.ad", Boolean.toString(true)); if (RunDialog.editConfiguration(project, configuration, "Edit configuration settings", executor.getActionName(), executor.getIcon())) { RunManagerEx.getInstanceEx(project).setSelectedConfiguration(configuration); - ExecutionUtil.executeConfiguration(project, configuration, executor, DataManager.getInstance().getDataContext()); + ProgramRunnerUtil.executeConfiguration(project, configuration, executor, DataManager.getInstance().getDataContext()); } } @@ -364,7 +364,7 @@ public class ChooseRunConfigurationAction extends AnAction { @Override public void perform(@NotNull Project project, @NotNull Executor executor, @NotNull DataContext context) { RunManagerEx.getInstanceEx(project).setSelectedConfiguration(getValue()); - ExecutionUtil.executeConfiguration(project, getValue(), executor, DataManager.getInstance().getDataContext()); + ProgramRunnerUtil.executeConfiguration(project, getValue(), executor, DataManager.getInstance().getDataContext()); } @Override @@ -374,7 +374,7 @@ public class ChooseRunConfigurationAction extends AnAction { @Override public Icon getIcon() { - return ExecutionUtil.getConfigurationIcon(project, getValue()); + return ProgramRunnerUtil.getConfigurationIcon(project, getValue()); } @Override @@ -393,7 +393,7 @@ public class ChooseRunConfigurationAction extends AnAction { @Override public boolean available(Executor executor) { - return null != ExecutionUtil.getRunner(executor.getId(), getValue()); + return null != ProgramRunnerUtil.getRunner(executor.getId(), getValue()); } @Override @@ -497,7 +497,7 @@ public class ChooseRunConfigurationAction extends AnAction { final RunnerAndConfigurationSettings configuration = RunManager.getInstance(project).getSelectedConfiguration(); if (configuration instanceof RunnerAndConfigurationSettingsImpl) { if (canRun(executor, (RunnerAndConfigurationSettingsImpl) configuration)) { - ExecutionUtil.executeConfiguration(project, (RunnerAndConfigurationSettingsImpl) configuration, executor, DataManager.getInstance().getDataContext()); + ProgramRunnerUtil.executeConfiguration(project, (RunnerAndConfigurationSettingsImpl) configuration, executor, DataManager.getInstance().getDataContext()); } } } @@ -560,7 +560,7 @@ public class ChooseRunConfigurationAction extends AnAction { final ItemWrapper wrapper = new ItemWrapper(configuration) { @Override public Icon getIcon() { - return IconLoader.getTransparentIcon(ExecutionUtil.getConfigurationIcon(project, configuration), 0.3f); + return IconLoader.getTransparentIcon(ProgramRunnerUtil.getConfigurationIcon(project, configuration), 0.3f); } @Override @@ -577,7 +577,7 @@ public class ChooseRunConfigurationAction extends AnAction { public void perform(@NotNull Project project, @NotNull Executor executor, @NotNull DataContext context) { manager.setTemporaryConfiguration(configuration); RunManagerEx.getInstanceEx(project).setSelectedConfiguration(configuration); - ExecutionUtil.executeConfiguration(project, configuration, executor, DataManager.getInstance().getDataContext()); + ProgramRunnerUtil.executeConfiguration(project, configuration, executor, DataManager.getInstance().getDataContext()); } @Override @@ -710,7 +710,7 @@ public class ChooseRunConfigurationAction extends AnAction { final RunManagerEx manager = RunManagerEx.getInstanceEx(project); if (dynamic) manager.setTemporaryConfiguration(settings); manager.setSelectedConfiguration(settings); - ExecutionUtil.executeConfiguration(project, settings, executor, DataManager.getInstance().getDataContext()); + ProgramRunnerUtil.executeConfiguration(project, settings, executor, DataManager.getInstance().getDataContext()); } }); } diff --git a/platform/lang-impl/src/com/intellij/execution/actions/RunConfigurationAction.java b/platform/lang-impl/src/com/intellij/execution/actions/RunConfigurationAction.java index 58af540743d9..4d3f381c7cd7 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/RunConfigurationAction.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/RunConfigurationAction.java @@ -103,7 +103,7 @@ public class RunConfigurationAction extends ComboBoxAction implements DumbAware private static void setConfigurationIcon(final Presentation presentation, final RunnerAndConfigurationSettings settings, final Project project) { try { - presentation.setIcon(ExecutionUtil.getConfigurationIcon(project, settings)); + presentation.setIcon(ProgramRunnerUtil.getConfigurationIcon(project, settings)); } catch (IndexNotReadyException ignored) { } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java index 9a5def6c77b9..2c132a595fb9 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.java @@ -122,13 +122,13 @@ class RunConfigurable extends BaseConfigurable { String name = null; if (userObject instanceof SingleConfigurationConfigurable) { final SingleConfigurationConfigurable settings = (SingleConfigurationConfigurable)userObject; - setIcon(ExecutionUtil.getConfigurationIcon(getProject(), settings.getSettings(), !settings.isValid())); + setIcon(ProgramRunnerUtil.getConfigurationIcon(getProject(), settings.getSettings(), !settings.isValid())); configuration = settings.getConfiguration(); name = settings.getNameText(); } else if (userObject instanceof RunnerAndConfigurationSettingsImpl) { RunnerAndConfigurationSettingsImpl settings = (RunnerAndConfigurationSettingsImpl)userObject; - setIcon(ExecutionUtil.getConfigurationIcon(getProject(), settings)); + setIcon(ProgramRunnerUtil.getConfigurationIcon(getProject(), settings)); configuration = settings.getConfiguration(); name = configuration.getName(); } diff --git a/platform/platform-resources-en/src/messages/ExecutionBundle.properties b/platform/platform-resources-en/src/messages/ExecutionBundle.properties index 004a34265cee..e575a272b10b 100644 --- a/platform/platform-resources-en/src/messages/ExecutionBundle.properties +++ b/platform/platform-resources-en/src/messages/ExecutionBundle.properties @@ -29,7 +29,7 @@ choose.run.configuration.action.description=Open run/debug configurations dropdo perform.action.with.context.configuration.action.name={0} context configuration error.common.title=Error -error.running.configuration.with.error.error.message=Error running {0}: {1} +error.running.configuration.with.error.error.message=Error running {0} select.applet.policy.file.dialog.title=Select applet policy file choose.html.file.dialog.title=Choose HTML File diff --git a/platform/util/src/com/intellij/util/concurrency/FutureResult.java b/platform/util/src/com/intellij/util/concurrency/FutureResult.java new file mode 100644 index 000000000000..4b9bc638a4b0 --- /dev/null +++ b/platform/util/src/com/intellij/util/concurrency/FutureResult.java @@ -0,0 +1,53 @@ +package com.intellij.util.concurrency; + +import com.intellij.openapi.util.Ref; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.Semaphore; + +public class FutureResult implements Future { + private final Semaphore mySema = new Semaphore(0); + private volatile Ref myValue; + + public boolean cancel(boolean mayInterruptIfRunning) { + return false; + } + + public boolean isCancelled() { + return false; + } + + public boolean isDone() { + return mySema.availablePermits() > 0; + } + + public void set(T result) { + assert myValue == null; + + myValue = new Ref(result); + mySema.release(); + } + + public T get() throws InterruptedException, ExecutionException { + try { + mySema.acquire(); + return myValue.get(); + } + finally { + mySema.release(); + } + } + + public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { + try { + if (!mySema.tryAcquire(timeout, unit)) throw new TimeoutException(); + return myValue.get(); + } + finally { + mySema.release(); + } + } +} diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/GantRunner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/GantRunner.java index 4beead30ab70..95cea058623b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/GantRunner.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/gant/GantRunner.java @@ -17,6 +17,7 @@ package org.jetbrains.plugins.groovy.gant; import com.intellij.execution.CantRunException; import com.intellij.execution.configurations.JavaParameters; +import com.intellij.execution.configurations.RunProfile; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; @@ -45,7 +46,7 @@ public class GantRunner extends GroovyScriptRunner { } @Override - public boolean ensureRunnerConfigured(@Nullable Module module, final String confName, final Project project) { + public boolean ensureRunnerConfigured(@Nullable Module module, RunProfile profile, final Project project) { if (!(GantUtils.getSDKInstallPath(module, project).length() > 0)) { int result = Messages .showOkCancelDialog("Gant is not configured. Do you want to configure it?", "Configure Gant SDK", diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/gradle/GradleScriptType.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/gradle/GradleScriptType.java index d203e4f38104..ed3c848094a7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/gradle/GradleScriptType.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/gradle/GradleScriptType.java @@ -21,6 +21,7 @@ import com.intellij.execution.ExecutionException; import com.intellij.execution.Location; import com.intellij.execution.RunManagerEx; import com.intellij.execution.configurations.JavaParameters; +import com.intellij.execution.configurations.RunProfile; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.options.ShowSettingsUtil; @@ -146,7 +147,7 @@ public class GradleScriptType extends GroovyScriptType { } @Override - public boolean ensureRunnerConfigured(@Nullable Module module, String confName, final Project project) throws ExecutionException { + public boolean ensureRunnerConfigured(@Nullable Module module, RunProfile profile, final Project project) throws ExecutionException { if (GradleLibraryManager.getSdkHome(module, project) == null) { int result = Messages .showOkCancelDialog("Gradle is not configured. Do you want to configure it?", "Configure Gradle SDK", diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/DefaultGroovyScriptRunner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/DefaultGroovyScriptRunner.java index 774cd6f1c03c..305b0863d0bf 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/DefaultGroovyScriptRunner.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/DefaultGroovyScriptRunner.java @@ -20,6 +20,8 @@ import com.intellij.execution.CantRunException; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.ExecutionException; import com.intellij.execution.configurations.JavaParameters; +import com.intellij.execution.configurations.RunProfile; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.openapi.module.Module; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.io.FileUtil; @@ -46,16 +48,13 @@ public class DefaultGroovyScriptRunner extends GroovyScriptRunner { } @Override - public boolean ensureRunnerConfigured(@Nullable Module module, String confName, final Project project) throws ExecutionException { + public boolean ensureRunnerConfigured(@Nullable Module module, RunProfile profile, final Project project) throws ExecutionException { if (module == null) { throw new ExecutionException("Module is not specified"); } if (LibrariesUtil.getGroovyHomePath(module) == null) { - Messages.showErrorDialog(module.getProject(), - ExecutionBundle.message("error.running.configuration.with.error.error.message", confName, - "Groovy is not configured"), ExecutionBundle.message("run.error.message.title")); - + ExecutionUtil.handleExecutionError(project, profile, new ExecutionException("Groovy is not configured")); ModulesConfigurator.showDialog(module.getProject(), module.getName(), ClasspathEditor.NAME, false); return false; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfiguration.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfiguration.java index ad0b1e7df128..e45a3acd39d6 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfiguration.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/runner/GroovyScriptRunConfiguration.java @@ -164,7 +164,7 @@ public class GroovyScriptRunConfiguration extends ModuleBasedConfiguration