Tag list view - export selection context menu item correctly enabled/disabled

This commit is contained in:
Jindra Petřík
2022-10-29 22:51:44 +02:00
parent cdb70ad25d
commit 7b735d8e52
4 changed files with 22 additions and 7 deletions

View File

@@ -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();

View File

@@ -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<TreeItem> getSelection(SWF swf) {
Set<TreeItem> selected = new HashSet<>();
populateSelectedSwf(swf, root, selected);
return new ArrayList<>(selected);
return TagTree.getSelection(swf, getAllSelected());
}
public void populateSelectedSwf(SWF swf, TagListTreeNode node, Set<TreeItem> selected){
@@ -246,4 +250,8 @@ public class TagListTree extends JTree {
populateSelected((TagListTreeNode)node.getChildAt(i), selected);
}
}
public boolean hasExportableNodes() {
return !getSelection(mainPanel.getCurrentSwf()).isEmpty();
}
}

View File

@@ -612,7 +612,7 @@ public class TagTree extends JTree {
return getSelection(swf, sel);
}
public List<TreeItem> getSelection(SWF swf, List<TreeItem> sel) {
public static List<TreeItem> getSelection(SWF swf, List<TreeItem> sel) {
List<TreeItem> ret = new ArrayList<>();
for (TreeItem d : sel) {
if (d instanceof SWFList) {

View File

@@ -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);