package org.jabref.gui.actions; import java.awt.event.ActionEvent; import java.util.Comparator; import java.util.Locale; import java.util.Map; import java.util.TreeMap; import javax.swing.Action; import org.jabref.gui.BasePanel; import org.jabref.gui.JabRefFrame; import org.jabref.logic.l10n.Localization; /** * This action rearranges all tabs in the main tabbed pane of the given JabRefFrame * in alphabetical order. */ public class SortTabsAction extends MnemonicAwareAction implements Comparator<String> { private final JabRefFrame frame; public SortTabsAction(JabRefFrame frame) { putValue(Action.NAME, Localization.menuTitle("Sort tabs")); putValue(Action.SHORT_DESCRIPTION, Localization.lang("Rearrange tabs alphabetically by title")); this.frame = frame; } @Override public void actionPerformed(ActionEvent e) { // Make a sorted Map that compares case-insensitively: Map<String, BasePanel> map = new TreeMap<>(this); for (BasePanel panel : frame.getBasePanelList()) { map.put(panel.getTabTitle(), panel); } frame.getTabbedPane().removeAll(); for (Map.Entry<String, BasePanel> entry : map.entrySet()) { frame.addTab(entry.getValue(), false); } } @Override public int compare(String o1, String o2) { return o1.toLowerCase(Locale.ROOT).compareTo(o2.toLowerCase(Locale.ROOT)); } }