diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java index d23a81795535..04da5ea0bba2 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java @@ -36,13 +36,14 @@ import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; -import java.util.LinkedHashSet; +import java.util.TreeSet; /** * User: anna */ public class AvailablePluginsManagerMain extends PluginManagerMain { public static final String MANAGE_REPOSITORIES = "Manage repositories..."; + public static final String N_A = "N/A"; private PluginManagerMain installed; @@ -140,7 +141,7 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { super.update(e); String category = ((AvailablePluginsTableModel)pluginsModel).getCategory(); if (category == null) { - category = "N/A"; + category = N_A; } e.getPresentation().setText("Category: " + category); } @@ -148,17 +149,21 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { @NotNull @Override protected DefaultActionGroup createPopupActionGroup(JComponent button) { - final LinkedHashSet availableCategories = ((AvailablePluginsTableModel)pluginsModel).getAvailableCategories(); + final TreeSet availableCategories = ((AvailablePluginsTableModel)pluginsModel).getAvailableCategories(); final DefaultActionGroup gr = new DefaultActionGroup(); gr.add(createFilterByCategoryAction(AvailablePluginsTableModel.ALL)); + final boolean noCategory = availableCategories.remove(N_A); for (final String availableCategory : availableCategories) { gr.add(createFilterByCategoryAction(availableCategory)); } + if (noCategory) { + gr.add(createFilterByCategoryAction(N_A)); + } return gr; } private AnAction createFilterByCategoryAction(final String availableCategory) { - return new AnAction(availableCategory != null ? availableCategory : "") { + return new AnAction(availableCategory) { @Override public void actionPerformed(AnActionEvent e) { final String filter = myFilter.getFilter().toLowerCase(); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java index 4c08cfffcfeb..ac21018d7f3a 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java @@ -26,8 +26,8 @@ import com.intellij.util.ui.ColumnInfo; import javax.swing.*; import java.util.ArrayList; -import java.util.LinkedHashSet; import java.util.List; +import java.util.TreeSet; /** * Created by IntelliJ IDEA. @@ -40,7 +40,7 @@ public class AvailablePluginsTableModel extends PluginTableModel { public static final String ALL = "All"; private String myCategory = ALL; - private LinkedHashSet myAvailableCategories = new LinkedHashSet(); + private TreeSet myAvailableCategories = new TreeSet(); protected static final String STATUS = "Status"; @@ -89,7 +89,7 @@ public class AvailablePluginsTableModel extends PluginTableModel { return true; } - public LinkedHashSet getAvailableCategories() { + public TreeSet getAvailableCategories() { return myAvailableCategories; } @@ -119,7 +119,12 @@ public class AvailablePluginsTableModel extends PluginTableModel { for (IdeaPluginDescriptor descr : list) { updateStatus(descr); view.add(descr); - myAvailableCategories.add(descr.getCategory()); + final String category = descr.getCategory(); + if (category != null) { + myAvailableCategories.add(category); + } else { + myAvailableCategories.add(AvailablePluginsManagerMain.N_A); + } } fireTableDataChanged();