mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 21:20:45 +00:00
Merge origin/master
This commit is contained in:
@@ -17,19 +17,23 @@
|
||||
package com.jpexs.decompiler.flash.gui;
|
||||
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.SWFCompression;
|
||||
import com.jpexs.decompiler.flash.gui.helpers.TableLayoutHelper;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JSpinner;
|
||||
import javax.swing.SpinnerNumberModel;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.border.BevelBorder;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import layout.TableLayout;
|
||||
|
||||
/**
|
||||
@@ -56,6 +60,10 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
|
||||
private final JLabel displayRectPixelsLabel = new JLabel();
|
||||
|
||||
private final JPanel compressionEditorPanel = new JPanel();
|
||||
|
||||
private final JComboBox<ComboBoxItem<SWFCompression>> compressionComboBox = new JComboBox<>();
|
||||
|
||||
private final JPanel versionEditorPanel = new JPanel();
|
||||
|
||||
private final JSpinner versionEditor = new JSpinner();
|
||||
@@ -86,6 +94,10 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
|
||||
private final JSpinner yMaxEditor = new JSpinner();
|
||||
|
||||
private final JPanel warningPanel = new JPanel();
|
||||
|
||||
private final JLabel warningLabel = new JLabel();
|
||||
|
||||
private SWF swf;
|
||||
|
||||
public HeaderInfoPanel() {
|
||||
@@ -96,17 +108,34 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
{TableLayout.PREFERRED, TableLayout.FILL},
|
||||
{TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED,
|
||||
TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED,
|
||||
TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED}
|
||||
TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED,
|
||||
TableLayout.PREFERRED}
|
||||
}));
|
||||
|
||||
FlowLayout layout = new FlowLayout(SwingConstants.WEST);
|
||||
layout.setHgap(0);
|
||||
layout.setVgap(0);
|
||||
|
||||
compressionEditorPanel.setLayout(layout);
|
||||
compressionComboBox.addItem(new ComboBoxItem<>(AppStrings.translate("header.uncompressed"), SWFCompression.NONE));
|
||||
compressionComboBox.addItem(new ComboBoxItem<>("Zlib", SWFCompression.ZLIB));
|
||||
compressionComboBox.addItem(new ComboBoxItem<>("LZMA", SWFCompression.LZMA));
|
||||
compressionComboBox.addActionListener((ActionEvent e) -> {
|
||||
validateHeader();
|
||||
});
|
||||
compressionEditorPanel.add(compressionComboBox);
|
||||
|
||||
versionEditorPanel.setLayout(layout);
|
||||
versionEditor.setPreferredSize(new Dimension(80, versionEditor.getPreferredSize().height));
|
||||
versionEditor.addChangeListener((ChangeEvent e) -> {
|
||||
validateHeader();
|
||||
});
|
||||
versionEditorPanel.add(versionEditor);
|
||||
|
||||
gfxCheckBox.addActionListener((ActionEvent e) -> {
|
||||
validateHeader();
|
||||
});
|
||||
|
||||
frameRateEditorPanel.setLayout(layout);
|
||||
frameRateEditor.setPreferredSize(new Dimension(80, frameRateEditor.getPreferredSize().height));
|
||||
frameRateEditorPanel.add(frameRateEditor);
|
||||
@@ -126,10 +155,16 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
displayRectEditorPanel.add(yMaxEditor);
|
||||
displayRectEditorPanel.add(new JLabel(" twips"));
|
||||
|
||||
warningLabel.setIcon(View.getIcon("warning16"));
|
||||
warningPanel.setLayout(layout);
|
||||
warningPanel.setBackground(new Color(255, 213, 29));
|
||||
warningPanel.add(warningLabel);
|
||||
|
||||
propertiesPanel.add(new JLabel(AppStrings.translate("header.signature")), "0,0");
|
||||
propertiesPanel.add(signatureLabel, "1,0");
|
||||
propertiesPanel.add(new JLabel(AppStrings.translate("header.compression")), "0,1");
|
||||
propertiesPanel.add(compressionLabel, "1,1");
|
||||
propertiesPanel.add(compressionEditorPanel, "1,1");
|
||||
propertiesPanel.add(new JLabel(AppStrings.translate("header.version")), "0,2");
|
||||
propertiesPanel.add(versionLabel, "1,2");
|
||||
propertiesPanel.add(versionEditorPanel, "1,2");
|
||||
@@ -148,6 +183,7 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
propertiesPanel.add(displayRectEditorPanel, "1,7");
|
||||
propertiesPanel.add(new JLabel(""), "0,8");
|
||||
propertiesPanel.add(displayRectPixelsLabel, "1,8");
|
||||
propertiesPanel.add(warningPanel, "0,9,1,9");
|
||||
|
||||
add(propertiesPanel, BorderLayout.CENTER);
|
||||
|
||||
@@ -171,12 +207,23 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
setEditMode(false);
|
||||
}
|
||||
|
||||
private int getVersionNumber() {
|
||||
return (int) versionEditor.getModel().getValue();
|
||||
}
|
||||
|
||||
private SWFCompression getCompression() {
|
||||
@SuppressWarnings("unchecked")
|
||||
ComboBoxItem<SWFCompression> item = (ComboBoxItem<SWFCompression>) compressionComboBox.getSelectedItem();
|
||||
return item.getValue();
|
||||
}
|
||||
|
||||
private void editButtonActionPerformed(ActionEvent evt) {
|
||||
setEditMode(true);
|
||||
}
|
||||
|
||||
private void saveButtonActionPerformed(ActionEvent evt) {
|
||||
swf.version = (int) versionEditor.getModel().getValue();
|
||||
swf.compression = getCompression();
|
||||
swf.version = getVersionNumber();
|
||||
swf.gfx = gfxCheckBox.isSelected();
|
||||
swf.frameRate = (int) frameRateEditor.getModel().getValue();
|
||||
swf.displayRect.Xmin = (int) xMinEditor.getModel().getValue();
|
||||
@@ -199,12 +246,15 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
switch (swf.compression) {
|
||||
case LZMA:
|
||||
compressionLabel.setText(AppStrings.translate("header.compression.lzma"));
|
||||
compressionComboBox.setSelectedIndex(2);
|
||||
break;
|
||||
case ZLIB:
|
||||
compressionLabel.setText(AppStrings.translate("header.compression.zlib"));
|
||||
compressionComboBox.setSelectedIndex(1);
|
||||
break;
|
||||
case NONE:
|
||||
compressionLabel.setText(AppStrings.translate("header.compression.none"));
|
||||
compressionComboBox.setSelectedIndex(0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -253,22 +303,55 @@ public class HeaderInfoPanel extends JPanel implements TagEditorPanel {
|
||||
}
|
||||
|
||||
private void setEditMode(boolean edit) {
|
||||
compressionLabel.setVisible(!edit);
|
||||
compressionEditorPanel.setVisible(edit);
|
||||
versionLabel.setVisible(!edit);
|
||||
versionEditor.setVisible(edit);
|
||||
versionEditorPanel.setVisible(edit);
|
||||
gfxLabel.setVisible(!edit);
|
||||
gfxCheckBox.setVisible(edit);
|
||||
frameRateLabel.setVisible(!edit);
|
||||
frameRateEditor.setVisible(edit);
|
||||
frameRateEditorPanel.setVisible(edit);
|
||||
|
||||
displayRectTwipsLabel.setVisible(!edit);
|
||||
displayRectPixelsLabel.setVisible(!edit);
|
||||
displayRectEditorPanel.setVisible(edit);
|
||||
|
||||
warningPanel.setVisible(false);
|
||||
|
||||
editButton.setVisible(!edit);
|
||||
saveButton.setVisible(edit);
|
||||
cancelButton.setVisible(edit);
|
||||
}
|
||||
|
||||
private boolean validateHeader() {
|
||||
int version = getVersionNumber();
|
||||
boolean gfx = gfxCheckBox.isSelected();
|
||||
SWFCompression compression = getCompression();
|
||||
String resultStr = "";
|
||||
boolean result = true;
|
||||
if (gfx && !(compression == SWFCompression.NONE || compression == SWFCompression.ZLIB)) {
|
||||
resultStr += AppStrings.translate("header.warning.unsupportedGfxCompression") + " ";
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (compression == SWFCompression.ZLIB && version < 6) {
|
||||
resultStr += AppStrings.translate("header.warning.minimumZlibVersion") + " ";
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (compression == SWFCompression.LZMA && version < 13) {
|
||||
resultStr += AppStrings.translate("header.warning.minimumLzmaVersion") + " ";
|
||||
result = false;
|
||||
}
|
||||
|
||||
warningPanel.setVisible(!result);
|
||||
if (!result) {
|
||||
warningLabel.setText(resultStr);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryAutoSave() {
|
||||
// todo: implement
|
||||
|
||||
@@ -124,7 +124,13 @@ public class TagInfoPanel extends JPanel {
|
||||
|
||||
return name;
|
||||
case 1:
|
||||
return "" + item.getValue();
|
||||
Object value = item.getValue();
|
||||
if (value instanceof Boolean) {
|
||||
boolean boolValue = (boolean) value;
|
||||
return boolValue ? AppStrings.translate("yes") : AppStrings.translate("no");
|
||||
}
|
||||
|
||||
return "" + value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -607,3 +607,13 @@ taginfo.header = Basic tag info
|
||||
tagInfo.dependentCharacters = Dependent Characters
|
||||
|
||||
#after version 5.3.0
|
||||
header.uncompressed = Uncompressed
|
||||
header.warning.unsupportedGfxCompression = GFX supports only uncompressed or Zlib compressed content.
|
||||
header.warning.minimumZlibVersion = Zlib compression needs SWF version 6 or greater.
|
||||
header.warning.minimumLzmaVersion = LZMA compression needs SWF version 13 or greater.
|
||||
|
||||
tagInfo.codecName = Codec Name
|
||||
tagInfo.exportFormat = Export Format
|
||||
tagInfo.samplingRate = Sampling Rate
|
||||
tagInfo.stereo = Stereo
|
||||
tagInfo.sampleCount = Sample Count
|
||||
|
||||
@@ -604,3 +604,15 @@ button.viewhexpcode = Hexa mutat\u00e1sa utas\u00edt\u00e1sokkal
|
||||
taginfo.header = Alap tag info
|
||||
|
||||
tagInfo.dependentCharacters = F\u00fcgg\u0151 karakterek
|
||||
|
||||
#after version 5.3.0
|
||||
header.uncompressed = T\u00f6m\u00f6r\u00edtetlen
|
||||
header.warning.unsupportedGfxCompression = GFX csak t\u00f6m\u00f6r\u00edtetlen \u00e9s Zlib t\u00f6m\u00f6r\u00edtett tartalmakat t\u00e1mogat.
|
||||
header.warning.minimumZlibVersion = Zlib t\u00f6m\u00f6r\u00edt\u00e9shez 6-os vagy nagyobb SWF verzi\u00f3ra van sz\u00fcks\u00e9g.
|
||||
header.warning.minimumLzmaVersion = LZMA t\u00f6m\u00f6r\u00edt\u00e9shez 13-as vagy nagyobb SWF verzi\u00f3ra van sz\u00fcks\u00e9g.
|
||||
|
||||
tagInfo.codecName = Codec neve
|
||||
tagInfo.exportFormat = Export\u00e1l\u00e1si form\u00e1tum
|
||||
tagInfo.samplingRate = Mintav\u00e9telez\u00e9si frekvencia
|
||||
tagInfo.stereo = Sztere\u00f3
|
||||
tagInfo.sampleCount = Mint\u00e1k sz\u00e1ma
|
||||
|
||||
@@ -604,4 +604,10 @@ tagInfo.neededCharacters = Beh\u00f6vande Tecken
|
||||
button.viewhexpcode = Granska Hex med instruktioner
|
||||
taginfo.header = Grundl\u00e4ggande tag information
|
||||
|
||||
tagInfo.dependentCharacters = Beroende Tecken
|
||||
tagInfo.dependentCharacters = Beroende Tecken
|
||||
|
||||
#after version 5.3.0
|
||||
header.uncompressed = Okomprimerad
|
||||
header.warning.unsupportedGfxCompression = GFX st\u00f6der endast okomprimerat eller Zlib komprimerad inneh\u00e5ll.
|
||||
header.warning.minimumZlibVersion = Zlib kompression beh\u00f6ver SWF version 6 eller st\u00f6rre.
|
||||
header.warning.minimumLzmaVersion = LZMA kompression beh\u00f6ver SWF version 13 eller st\u00f6rre.
|
||||
|
||||
Reference in New Issue
Block a user