package be.nikiroo.fanfix_swing.gui.browser;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Override
protected void fillData(Map<String, List<String>> data) {
+ data.clear();
try {
- Map<String, List<String>> sourcesGrouped = Instance.getInstance().getLibrary().getSourcesGrouped();
+ Map<String, List<String>> sourcesGrouped = Instance.getInstance()
+ .getLibrary().getSourcesGrouped();
for (String group : sourcesGrouped.keySet()) {
data.put(group, sourcesGrouped.get(group));
}
}
@Override
- protected int loadData(DefaultMutableTreeNode root, Map<String, List<String>> sourcesGrouped, String filter) {
+ protected int loadData(DefaultMutableTreeNode root,
+ Map<String, List<String>> sourcesGrouped, String filter) {
int count = 0;
- for (String source : sourcesGrouped.keySet()) {
- if (checkFilter(filter, source) || checkFilter(filter, sourcesGrouped.get(source))) {
- boolean hasChildren = sourcesGrouped.get(source).size() > 1;
- DefaultMutableTreeNode sourceNode = new DefaultMutableTreeNode(">" + source + (hasChildren ? "/" : ""));
+ List<String> sources = new ArrayList<String>(sourcesGrouped.keySet());
+ sort(sources);
+ for (String source : sources) {
+ if (checkFilter(filter, source)
+ || checkFilter(filter, sourcesGrouped.get(source))) {
+ List<String> children = sourcesGrouped.get(source);
+ boolean hasChildren = (children.size() > 1)
+ || (children.size() == 1
+ && !children.get(0).trim().isEmpty());
+ DefaultMutableTreeNode sourceNode = new DefaultMutableTreeNode(
+ ">" + source + (hasChildren ? "/" : ""));
root.add(sourceNode);
- for (String subSource : sourcesGrouped.get(source)) {
- if (checkFilter(filter, source) || checkFilter(filter, subSource)) {
+ sort(children);
+ for (String subSource : children) {
+ if (checkFilter(filter, source)
+ || checkFilter(filter, subSource)) {
count = count + 1;
- if (subSource.isEmpty() && sourcesGrouped.get(source).size() > 1) {
- sourceNode.add(new DefaultMutableTreeNode(" " + source));
+ if (subSource.isEmpty()
+ && sourcesGrouped.get(source).size() > 1) {
+ sourceNode.add(
+ new DefaultMutableTreeNode(" " + source));
} else if (!subSource.isEmpty()) {
- sourceNode.add(new DefaultMutableTreeNode(" " + source + "/" + subSource));
+ sourceNode.add(new DefaultMutableTreeNode(
+ " " + source + "/" + subSource));
}
}
}