plugins advertisement: suggest to enable disabled plugins

This commit is contained in:
anna
2013-10-22 16:04:39 +02:00
parent 5ca293d817
commit 15523e7e97
2 changed files with 27 additions and 15 deletions
@@ -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> pluginId = retrieve(feature);
if (pluginId != null) {
//do not suggest to download disabled plugins
final List<String> 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<String> 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));
}
}
@@ -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<IdeaPluginDescriptor> pluginsToEnable = new HashSet<IdeaPluginDescriptor>();
final List<PluginNode> nodes = new ArrayList<PluginNode>();
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();
}
}