From edc7d135e6118bef2dfaf15f83bc513fbf51b744 Mon Sep 17 00:00:00 2001 From: anna Date: Sun, 15 Jan 2012 16:18:29 +0100 Subject: [PATCH] IDEA-47924 Updating a disabled plugin should prompt to enable it --- .../ide/plugins/ActionInstallPlugin.java | 19 +++++++++++++++++++ .../plugins/InstalledPluginsTableModel.java | 5 +++++ 2 files changed, 24 insertions(+) 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 15b3f9a14734..05516fdf27ce 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java @@ -15,6 +15,7 @@ */ package com.intellij.ide.plugins; +import com.intellij.CommonBundle; import com.intellij.ide.IdeBundle; import com.intellij.notification.Notification; import com.intellij.notification.NotificationListener; @@ -28,6 +29,7 @@ import com.intellij.openapi.application.ex.ApplicationEx; import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.extensions.PluginId; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.IconLoader; import com.intellij.util.net.IOExceptionDialog; @@ -37,6 +39,8 @@ import javax.swing.event.HyperlinkEvent; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; /** * @author lloix @@ -115,6 +119,21 @@ public class ActionInstallPlugin extends AnAction implements DumbAware { installed.setRequireShutdown(true); if (!installed.isDisposed()) { getPluginTable().updateUI(); + final InstalledPluginsTableModel pluginsModel = (InstalledPluginsTableModel)installed.getPluginsModel(); + final Set disabled = new HashSet(); + for (PluginNode node : list) { + final PluginId pluginId = node.getPluginId(); + if (pluginsModel.isDisabled(pluginId)) { + disabled.add(node); + } + } + if (!disabled.isEmpty()) { + String message = "Updated plugin" + (disabled.size() > 1 ? "s are " : " is ") + "disabled. Would you like to enable " + (disabled.size() > 1 ? "them" : "it") + "?"; + if (Messages.showOkCancelDialog(host.pluginTable, message, CommonBundle.getWarningTitle(), Messages.getQuestionIcon()) == + DialogWrapper.OK_EXIT_CODE) { + pluginsModel.enableRows(disabled.toArray(new IdeaPluginDescriptor[disabled.size()]), true); + } + } } else { notifyPluginsWereInstalled(); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsTableModel.java b/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsTableModel.java index f03df913a61a..7985f2f04708 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsTableModel.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsTableModel.java @@ -308,6 +308,11 @@ public class InstalledPluginsTableModel extends PluginTableModel { return enabled != null && enabled.booleanValue(); } + public boolean isDisabled(final PluginId pluginId) { + final Boolean enabled = myEnabled.get(pluginId); + return enabled != null && !enabled.booleanValue(); + } + public Map getEnabledMap() { return myEnabled; }