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 dd1755de7129..e27eb2bc4298 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 @@ -19,7 +19,6 @@ import com.intellij.ide.plugins.IdeaPluginDescriptor; import com.intellij.ide.plugins.PluginManagerMain; import com.intellij.ide.plugins.RepositoryHelper; import com.intellij.ide.util.PropertiesComponent; -import com.intellij.openapi.extensions.PluginId; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileTypes.FileTypeFactory; import com.intellij.openapi.fileTypes.PlainTextFileType; @@ -32,9 +31,6 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.EditorNotificationPanel; import com.intellij.ui.EditorNotifications; -import com.intellij.util.ContentsUtil; -import com.intellij.util.Function; -import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -116,34 +112,10 @@ public class PluginAdvertiserEditorNotificationProvider extends EditorNotificati panel.createActionLabel("Install plugins", new Runnable() { @Override public void run() { - ProgressManager.getInstance().run(new Task.Modal(null, "Search for plugins in repository", true) { - private final Set myPlugins = new HashSet(); - private List myAllPlugins; - - @Override - public void run(@NotNull ProgressIndicator indicator) { - try { - myAllPlugins = RepositoryHelper.loadPlugins(indicator); - for (IdeaPluginDescriptor loadedPlugin : myAllPlugins) { - if (plugins.contains(new PluginsAdvertiser.Plugin(loadedPlugin.getPluginId(), null, false))) { - myPlugins.add(PluginDownloader.createDownloader(loadedPlugin)); - } - } - } - catch (Exception ignore) { - } - } - - @Override - public void onSuccess() { - final PluginsAdvertiserDialog advertiserDialog = - new PluginsAdvertiserDialog(null, - myPlugins.toArray(new PluginDownloader[myPlugins.size()]), - PluginManagerMain.mapToPluginIds(myAllPlugins)); - if (advertiserDialog.showAndGet()) { - myEnabledExtensions.add(extension); - myNotifications.updateAllNotifications(); - } + installAndEnablePlugins(plugins, new Runnable() { + public void run() { + myEnabledExtensions.add(extension); + myNotifications.updateAllNotifications(); } }); } @@ -182,6 +154,38 @@ public class PluginAdvertiserEditorNotificationProvider extends EditorNotificati return panel; } + private static void installAndEnablePlugins(final Set plugins, final Runnable onSuccess) { + ProgressManager.getInstance().run(new Task.Modal(null, "Search for plugins in repository", true) { + private final Set myPlugins = new HashSet(); + private List myAllPlugins; + + @Override + public void run(@NotNull ProgressIndicator indicator) { + try { + myAllPlugins = RepositoryHelper.loadPlugins(indicator); + for (IdeaPluginDescriptor loadedPlugin : myAllPlugins) { + if (plugins.contains(new PluginsAdvertiser.Plugin(loadedPlugin.getPluginId(), null, false))) { + myPlugins.add(PluginDownloader.createDownloader(loadedPlugin)); + } + } + } + catch (Exception ignore) { + } + } + + @Override + public void onSuccess() { + final PluginsAdvertiserDialog advertiserDialog = + new PluginsAdvertiserDialog(null, + myPlugins.toArray(new PluginDownloader[myPlugins.size()]), + PluginManagerMain.mapToPluginIds(myAllPlugins)); + if (advertiserDialog.showAndGet()) { + onSuccess.run(); + } + } + }); + } + private static boolean hasNonBundledPlugin(Set plugins) { for (PluginsAdvertiser.Plugin plugin : plugins) { if (!plugin.myBundled) return true;