package be.nikiroo.fanfix_swing.gui.browser; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.tree.DefaultMutableTreeNode; import be.nikiroo.fanfix.Instance; public class SourceTab extends BasicTab>> { public SourceTab(int index, String listenerCommand) { super(index, listenerCommand); } @Override protected Map> createEmptyData() { return new HashMap>(); } @Override protected void fillData(Map> data) { try { Map> sourcesGrouped = Instance.getInstance().getLibrary().getSourcesGrouped(); for (String group : sourcesGrouped.keySet()) { data.put(group, sourcesGrouped.get(group)); } } catch (Exception e) { // TODO e.printStackTrace(); } } @Override protected String keyToElement(String key) { return key.substring(1); } @Override protected String keyToDisplay(String key) { if (key.trim().isEmpty()) { return "[*]"; // Root node } // Get and remove type String type = key.substring(0, 1); key = key.substring(1); if (!type.equals(">")) { // Only display the final name int pos = key.toString().lastIndexOf("/"); if (pos >= 0) { key = key.toString().substring(pos + 1); } } if (key.toString().isEmpty()) { key = " "; } return key; } @Override 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 ? "/" : "")); root.add(sourceNode); for (String subSource : sourcesGrouped.get(source)) { if (checkFilter(filter, source) || checkFilter(filter, subSource)) { count = count + 1; if (subSource.isEmpty() && sourcesGrouped.get(source).size() > 1) { sourceNode.add(new DefaultMutableTreeNode(" " + source)); } else if (!subSource.isEmpty()) { sourceNode.add(new DefaultMutableTreeNode(" " + source + "/" + subSource)); } } } } } return count; } }