plugins: repositories: sort categories (N/A as last one)

This commit is contained in:
Anna Kozlova
2012-01-30 22:20:44 +04:00
parent cba08e2b4f
commit 824ba6b0e2
2 changed files with 18 additions and 8 deletions
@@ -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<String> availableCategories = ((AvailablePluginsTableModel)pluginsModel).getAvailableCategories();
final TreeSet<String> 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 : "<N/A>") {
return new AnAction(availableCategory) {
@Override
public void actionPerformed(AnActionEvent e) {
final String filter = myFilter.getFilter().toLowerCase();
@@ -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<String> myAvailableCategories = new LinkedHashSet<String>();
private TreeSet<String> myAvailableCategories = new TreeSet<String>();
protected static final String STATUS = "Status";
@@ -89,7 +89,7 @@ public class AvailablePluginsTableModel extends PluginTableModel {
return true;
}
public LinkedHashSet<String> getAvailableCategories() {
public TreeSet<String> 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();