From 3508260abb379be4804b4cc3762076fb6a85c440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 7 Jul 2025 18:15:19 +0200 Subject: [PATCH] Optional heap memory status widget in the titlebar --- CHANGELOG.md | 1 + lib/substance-fix.jar | Bin 179093 -> 179234 bytes .../flash/configuration/Configuration.java | 4 ++++ .../jpexs/decompiler/flash/gui/AppDialog.java | 3 +++ src/com/jpexs/decompiler/flash/gui/Main.java | 1 + .../decompiler/flash/gui/MainFrameRibbon.java | 10 ++++++++-- .../jpexs/decompiler/flash/gui/TextPanel.java | 2 +- src/com/jpexs/decompiler/flash/gui/View.java | 9 +++++++++ .../locales/AdvancedSettingsDialog.properties | 3 +++ .../AdvancedSettingsDialog_cs.properties | 3 +++ 10 files changed, 33 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e1a2cd8d..971a72b5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - AS1/2 P-code curly braces pair highlighting - [#2478] Simple editor - editing texts (not WYSIWYG, textual as in classic editor) - [#2478] Simple editor - remembering last frame / timeline +- Optional heap memory status widget in the titlebar ### Fixed - [#2474] Gotos incorrectly decompiled diff --git a/lib/substance-fix.jar b/lib/substance-fix.jar index 77204c70e87b61f7efe362c21862e309e285d2b6..b4b56305181268057fca3de754ac83e0a82dcc79 100644 GIT binary patch delta 10183 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ː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 delta 9917 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 skipDetectionOfUnitializedClassFields = null; + + @ConfigurationDefaultBoolean(false) + @ConfigurationInternal + public static ConfigurationItem showHeapStatusWidget = null; private static Map configurationDescriptions = new LinkedHashMap<>(); private static Map configurationTitles = new LinkedHashMap<>(); diff --git a/src/com/jpexs/decompiler/flash/gui/AppDialog.java b/src/com/jpexs/decompiler/flash/gui/AppDialog.java index 0f820f883..1282dd920 100644 --- a/src/com/jpexs/decompiler/flash/gui/AppDialog.java +++ b/src/com/jpexs/decompiler/flash/gui/AppDialog.java @@ -21,6 +21,8 @@ import java.awt.Window; import java.util.ResourceBundle; import javax.swing.JDialog; import javax.swing.JRootPane; +import org.pushingpixels.substance.api.SubstanceConstants; +import org.pushingpixels.substance.api.SubstanceLookAndFeel; /** * @author JPEXS @@ -50,6 +52,7 @@ public abstract class AppDialog extends JDialog { if (Configuration.useRibbonInterface.get()) { getRootPane().setWindowDecorationStyle(JRootPane.FRAME); } + SubstanceLookAndFeel.setWidgetVisible(this.rootPane, false, SubstanceConstants.SubstanceWidgetType.TITLE_PANE_HEAP_STATUS); } public ResourceBundle getResourceBundle() { diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index ddb7cd275..85340a569 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -155,6 +155,7 @@ import javax.swing.UnsupportedLookAndFeelException; import javax.swing.filechooser.FileFilter; import javax.swing.tree.TreePath; import jsyntaxpane.DefaultSyntaxKit; +import org.pushingpixels.substance.api.SubstanceConstants; import org.pushingpixels.substance.api.SubstanceLookAndFeel; /** diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java index b1db2cc22..5f94a4150 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java @@ -55,8 +55,11 @@ import javax.swing.JFrame; import javax.swing.plaf.RootPaneUI; import org.pushingpixels.flamingo.api.ribbon.JRibbon; import org.pushingpixels.flamingo.internal.ui.ribbon.appmenu.JRibbonApplicationMenuButton; +import org.pushingpixels.substance.api.SubstanceConstants; +import org.pushingpixels.substance.api.SubstanceLookAndFeel; import org.pushingpixels.substance.flamingo.ribbon.ui.SubstanceRibbonRootPaneUI; import org.pushingpixels.substance.internal.utils.SubstanceSizeUtils; +import org.pushingpixels.substance.internal.utils.SubstanceTitlePane; /** * @author JPEXS @@ -69,7 +72,7 @@ public final class MainFrameRibbon extends AppRibbonFrame { public MainFrameRibbon() { super(); - + Container cnt = getContentPane(); cnt.setLayout(new BorderLayout()); JRibbon ribbon = getRibbon(); @@ -182,7 +185,7 @@ public final class MainFrameRibbon extends AppRibbonFrame { } } }); - + View.centerScreenMain(this); enableAeroSnap(); @@ -276,11 +279,14 @@ public final class MainFrameRibbon extends AppRibbonFrame { private void updateRect() { int appButtonSize = (int) Math.round(trans.getScaleX() * Integer.getInteger("peacock.appButtonSize", 24)); + SubstanceTitlePane.HeapStatusPanel h = new SubstanceTitlePane.HeapStatusPanel(); + int heapWidth = Configuration.showHeapStatusWidget.get() ? 5 + h.getPreferredWidth() : 0; int titleIconsWidth = 3 + SubstanceSizeUtils.getTitlePaneIconSize() //close + 10 + SubstanceSizeUtils.getTitlePaneIconSize() //maximize / restore + 2 + SubstanceSizeUtils.getTitlePaneIconSize() //minimize + 2 + SubstanceSizeUtils.getTitlePaneIconSize() //always on top + + heapWidth ; dragRect = new Rectangle( diff --git a/src/com/jpexs/decompiler/flash/gui/TextPanel.java b/src/com/jpexs/decompiler/flash/gui/TextPanel.java index c717d85f1..997e6fafd 100644 --- a/src/com/jpexs/decompiler/flash/gui/TextPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/TextPanel.java @@ -208,7 +208,7 @@ public class TextPanel extends JPanel implements TagEditorPanel { textValue.setCaretPosition(0); setModified(false); setEditText(false); - boolean readOnly = ((Tag) textTag).isReadOnly(); + boolean readOnly = textTag == null ? true : ((Tag) textTag).isReadOnly(); if (readOnly) { textValue.setEditable(false); } diff --git a/src/com/jpexs/decompiler/flash/gui/View.java b/src/com/jpexs/decompiler/flash/gui/View.java index e03d6ecab..f74bc18d8 100644 --- a/src/com/jpexs/decompiler/flash/gui/View.java +++ b/src/com/jpexs/decompiler/flash/gui/View.java @@ -115,6 +115,8 @@ import org.pushingpixels.substance.internal.utils.SubstanceColorSchemeUtilities; * @author JPEXS */ public class View { + + private static boolean heapWidgetInited = false; public static Color getDefaultBackgroundColor() { if (Configuration.useRibbonInterface.get() && SubstanceLookAndFeel.getCurrentSkin() != null) { @@ -175,6 +177,7 @@ public class View { } try { + //UIManager.put(SubstanceLookAndFeel.WINDOW_HEAP_STATUS_VISIBLE, Boolean.TRUE); LookAndFeel oldLookAndFeel = UIManager.getLookAndFeel(); if (!(oldLookAndFeel instanceof SubstanceOfficeBlue2007LookAndFeel)) { UIManager.setLookAndFeel(new SubstanceOfficeBlue2007LookAndFeel()); @@ -194,6 +197,12 @@ public class View { } UIManager.put(SubstanceLookAndFeel.COLORIZATION_FACTOR, 0.999); //This works for not changing labels color and not changing Dialogs title + + if (Configuration.showHeapStatusWidget.get() && !heapWidgetInited) { + SubstanceLookAndFeel.setWidgetVisible(null, true, SubstanceConstants.SubstanceWidgetType.TITLE_PANE_HEAP_STATUS); + } + heapWidgetInited = true; + if (View.isOceanic()) { UIManager.put("Tree.expandedIcon", getIcon("expand16")); UIManager.put("Tree.collapsedIcon", getIcon("collapse16")); diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties index 0b5b6375e..62231b4fe 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog.properties @@ -630,3 +630,6 @@ config.description.showCodeCompletionOnDot = Automatically show code completion #after 24.0.1 config.name.skipDetectionOfUnitializedClassFields = AS2: Skip detection of uninitialized class fields config.description.skipDetectionOfUnitializedClassFields = Skips detection of uninitialized attributes in AS2 classes which includes decompilation of all scripts in current SWF before accessing any class. Set this to true if you have large obfuscated file and you want to see at least something (= incomplete class). + +config.name.showHeapStatusWidget = Show heap status widget +config.description.showHeapStatusWidget = Displays used memory widget in the titlebar. \ No newline at end of file diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties index ec97e63ff..5a539ff3b 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_cs.properties @@ -630,3 +630,6 @@ config.description.showCodeCompletionOnDot = Automaticky zobraz\u00ed okno dokon #after 24.0.1 config.name.skipDetectionOfUnitializedClassFields = AS2: P\u0159esko\u010dit detekci neinicializovan\u00fdch pol\u00ed t\u0159\u00edd config.description.skipDetectionOfUnitializedClassFields = P\u0159esko\u010d\u00ed detekci neinicializovan\u00fdch atribut\u016f v AS2 t\u0159\u00edd\u00e1ch kter\u00e1 zahrnuje dekompilaci v\u0161ech skript\u016f v aktu\u00e1ln\u00edm SWF p\u0159ed p\u0159\u00edstupem k jak\u00e9koli t\u0159\u00edd\u011b. Nastavte toto na true pokud m\u00e1te velk\u00fd obfuskovan\u00fd soubor a chcete vid\u011bt alespo\u0148 n\u011bco (= nekompletn\u00ed t\u0159\u00eddu). + +config.name.showHeapStatusWidget = Zobrazit widget se stavem heapu +config.description.showHeapStatusWidget = Zobraz\u00ed widget s pou\u017eitou pam\u011bt\u00ed v titulku okna. \ No newline at end of file