From bece4e1e77f50f9fda3903bb2cbd7e2c47fa81ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 6 Nov 2022 20:08:57 +0100 Subject: [PATCH] Show inner Define tags in Folder preview --- .../jpexs/decompiler/flash/gui/MainPanel.java | 47 ++++++++++++++----- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 9a99c306f..1cc6cdd48 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -4153,66 +4153,89 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se previewPanel.showTextComparePanel(textTag, newTextTag); } - private void showFolderPreview(FolderItem item) { - List folderPreviewItems = new ArrayList<>(); - String folderName = item.getName(); - SWF swf = item.swf; + private void addFolderPreviewItems(List folderPreviewItems, String folderName, Timelined timelined) { switch (folderName) { case TagTreeModel.FOLDER_SHAPES: - for (Tag tag : swf.getTags()) { + for (Tag tag : timelined.getTags()) { if (tag instanceof ShapeTag) { folderPreviewItems.add(tag); } + if (tag instanceof DefineSpriteTag) { + addFolderPreviewItems(folderPreviewItems, folderName, (DefineSpriteTag) tag); + } } break; case TagTreeModel.FOLDER_MORPHSHAPES: - for (Tag tag : swf.getTags()) { + for (Tag tag : timelined.getTags()) { if (tag instanceof MorphShapeTag) { folderPreviewItems.add(tag); } + if (tag instanceof DefineSpriteTag) { + addFolderPreviewItems(folderPreviewItems, folderName, (DefineSpriteTag) tag); + } } break; case TagTreeModel.FOLDER_SPRITES: - for (Tag tag : swf.getTags()) { + for (Tag tag : timelined.getTags()) { if (tag instanceof DefineSpriteTag) { folderPreviewItems.add(tag); + addFolderPreviewItems(folderPreviewItems, folderName, (DefineSpriteTag) tag); } } break; case TagTreeModel.FOLDER_BUTTONS: - for (Tag tag : swf.getTags()) { + for (Tag tag : timelined.getTags()) { if (tag instanceof ButtonTag) { folderPreviewItems.add(tag); } + if (tag instanceof DefineSpriteTag) { + addFolderPreviewItems(folderPreviewItems, folderName, (DefineSpriteTag) tag); + } } break; case TagTreeModel.FOLDER_FONTS: - for (Tag tag : swf.getTags()) { + for (Tag tag : timelined.getTags()) { if (tag instanceof FontTag) { folderPreviewItems.add(tag); } + if (tag instanceof DefineSpriteTag) { + addFolderPreviewItems(folderPreviewItems, folderName, (DefineSpriteTag) tag); + } } break; case TagTreeModel.FOLDER_FRAMES: - for (Frame frame : swf.getTimeline().getFrames()) { + for (Frame frame : timelined.getTimeline().getFrames()) { folderPreviewItems.add(frame); } break; case TagTreeModel.FOLDER_IMAGES: - for (Tag tag : swf.getTags()) { + for (Tag tag : timelined.getTags()) { if (tag instanceof ImageTag) { folderPreviewItems.add(tag); } + if (tag instanceof DefineSpriteTag) { + addFolderPreviewItems(folderPreviewItems, folderName, (DefineSpriteTag) tag); + } } break; case TagTreeModel.FOLDER_TEXTS: - for (Tag tag : swf.getTags()) { + for (Tag tag : timelined.getTags()) { if (tag instanceof TextTag) { folderPreviewItems.add(tag); } + if (tag instanceof DefineSpriteTag) { + addFolderPreviewItems(folderPreviewItems, folderName, (DefineSpriteTag) tag); + } } break; } + } + + private void showFolderPreview(FolderItem item) { + List folderPreviewItems = new ArrayList<>(); + String folderName = item.getName(); + SWF swf = item.swf; + addFolderPreviewItems(folderPreviewItems, folderName, swf); folderPreviewPanel.setItems(folderPreviewItems); showCard(CARDFOLDERPREVIEWPANEL);