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 7f1a1df6ac93..b3b3e68ee128 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/ActionInstallPlugin.java @@ -104,7 +104,7 @@ public class ActionInstallPlugin extends AnAction implements DumbAware { } final InstalledPluginsTableModel installedPluginsModel = (InstalledPluginsTableModel)installed.getPluginsModel(); for (PluginNode node : list) { - installedPluginsModel.appendDescriptor(node); + installedPluginsModel.appendOrUpdateDescriptor(node); } installed.setRequireShutdown(true); } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java b/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java index b3248aafaee9..3bb9aebc9941 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java @@ -91,7 +91,7 @@ public class InstalledPluginsManagerMain extends PluginManagerMain { return; } PluginDownloader.install(file, file.getName()); - ((InstalledPluginsTableModel)pluginsModel).appendDescriptor(pluginDescriptor); + ((InstalledPluginsTableModel)pluginsModel).appendOrUpdateDescriptor(pluginDescriptor); select(pluginDescriptor); setRequireShutdown(true); } 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 011c686fa62d..cd64322fe318 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsTableModel.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsTableModel.java @@ -84,11 +84,17 @@ public class InstalledPluginsTableModel extends PluginTableModel { setSortKey(new RowSorter.SortKey(getNameColumn(), SortOrder.ASCENDING)); } - public void appendDescriptor(IdeaPluginDescriptor descriptor) { - myInstalled.add(descriptor); - view.add(descriptor); - setEnabled(descriptor, true); - fireTableDataChanged(); + public void appendOrUpdateDescriptor(IdeaPluginDescriptor descriptor) { + final PluginId descrId = descriptor.getPluginId(); + final IdeaPluginDescriptor existing = PluginManager.getPlugin(descrId); + if (existing != null) { + updateExistingPluginInfo(descriptor, existing); + } else { + myInstalled.add(descriptor); + view.add(descriptor); + setEnabled(descriptor, true); + fireTableDataChanged(); + } } public static int getCheckboxColumn() {