diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java index 934de59ec8c2..80011b284c7b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java @@ -20,6 +20,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.stream.JsonReader; import com.intellij.ide.plugins.IdeaPluginDescriptor; +import com.intellij.ide.plugins.PluginManager; import com.intellij.ide.plugins.PluginManagerCore; import com.intellij.ide.plugins.RepositoryHelper; import com.intellij.notification.*; @@ -177,21 +178,24 @@ public class PluginsAdvertiser implements StartupActivity { indicator.setText("Searching for plugin supporting \'" + feature.getImplementationName() + "\'"); final List pluginId = retrieve(feature); if (pluginId != null) { - //do not suggest to download disabled plugins - final List disabledPlugins = PluginManagerCore.getDisabledPlugins(); - for (PluginId id : pluginId) { - if (!disabledPlugins.contains(id.getIdString())) { - ids.add(id); - } - } + ids.addAll(pluginId); } indicator.setFraction(((double) idx++) / unknownFeatures.size()); } try { + final List disabledPlugins = PluginManagerCore.getDisabledPlugins(); + //include disabled plugins + for (PluginId id : ids) { + final IdeaPluginDescriptor plugin = PluginManager.getPlugin(id); + if (plugin != null) { + myPlugins.add(PluginDownloader.createDownloader(plugin)); + } + } myAllPlugins = RepositoryHelper.loadPluginsFromRepository(indicator); for (IdeaPluginDescriptor loadedPlugin : myAllPlugins) { - if (ids.contains(loadedPlugin.getPluginId())) { + final PluginId pluginId = loadedPlugin.getPluginId(); + if (ids.contains(pluginId) && !disabledPlugins.contains(pluginId.getIdString())) { myPlugins.add(PluginDownloader.createDownloader(loadedPlugin)); } } 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 a092d2a5b850..8b7d148f2012 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 @@ -15,10 +15,9 @@ */ package com.intellij.openapi.updateSettings.impl.pluginsAdvertisement; -import com.intellij.ide.plugins.IdeaPluginDescriptor; -import com.intellij.ide.plugins.PluginManagerMain; -import com.intellij.ide.plugins.PluginNode; +import com.intellij.ide.plugins.*; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.extensions.PluginId; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.updateSettings.impl.DetectedPluginsPanel; @@ -47,7 +46,7 @@ public class PluginsAdvertiserDialog extends DialogWrapper { super(project); myUploadedPlugins = plugins; myAllPlugins = allPlugins; - setTitle("Choose Plugins to Install"); + setTitle("Choose Plugins to Install or Enable"); init(); } @@ -70,12 +69,18 @@ public class PluginsAdvertiserDialog extends DialogWrapper { @Override protected void doOKAction() { + final Set pluginsToEnable = new HashSet(); final List nodes = new ArrayList(); for (PluginDownloader downloader : myUploadedPlugins) { if (!mySkippedPlugins.contains(downloader.getPluginId())) { - final PluginNode pluginNode = PluginDownloader.createPluginNode(null, downloader); - if (pluginNode != null) { - nodes.add(pluginNode); + final IdeaPluginDescriptor descriptor = PluginManager.getPlugin(PluginId.getId(downloader.getPluginId())); + if (descriptor != null) { + pluginsToEnable.add(descriptor); + } else { + final PluginNode pluginNode = PluginDownloader.createPluginNode(null, downloader); + if (pluginNode != null) { + nodes.add(pluginNode); + } } } } @@ -90,6 +95,9 @@ public class PluginsAdvertiserDialog extends DialogWrapper { catch (IOException e) { LOG.error(e); } + for (IdeaPluginDescriptor pluginDescriptor : pluginsToEnable) { + PluginManagerCore.enablePlugin(pluginDescriptor.getPluginId().getIdString()); + } super.doOKAction(); } }