From 7b735d8e5270a5fae779c3d91c232a0f5de2ba10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sat, 29 Oct 2022 22:51:44 +0200 Subject: [PATCH] Tag list view - export selection context menu item correctly enabled/disabled --- .../jpexs/decompiler/flash/gui/MainPanel.java | 2 +- .../flash/gui/taglistview/TagListTree.java | 16 ++++++++++++---- .../decompiler/flash/gui/tagtree/TagTree.java | 2 +- .../flash/gui/tagtree/TagTreeContextMenu.java | 9 ++++++++- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 1f4ef9aa4..9702ec8eb 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -608,7 +608,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } }); - tagListTree = new TagListTree(); + tagListTree = new TagListTree(this); tagListTree.addTreeSelectionListener(this); DragSource dragSource = DragSource.getDefaultDragSource(); diff --git a/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTree.java b/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTree.java index 67e62b1f5..c22a12b97 100644 --- a/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTree.java +++ b/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTree.java @@ -17,7 +17,9 @@ package com.jpexs.decompiler.flash.gui.taglistview; import com.jpexs.decompiler.flash.SWF; +import com.jpexs.decompiler.flash.gui.MainPanel; import com.jpexs.decompiler.flash.gui.View; +import com.jpexs.decompiler.flash.gui.tagtree.TagTree; import com.jpexs.decompiler.flash.tags.DefineSpriteTag; import com.jpexs.decompiler.flash.tags.ShowFrameTag; import com.jpexs.decompiler.flash.tags.Tag; @@ -49,7 +51,11 @@ public class TagListTree extends JTree { private boolean initialized = false; - public TagListTree() { + private MainPanel mainPanel; + + public TagListTree(MainPanel mainPanel) { + this.mainPanel = mainPanel; + setCellRenderer(new TagListTreeCellRenderer()); setRootVisible(false); setShowsRootHandles(true); @@ -224,9 +230,7 @@ public class TagListTree extends JTree { } public List getSelection(SWF swf) { - Set selected = new HashSet<>(); - populateSelectedSwf(swf, root, selected); - return new ArrayList<>(selected); + return TagTree.getSelection(swf, getAllSelected()); } public void populateSelectedSwf(SWF swf, TagListTreeNode node, Set selected){ @@ -246,4 +250,8 @@ public class TagListTree extends JTree { populateSelected((TagListTreeNode)node.getChildAt(i), selected); } } + + public boolean hasExportableNodes() { + return !getSelection(mainPanel.getCurrentSwf()).isEmpty(); + } } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java index 71222b1eb..6be3bc2a0 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java @@ -612,7 +612,7 @@ public class TagTree extends JTree { return getSelection(swf, sel); } - public List getSelection(SWF swf, List sel) { + public static List getSelection(SWF swf, List sel) { List ret = new ArrayList<>(); for (TreeItem d : sel) { if (d instanceof SWFList) { diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java index 1bd2d48ca..df47fccc0 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java @@ -524,13 +524,20 @@ public class TagTreeContextMenu extends JPopupMenu { } } } + + boolean hasExportableNodes = false; + if (currentView == MainPanel.VIEW_RESOURCES) { + hasExportableNodes = tagTree.hasExportableNodes(); + } else if (currentView == MainPanel.VIEW_TAGLIST) { + hasExportableNodes = tagListTree.hasExportableNodes(); + } expandRecursiveMenuItem.setVisible(false); removeMenuItem.setVisible(canRemove); removeWithDependenciesMenuItem.setVisible(canRemove && !allDoNotHaveDependencies); cloneTagMenuItem.setVisible(allSelectedIsTagOrFrame && allSelectedSameParent); undoTagMenuItem.setVisible(allSelectedIsTag); - exportSelectionMenuItem.setEnabled(currentView == MainPanel.VIEW_RESOURCES ? tagTree.hasExportableNodes() : true); //? + exportSelectionMenuItem.setEnabled(hasExportableNodes); //? replaceMenuItem.setVisible(false); replaceNoFillMenuItem.setVisible(false); replaceWithTagMenuItem.setVisible(false);