diff --git a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java index 6d6bab7ab..eed9fd4cb 100644 --- a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java @@ -401,10 +401,16 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel return metadataCard; } - private boolean metadataModified = false; + private boolean isMetadataModified() { + return metadataSaveButton.isVisible() && metadataSaveButton.isEnabled(); + } + + private void setMetadataModified(boolean value) { + metadataSaveButton.setEnabled(value); + } private void metadataTextChanged() { - metadataModified = true; + setMetadataModified(true); updateMetadataButtonsVisibility(); } @@ -413,7 +419,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel boolean editorMode = Configuration.editorMode.get(); metadataEditButton.setVisible(!edit); metadataSaveButton.setVisible(edit); - metadataSaveButton.setEnabled(metadataModified); + boolean metadataModified = isMetadataModified(); metadataCancelButton.setVisible(edit); metadataCancelButton.setEnabled(metadataModified || !editorMode); } @@ -565,7 +571,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel this.metadataTag = metadataTag; metadataEditor.setEditable(Configuration.editorMode.get()); metadataEditor.setText(formatMetadata(metadataTag.xmlMetadata, 4)); - metadataModified = false; + setMetadataModified(false); updateMetadataButtonsVisibility(); parametersPanel.setVisible(false); } @@ -1103,7 +1109,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel metadataTag.xmlMetadata = metadataEditor.getText().replaceAll(">\r?\n<", "> <"); metadataTag.setModified(true); metadataEditor.setEditable(Configuration.editorMode.get()); - metadataModified = false; + setMetadataModified(false); updateMetadataButtonsVisibility(); mainPanel.repaintTree(); } @@ -1112,7 +1118,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel metadataEditor.setEditable(false); metadataEditor.setText(formatMetadata(metadataTag.xmlMetadata, 4)); metadataEditor.setEditable(Configuration.editorMode.get()); - metadataModified = false; + setMetadataModified(false); updateMetadataButtonsVisibility(); } diff --git a/src/com/jpexs/decompiler/flash/gui/TextPanel.java b/src/com/jpexs/decompiler/flash/gui/TextPanel.java index 451f779fe..5b0c4459a 100644 --- a/src/com/jpexs/decompiler/flash/gui/TextPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/TextPanel.java @@ -87,8 +87,6 @@ public class TextPanel extends JPanel implements TagEditorPanel { private TextTag textTag; - private boolean modified = false; - public TextPanel(final MainPanel mainPanel) { super(new BorderLayout()); @@ -190,13 +188,21 @@ public class TextPanel extends JPanel implements TagEditorPanel { this.textTag = textTag; textValue.setText(textTag.getFormattedText().text); textValue.setCaretPosition(0); - modified = false; + setModified(false); setEditText(false); } + private boolean isModified() { + return textSaveButton.isVisible() && textSaveButton.isEnabled(); + } + + private void setModified(boolean value) { + textSaveButton.setEnabled(value); + } + public void focusTextValue() { textValue.requestFocusInWindow(); - if (!modified) { + if (!isModified()) { HighlightedText text = textTag.getFormattedText(); for (Highlighting highlight : text.specialHilights) { if (highlight.getProperties().subtype == HighlightSpecialType.TEXT) { @@ -274,16 +280,6 @@ public class TextPanel extends JPanel implements TagEditorPanel { } public void closeTag() { - if (modified && Configuration.autoSaveTagModifications.get()) { - try { - saveText(false); - updateButtonsVisibility(); - } catch (Exception ex) { - Logger.getLogger(TextPanel.class.getName()).log(Level.SEVERE, "Cannot auto-save text tag.", ex); - } - } - - modified = false; textTag = null; } @@ -297,7 +293,7 @@ public class TextPanel extends JPanel implements TagEditorPanel { boolean editorMode = Configuration.editorMode.get(); textEditButton.setVisible(!edit); textSaveButton.setVisible(edit); - textSaveButton.setEnabled(modified); + boolean modified = isModified(); textCancelButton.setVisible(edit); textCancelButton.setEnabled(modified || !editorMode); changeCaseButton.setEnabled(!modified); @@ -337,7 +333,7 @@ public class TextPanel extends JPanel implements TagEditorPanel { private void saveText(boolean refresh) { if (mainPanel.saveText(textTag, textValue.getText(), null)) { setEditText(false); - modified = false; + setModified(false); textTag.getSwf().clearImageCache(); if (refresh) { mainPanel.repaintTree(); @@ -373,7 +369,7 @@ public class TextPanel extends JPanel implements TagEditorPanel { } private void textChanged() { - modified = true; + setModified(true); updateButtonsVisibility(); showTextComparingPreview(); @@ -410,8 +406,16 @@ public class TextPanel extends JPanel implements TagEditorPanel { @Override public boolean tryAutoSave() { - closeTag(); - return true; + if (isModified() && Configuration.autoSaveTagModifications.get()) { + try { + saveText(false); + updateButtonsVisibility(); + } catch (Exception ex) { + Logger.getLogger(TextPanel.class.getName()).log(Level.SEVERE, "Cannot auto-save text tag.", ex); + } + } + + return !isModified(); } @Override