stories order by name
[fanfix.git] / src / be / nikiroo / fanfix_swing / gui / browser / SourceTab.java
index ffa5e416abfd9936ee47264cd787e62ac46a0da6..a86420e57a58ab2c807ff2823cc81bebe3630331 100644 (file)
@@ -1,5 +1,9 @@
 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;
@@ -20,8 +24,10 @@ public class SourceTab extends BasicTab<Map<String, List<String>>> {
 
        @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));
                        }
@@ -62,22 +68,33 @@ public class SourceTab extends BasicTab<Map<String, List<String>>> {
        }
 
        @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))) {
+               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 ? "/" : ""));
+                                               || (children.size() == 1
+                                                               && !children.get(0).trim().isEmpty());
+                               DefaultMutableTreeNode sourceNode = new DefaultMutableTreeNode(
+                                               ">" + source + (hasChildren ? "/" : ""));
                                root.add(sourceNode);
+                               sort(children);
                                for (String subSource : children) {
-                                       if (checkFilter(filter, source) || checkFilter(filter, subSource)) {
+                                       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));
                                                }
                                        }
                                }