From 80d9d5821e97eb939dac9d11b4e9180ec5cdf514 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 22 Oct 2013 15:59:25 +0200 Subject: [PATCH] plugins advertisement: suggest to restart when only enable is requested --- .../ide/plugins/ActionInstallPlugin.java | 2 +- .../ide/plugins/PluginManagerMain.java | 9 +++++---- ...inAdvertiserEditorNotificationProvider.java | 2 +- .../PluginsAdvertiserDialog.java | 18 ++++++++++++------ 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java b/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java index a72187b97ef0..7d01ea2ca91d 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java @@ -153,7 +153,7 @@ public class ActionInstallPlugin extends AnAction implements DumbAware { } if (needToRestart) { - PluginManagerMain.notifyPluginsWereInstalled(list.size() == 1 ? list.get(0).getName() : null); + PluginManagerMain.notifyPluginsWereInstalled(list.size() == 1 ? list.get(0).getName() : null, null); } } } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java index 671ae6fd2ceb..5c80c011c7cc 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerMain.java @@ -32,6 +32,7 @@ import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.*; import com.intellij.openapi.project.DumbAwareAction; +import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.updateSettings.impl.PluginDownloader; import com.intellij.openapi.updateSettings.impl.UpdateChecker; @@ -520,13 +521,13 @@ public abstract class PluginManagerMain implements Disposable { } - public static void notifyPluginsWereInstalled(@Nullable String pluginName) { + public static void notifyPluginsWereInstalled(@Nullable String pluginName, final Project project) { notifyPluginsWereUpdated(pluginName != null ? "Plugin \'" + pluginName + "\' was successfully installed" - : "Plugins were installed"); + : "Plugins were installed", project); } - public static void notifyPluginsWereUpdated(final String title) { + public static void notifyPluginsWereUpdated(final String title, final Project project) { final ApplicationEx app = ApplicationManagerEx.getApplicationEx(); final boolean restartCapable = app.isRestartCapable(); String message = @@ -550,7 +551,7 @@ public abstract class PluginManagerMain implements Disposable { app.exit(true); } } - }).notify(null); + }).notify(project); } protected class SortByStatusAction extends ToggleAction { diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java index d2cc3244c620..3e86a83e3ecf 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java @@ -89,7 +89,7 @@ public class PluginAdvertiserEditorNotificationProvider extends EditorNotificati myEnabledExtensions.add(extension); PluginManagerCore.enablePlugin(disabledPlugin.getPluginId().getIdString()); myNotifications.updateAllNotifications(); - PluginManagerMain.notifyPluginsWereUpdated("Plugin was successfully enabled"); + PluginManagerMain.notifyPluginsWereUpdated("Plugin was successfully enabled", myProject); } }); } else { diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiserDialog.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiserDialog.java index 8b7d148f2012..b712bf3b9688 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiserDialog.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiserDialog.java @@ -38,12 +38,14 @@ import java.util.Set; public class PluginsAdvertiserDialog extends DialogWrapper { private static final Logger LOG = Logger.getInstance("#" + PluginsAdvertiserDialog.class.getName()); + @Nullable private final Project myProject; private final PluginDownloader[] myUploadedPlugins; private final List myAllPlugins; private final HashSet mySkippedPlugins = new HashSet(); PluginsAdvertiserDialog(@Nullable Project project, PluginDownloader[] plugins, List allPlugins) { super(project); + myProject = project; myUploadedPlugins = plugins; myAllPlugins = allPlugins; setTitle("Choose Plugins to Install or Enable"); @@ -84,13 +86,14 @@ public class PluginsAdvertiserDialog extends DialogWrapper { } } } + final Runnable notifyRunnable = new Runnable() { + @Override + public void run() { + PluginManagerMain.notifyPluginsWereInstalled(null, myProject); + } + }; try { - PluginManagerMain.downloadPlugins(nodes, myAllPlugins, new Runnable() { - @Override - public void run() { - PluginManagerMain.notifyPluginsWereInstalled(null); - } - }, null); + PluginManagerMain.downloadPlugins(nodes, myAllPlugins, notifyRunnable, null); } catch (IOException e) { LOG.error(e); @@ -98,6 +101,9 @@ public class PluginsAdvertiserDialog extends DialogWrapper { for (IdeaPluginDescriptor pluginDescriptor : pluginsToEnable) { PluginManagerCore.enablePlugin(pluginDescriptor.getPluginId().getIdString()); } + if (nodes.isEmpty()) { + notifyRunnable.run(); + } super.doOKAction(); } }