X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix_swing%2Fgui%2Fbrowser%2FSourceTab.java;h=a86420e57a58ab2c807ff2823cc81bebe3630331;hb=62c7e07ef88c8f809b46f4e4525aa0d3f8a9cb14;hp=63907dc65767ada5ad72670177e5aa55b9b2fa75;hpb=77e5ecd4fc25c052340fc00cc974972b2323d3d1;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix_swing/gui/browser/SourceTab.java b/src/be/nikiroo/fanfix_swing/gui/browser/SourceTab.java index 63907dc..a86420e 100644 --- a/src/be/nikiroo/fanfix_swing/gui/browser/SourceTab.java +++ b/src/be/nikiroo/fanfix_swing/gui/browser/SourceTab.java @@ -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>> { @Override protected void fillData(Map> data) { + data.clear(); try { - Map> sourcesGrouped = Instance.getInstance().getLibrary().getSourcesGrouped(); + Map> sourcesGrouped = Instance.getInstance() + .getLibrary().getSourcesGrouped(); for (String group : sourcesGrouped.keySet()) { data.put(group, sourcesGrouped.get(group)); } @@ -62,20 +68,33 @@ public class SourceTab extends BasicTab>> { } @Override - protected int loadData(DefaultMutableTreeNode root, Map> sourcesGrouped, String filter) { + protected int loadData(DefaultMutableTreeNode root, + Map> 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 sources = new ArrayList(sourcesGrouped.keySet()); + sort(sources); + for (String source : sources) { + if (checkFilter(filter, source) + || checkFilter(filter, sourcesGrouped.get(source))) { + List 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)); } } }