From beb3bd5d14dc82e2d0c35331b0e6ac9809f04000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Fri, 9 May 2025 11:21:34 +0200 Subject: [PATCH] Added: Show in Simple editor context menu item for timelined items (sprites, buttons, swfs) --- CHANGELOG.md | 1 + .../decompiler/flash/easygui/EasyPanel.java | 14 +++++----- .../decompiler/flash/gui/MainFrameMenu.java | 22 +++++---------- .../jpexs/decompiler/flash/gui/MainPanel.java | 6 +---- .../flash/gui/locales/MainFrame.properties | 2 ++ .../flash/gui/locales/MainFrame_cs.properties | 4 ++- .../flash/gui/tagtree/TagTreeContextMenu.java | 27 ++++++++++++++++++- 7 files changed, 47 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e11ab9ac9..e5965173b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file. - [#2370] Dialogs for editing grid, guides and snapping - [#2453] SVG export/import - use image-rendering attribute for image smoothing - Option to enter custom zoom level by clicking on zoom percentage label +- Show in Simple editor context menu item for timelined items (sprites, buttons, swfs) ### Fixed - [#2424] DefineEditText handling of letterSpacing, font size on incorrect values diff --git a/src/com/jpexs/decompiler/flash/easygui/EasyPanel.java b/src/com/jpexs/decompiler/flash/easygui/EasyPanel.java index ceedb9ca7..68922bb1c 100644 --- a/src/com/jpexs/decompiler/flash/easygui/EasyPanel.java +++ b/src/com/jpexs/decompiler/flash/easygui/EasyPanel.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.easygui; 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.timeline.Timelined; import java.awt.BorderLayout; import java.util.ArrayList; import java.util.List; @@ -29,13 +30,7 @@ import javax.swing.JPanel; * @author JPEXS */ public class EasyPanel extends JPanel { - - /** - * TODO: switch to true when Easy mode is released. I think it's not - * production ready yet. - */ - public static final boolean EASY_AVAILABLE = true; - + private TabSwitcher tabSwitcher; private EasySwfPanel easySwfPanel; @@ -71,6 +66,11 @@ public class EasyPanel extends JPanel { public SWF getSwf() { return tabSwitcher.getSelectedValue(); } + + public void setTimelined(Timelined tim) { + setSwf(tim.getSwf()); + easySwfPanel.setTimelined(tim); + } public void dispose() { setSwfs(new ArrayList<>()); diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java index ea1dcc346..d60ba9042 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java @@ -1193,9 +1193,8 @@ public abstract class MainFrameMenu implements MenuBuilder { setGroupSelection("view", "/file/view/viewHex"); break; case MainPanel.VIEW_EASY: - if (EasyPanel.EASY_AVAILABLE) { - setMenuChecked("/file/view/easy", true); - } + setGroupSelection("view", null); + setMenuChecked("/file/view/easy", true); break; } } @@ -1289,9 +1288,8 @@ public abstract class MainFrameMenu implements MenuBuilder { addToggleMenuItem("/file/view/viewResources", translate("menu.file.view.resources"), "view", "viewresources16", this::viewResourcesActionPerformed, PRIORITY_MEDIUM, null); addToggleMenuItem("/file/view/viewTagList", translate("menu.file.view.tagList"), "view", "taglist16", this::viewTagListActionPerformed, PRIORITY_MEDIUM, null); addToggleMenuItem("/file/view/viewHex", translate("menu.file.view.hex"), "view", "viewhex16", this::viewHexActionPerformed, PRIORITY_MEDIUM, null); - if (EasyPanel.EASY_AVAILABLE) { - addToggleMenuItem("/file/view/easy", translate("menu.file.view.easy"), null, "easy32", this::easyActionPerformed, PRIORITY_TOP, null); - } + addToggleMenuItem("/file/view/easy", translate("menu.file.view.easy"), null, "easy32", this::easyActionPerformed, PRIORITY_TOP, null); + finishMenu("/file/view"); addSeparator("/file"); @@ -1559,9 +1557,7 @@ public abstract class MainFrameMenu implements MenuBuilder { Configuration.dumpView.set(false); mainFrame.getPanel().showView(MainPanel.VIEW_RESOURCES); setGroupSelection("view", "/file/view/viewResources"); - if (EasyPanel.EASY_AVAILABLE) { - setMenuChecked("/file/view/easy", false); - } + setMenuChecked("/file/view/easy", false); } private void viewHexActionPerformed(ActionEvent evt) { @@ -1577,9 +1573,7 @@ public abstract class MainFrameMenu implements MenuBuilder { mainPanel.showView(MainPanel.VIEW_DUMP); setGroupSelection("view", "/file/view/viewHex"); - if (EasyPanel.EASY_AVAILABLE) { - setMenuChecked("/file/view/easy", false); - } + setMenuChecked("/file/view/easy", false); } private void viewTagListActionPerformed(ActionEvent evt) { @@ -1591,9 +1585,7 @@ public abstract class MainFrameMenu implements MenuBuilder { MainPanel mainPanel = mainFrame.getPanel(); mainPanel.showView(MainPanel.VIEW_TAGLIST); setGroupSelection("view", "/file/view/viewTagList"); - if (EasyPanel.EASY_AVAILABLE) { - setMenuChecked("/file/view/easy", false); - } + setMenuChecked("/file/view/easy", false); } private void debuggerSwitchActionPerformed(ActionEvent evt) { diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 66153bd73..0d8758f2a 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -301,7 +301,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se private final JPanel welcomePanel; - private final EasyPanel easyPanel; + public final EasyPanel easyPanel; private final MainFrameStatusPanel statusPanel; @@ -5623,10 +5623,6 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se public boolean showView(int view) { View.checkAccess(); - if (view == VIEW_EASY && !EasyPanel.EASY_AVAILABLE) { - view = VIEW_RESOURCES; - } - setTreeModel(view); switch (view) { case VIEW_DUMP: diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 67ed31280..1d3f94c59 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -1049,3 +1049,5 @@ move_guide.position = Position: zoom = Zoom zoom.hint = Zoom level. Click to change. zoom.enter = Enter zoom percentage value: + +contextmenu.showInEasy = Show in Simple editor \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties index 7fdcfadd7..507d914fc 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_cs.properties @@ -1030,4 +1030,6 @@ move_guide.position = Pozice: zoom = P\u0159ibl\u00ed\u017een\u00ed zoom.hint = \u00darove\u0148 p\u0159ibl\u00ed\u017een\u00ed. Klikn\u011bte pro zm\u011bnu. -zoom.enter = Zadejte hodnotu p\u0159ibl\u00ed\u017een\u00ed v procentech: \ No newline at end of file +zoom.enter = Zadejte hodnotu p\u0159ibl\u00ed\u017een\u00ed v procentech: + +contextmenu.showInEasy = Zobrazit v Jednoduch\u00e9m editoru \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java index f28e48c00..72e61acce 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java @@ -316,6 +316,8 @@ public class TagTreeContextMenu extends JPopupMenu { private JMenuItem showInTagListViewTagMenuItem; private JMenuItem showInHexDumpViewTagMenuItem; + + private JMenuItem showInEasyViewTagMenuItem; private JMenuItem showInFramesFolderMenuItem; @@ -430,6 +432,11 @@ public class TagTreeContextMenu extends JPopupMenu { showInHexDumpViewTagMenuItem.addActionListener(this::showInHexDumpViewActionPerformed); showInHexDumpViewTagMenuItem.setIcon(View.getIcon("viewhex16")); add(showInHexDumpViewTagMenuItem); + + showInEasyViewTagMenuItem = new JMenuItem(mainPanel.translate("contextmenu.showInEasy")); + showInEasyViewTagMenuItem.addActionListener(this::showInEasyViewActionPerformed); + showInEasyViewTagMenuItem.setIcon(View.getIcon("easy16")); + add(showInEasyViewTagMenuItem); textSearchMenuItem = new JMenuItem(mainPanel.translate("menu.tools.search")); textSearchMenuItem.addActionListener(this::textSearchActionPerformed); @@ -1317,6 +1324,7 @@ public class TagTreeContextMenu extends JPopupMenu { showInResourcesViewTagMenuItem.setVisible(false); showInTagListViewTagMenuItem.setVisible(false); showInHexDumpViewTagMenuItem.setVisible(false); + showInEasyViewTagMenuItem.setVisible(false); showInFramesFolderMenuItem.setVisible(false); addFramesMenuItem.setVisible(false); addFramesBeforeMenuItem.setVisible(false); @@ -1610,6 +1618,10 @@ public class TagTreeContextMenu extends JPopupMenu { showInTagListViewTagMenuItem.setVisible(true); } + if (firstItem instanceof Timelined) { + showInEasyViewTagMenuItem.setVisible(true); + } + if ((firstItem instanceof Tag) || (firstItem instanceof CLIPACTIONRECORD) || (firstItem instanceof BUTTONRECORD) @@ -4401,7 +4413,7 @@ public class TagTreeContextMenu extends JPopupMenu { } mainPanel.setTagTreeSelectedNode(mainPanel.tagListTree, item); mainPanel.updateMenu(); - } + } private void showInHexDumpViewActionPerformed(ActionEvent evt) { if (mainPanel.isModified()) { @@ -4415,6 +4427,19 @@ public class TagTreeContextMenu extends JPopupMenu { mainPanel.dumpTree.setSelectedItem(item); mainPanel.updateMenu(); } + + private void showInEasyViewActionPerformed(ActionEvent evt) { + TreeItem item = getCurrentItem(); + if (item instanceof TagScript) { + item = ((TagScript) item).getTag(); + } + if (!(item instanceof Timelined)) { + return; + } + mainPanel.showView(MainPanel.VIEW_EASY); + mainPanel.easyPanel.setTimelined((Timelined) item); + mainPanel.updateMenu(); + } private void moveTagActionPerformed(ActionEvent evt) { Tag t = (Tag) getCurrentItem();