Changed #1996 Items are now exported in order of appearance in the tag tree (usually SWF order), previously was it in order of selection

This commit is contained in:
Jindra Petřík
2023-04-05 21:33:34 +02:00
parent 8aa3c1830a
commit ebe32074aa
4 changed files with 24 additions and 7 deletions
@@ -496,7 +496,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
items.addAll(folderListPanel.selectedItems.values());
} else {
AbstractTagTree tree = (AbstractTagTree) e.getSource();
TreePath[] paths = tree.getSelectionPaths();
TreePath[] paths = tree.getSelectionPathsSorted();
if (paths != null) {
for (TreePath treePath : paths) {
TreeItem item = (TreeItem) treePath.getLastPathComponent();
@@ -583,7 +583,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
items.addAll(folderListPanel.selectedItems.values());
} else {
AbstractTagTree tree = (AbstractTagTree) e.getSource();
TreePath[] paths = tree.getSelectionPaths();
TreePath[] paths = tree.getSelectionPathsSorted();
if (paths != null) {
for (TreePath treePath : paths) {
TreeItem item = (TreeItem) treePath.getLastPathComponent();
@@ -102,6 +102,7 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
@@ -501,8 +502,7 @@ public abstract class AbstractTagTree extends JTree {
}
public List<TreeItem> getAllSelected() {
TreeSelectionModel tsm = getSelectionModel();
TreePath[] tps = tsm.getSelectionPaths();
TreePath[] tps = getSelectionPathsSorted();
List<TreeItem> ret = new ArrayList<>();
if (tps == null) {
return ret;
@@ -525,12 +525,25 @@ public abstract class AbstractTagTree extends JTree {
return ret;
}
public TreePath[] getSelectionPathsSorted() {
TreePath[] paths = getSelectionPaths();
if (paths == null) {
return null;
}
Arrays.sort(paths, new Comparator<TreePath>(){
@Override
public int compare(TreePath o1, TreePath o2) {
return getRowForPath(o1) - getRowForPath(o2);
}
});
return paths;
}
public List<TreeItem> getSelected() {
if (!mainPanel.folderPreviewPanel.selectedItems.isEmpty()) {
return new ArrayList<>(mainPanel.folderPreviewPanel.selectedItems.values());
}
TreeSelectionModel tsm = getSelectionModel();
TreePath[] tps = tsm.getSelectionPaths();
TreePath[] tps = getSelectionPathsSorted();
List<TreeItem> ret = new ArrayList<>();
if (tps == null) {
return ret;
@@ -645,7 +645,7 @@ public class TagTreeContextMenu extends JPopupMenu {
getTree().setSelectionRow(row);
}
TreePath[] paths = getTree().getSelectionPaths();
TreePath[] paths = getTree().getSelectionPathsSorted();
if (paths == null || paths.length == 0) {
return;
}