Export in order inside folder preview

This commit is contained in:
Jindra Petřík
2023-04-02 16:46:41 +02:00
parent 1f5bc01130
commit 25a367a369
6 changed files with 50 additions and 20 deletions

View File

@@ -33,11 +33,14 @@ import java.awt.event.MouseEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.WeakHashMap;
import javax.swing.Icon;
import javax.swing.JLabel;
@@ -63,8 +66,7 @@ public class FolderListPanel extends JPanel {
private int selectedIndex = -1;
public Map<Integer, TreeItem> selectedItems = new HashMap<>();
private Map<Integer, TreeItem> selectedItems = new TreeMap<>();
private static final int PREVIEW_SIZE = 150;
@@ -160,7 +162,7 @@ public class FolderListPanel extends JPanel {
}
if (SwingUtilities.isRightMouseButton(e)) {
mainPanel.getContextPopupMenu().update(new ArrayList<>(selectedItems.values()));
mainPanel.getContextPopupMenu().update(getSelectedItemsSorted());
mainPanel.getContextPopupMenu().show(FolderListPanel.this, e.getX(), e.getY());
}
repaint();
@@ -270,4 +272,12 @@ public class FolderListPanel extends JPanel {
}
}
}
public List<TreeItem> getSelectedItemsSorted() {
return new ArrayList<>(selectedItems.values());
}
public boolean isSomethingSelected() {
return !selectedItems.isEmpty();
}
}

View File

@@ -44,16 +44,20 @@ import java.awt.event.MouseEvent;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.tree.TreePath;
import org.pushingpixels.substance.api.ColorSchemeAssociationKind;
import org.pushingpixels.substance.api.ComponentState;
import org.pushingpixels.substance.api.DecorationAreaType;
@@ -74,11 +78,7 @@ public class FolderPreviewPanel extends JPanel {
private boolean repaintQueued;
private int lastWidth;
private int lastHeight;
public Map<Integer, TreeItem> selectedItems = new LinkedHashMap<>();
private Map<Integer, TreeItem> selectedItems = new TreeMap<>();
private Cache<Integer, SerializableImage> cachedPreviews;
@@ -156,7 +156,7 @@ public class FolderPreviewPanel extends JPanel {
}
if (SwingUtilities.isRightMouseButton(e)) {
mainPanel.getContextPopupMenu().update(new ArrayList<>(selectedItems.values()));
mainPanel.getContextPopupMenu().update(getSelectedItemsSorted());
mainPanel.getContextPopupMenu().show(FolderPreviewPanel.this, e.getX(), e.getY());
}
repaint();
@@ -386,4 +386,22 @@ public class FolderPreviewPanel extends JPanel {
}
return image;
}
public List<TreeItem> getSelectedItemsSorted() {
return new ArrayList<>(selectedItems.values());
}
public boolean isSomethingSelected() {
return !selectedItems.isEmpty();
}
public Map<Integer, TreeItem> getSelectedItems() {
return selectedItems;
}
public void setSelectedItems(Map<Integer, TreeItem> selectedItems) {
this.selectedItems = selectedItems;
}
}

View File

@@ -491,9 +491,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
Object source = e.getSource();
List<TreeItem> items = new ArrayList<>();
if (source == folderPreviewPanel) {
items.addAll(folderPreviewPanel.selectedItems.values());
items.addAll(folderPreviewPanel.getSelectedItemsSorted());
} else if (source == folderListPanel) {
items.addAll(folderListPanel.selectedItems.values());
items.addAll(folderListPanel.getSelectedItemsSorted());
} else {
AbstractTagTree tree = (AbstractTagTree) e.getSource();
TreePath[] paths = tree.getSelectionPathsSorted();
@@ -578,9 +578,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
Object source = e.getSource();
List<TreeItem> items = new ArrayList<>();
if (source == folderPreviewPanel) {
items.addAll(folderPreviewPanel.selectedItems.values());
items.addAll(folderPreviewPanel.getSelectedItemsSorted());
} else if (source == folderListPanel) {
items.addAll(folderListPanel.selectedItems.values());
items.addAll(folderListPanel.getSelectedItemsSorted());
} else {
AbstractTagTree tree = (AbstractTagTree) e.getSource();
TreePath[] paths = tree.getSelectionPathsSorted();
@@ -5049,7 +5049,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
JScrollBar folderPreviewScrollBar = ((JScrollPane)folderPreviewPanel.getParent().getParent()).getVerticalScrollBar();
int scrollValue = folderPreviewScrollBar.getValue();
Map<Integer, TreeItem> folderItems = new HashMap<>(folderPreviewPanel.selectedItems);
Map<Integer, TreeItem> folderItems = new HashMap<>(folderPreviewPanel.getSelectedItems());
if (scrollToVisible) {
@@ -5269,7 +5269,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
pinsPanel.setCurrent(oldItem);
}
folderPreviewPanel.selectedItems = folderItems;
folderPreviewPanel.setSelectedItems(folderItems);
folderPreviewScrollBar.setValue(scrollValue);
View.execInEventDispatchLater(new Runnable(){

View File

@@ -540,8 +540,8 @@ public abstract class AbstractTagTree extends JTree {
}
public List<TreeItem> getSelected() {
if (!mainPanel.folderPreviewPanel.selectedItems.isEmpty()) {
return new ArrayList<>(mainPanel.folderPreviewPanel.selectedItems.values());
if (mainPanel.folderPreviewPanel.isSomethingSelected()) {
return mainPanel.folderPreviewPanel.getSelectedItemsSorted();
}
TreePath[] tps = getSelectionPathsSorted();
List<TreeItem> ret = new ArrayList<>();

View File

@@ -312,12 +312,14 @@ public class TagTree extends AbstractTagTree {
@Override
public List<TreeItem> getSelection(Openable openable) {
List<TreeItem> sel;
if (mainPanel.folderPreviewPanel.selectedItems.isEmpty()) {
if (!mainPanel.folderPreviewPanel.isSomethingSelected()) {
sel = getAllSelected();
} else {
sel = new ArrayList<>();
for (TreeItem treeItem : mainPanel.folderPreviewPanel.selectedItems.values()) {
List<TreeItem> siSorted = mainPanel.folderPreviewPanel.getSelectedItemsSorted();
for (TreeItem treeItem : siSorted) {
sel.add(treeItem);
getAllSubs(treeItem, sel);
}

View File

@@ -2775,7 +2775,7 @@ public class TagTreeContextMenu extends JPopupMenu {
}
};
if (mainPanel.folderPreviewPanel.selectedItems.isEmpty()) {
if (!mainPanel.folderPreviewPanel.isSomethingSelected()) {
mainPanel.treeOperation(r);
} else {
//current folder must stay selected