From 76d8a13fb6e96d6481f80cedfd2fb8a0d3b3cf13 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Sun, 23 Nov 2014 08:48:12 +0100 Subject: [PATCH] asX.swfs added to recompile test, actionpanel initalization shoud be called from UI thread, other small fixes --- .../src/com/jpexs/decompiler/flash/SWF.java | 6 +-- .../decompiler/flash/helpers/BMPFile.java | 37 +++++++------- .../jpexs/decompiler/flash/RecompileTest.java | 7 ++- .../decompiler/flash/gui/AboutDialog.java | 50 ++++++++----------- .../jpexs/decompiler/flash/gui/MainPanel.java | 20 ++++---- .../flash/gui/SelectLanguageDialog.java | 3 +- .../flash/gui/proxy/ProxyFrame.java | 2 +- 7 files changed, 61 insertions(+), 64 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index d06924668..3f2bc93e1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -1079,9 +1079,9 @@ public final class SWF implements SWFContainerItem, Timelined { } public Map getASMs() { - Map asms2 = new HashMap<>(); - getASMs("", tags, asms2); - return asms2; + Map asms = new HashMap<>(); + getASMs("", tags, asms); + return asms; } private static void getASMs(String path, List items, Map asms) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/BMPFile.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/BMPFile.java index a09efd379..bc7bf87c9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/BMPFile.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/helpers/BMPFile.java @@ -16,9 +16,12 @@ */ package com.jpexs.decompiler.flash.helpers; -import java.awt.*; -import java.io.*; -import java.awt.image.*; +import java.awt.Component; +import java.awt.Image; +import java.awt.image.PixelGrabber; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; /** * Adapted from @@ -31,25 +34,25 @@ public class BMPFile extends Component { private final static int BITMAPINFOHEADER_SIZE = 40; //--- Private variable declaration //--- Bitmap file header - private byte bitmapFileHeader[] = new byte[14]; - private byte bfType[] = {'B', 'M'}; + private final byte bitmapFileHeader[] = new byte[14]; + private final byte bfType[] = {'B', 'M'}; private int bfSize = 0; - private int bfReserved1 = 0; - private int bfReserved2 = 0; - private int bfOffBits = BITMAPFILEHEADER_SIZE + BITMAPINFOHEADER_SIZE; + private final int bfReserved1 = 0; + private final int bfReserved2 = 0; + private final int bfOffBits = BITMAPFILEHEADER_SIZE + BITMAPINFOHEADER_SIZE; //--- Bitmap info header - private byte bitmapInfoHeader[] = new byte[40]; - private int biSize = BITMAPINFOHEADER_SIZE; + private final byte bitmapInfoHeader[] = new byte[40]; + private final int biSize = BITMAPINFOHEADER_SIZE; private int biWidth = 0; private int biHeight = 0; - private int biPlanes = 1; - private int biBitCount = 24; - private int biCompression = 0; + private final int biPlanes = 1; + private final int biBitCount = 24; + private final int biCompression = 0; private int biSizeImage = 0x030000; - private int biXPelsPerMeter = 0x0; - private int biYPelsPerMeter = 0x0; - private int biClrUsed = 0; - private int biClrImportant = 0; + private final int biXPelsPerMeter = 0x0; + private final int biYPelsPerMeter = 0x0; + private final int biClrUsed = 0; + private final int biClrImportant = 0; //--- Bitmap raw data private int bitmap[]; //--- File section diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/RecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/RecompileTest.java index c103d366f..1bc36e858 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/RecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/RecompileTest.java @@ -160,9 +160,12 @@ public class RecompileTest { return name.toLowerCase().endsWith(".swf"); } }); - Object[][] ret = new Object[files.length][1]; + Object[][] ret = new Object[files.length + 2][1]; + ret[0][0] = "..\\as2\\as2.swf"; + ret[1][0] = "..\\as3\\as3.swf"; + ret[1][0] = ret[0][0]; // todo: remove this line for (int f = 0; f < files.length; f++) { - ret[f][0] = files[f].getName(); + ret[f + 2][0] = files[f].getName(); } return ret; } diff --git a/src/com/jpexs/decompiler/flash/gui/AboutDialog.java b/src/com/jpexs/decompiler/flash/gui/AboutDialog.java index cc1f96649..9baefbca5 100644 --- a/src/com/jpexs/decompiler/flash/gui/AboutDialog.java +++ b/src/com/jpexs/decompiler/flash/gui/AboutDialog.java @@ -54,15 +54,13 @@ public class AboutDialog extends AppDialog { //setSize(new Dimension(300, 320)); setTitle(translate("dialog.title")); - JPanel twoPanes=new JPanel(); + JPanel twoPanes = new JPanel(); twoPanes.setLayout(new BoxLayout(twoPanes, BoxLayout.X_AXIS)); - + Container cnt = getContentPane(); JPanel cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); cnt.setLayout(new BorderLayout()); - - JPanel appNamePanel = new JPanel(new FlowLayout()); JLabel jpLabel = new JLabel("JPEXS"); @@ -85,27 +83,24 @@ public class AboutDialog extends AppDialog { decLabel.setHorizontalAlignment(SwingConstants.CENTER); appNamePanel.add(decLabel); appNamePanel.setAlignmentX(0.5f); - - + cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); cp.add(appNamePanel); - JLabel verLabel = new JLabel(translate("version") + " " + ApplicationInfo.version); - verLabel.setAlignmentX(0.5f); + JLabel verLabel = new JLabel(translate("version") + " " + ApplicationInfo.version); + verLabel.setAlignmentX(0.5f); //verLabel.setPreferredSize(new Dimension(300, 15)); verLabel.setFont(new Font("Tahoma", Font.BOLD, 15)); verLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(verLabel); - - cnt.add(cp,BorderLayout.NORTH); + cnt.add(cp, BorderLayout.NORTH); cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); - - + JLabel byLabel = new JLabel(translate("by")); byLabel.setAlignmentX(0.5f); byLabel.setHorizontalAlignment(SwingConstants.CENTER); @@ -124,7 +119,7 @@ public class AboutDialog extends AppDialog { //dateLabel.setPreferredSize(new Dimension(300, 10)); dateLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(dateLabel); - + LinkLabel wwwLabel = new LinkLabel(ApplicationInfo.PROJECT_PAGE); wwwLabel.setAlignmentX(0.5f); wwwLabel.setForeground(Color.blue); @@ -148,36 +143,31 @@ public class AboutDialog extends AppDialog { developersLabel.setHorizontalAlignment(SwingConstants.CENTER); developersLabel.setFont(developersLabel.getFont().deriveFont(Font.BOLD)); cp.add(developersLabel); - - + for (String c : DEVELOPERS) { JLabel developerNameLabel = new JLabel(c); developerNameLabel.setAlignmentX(0.5f); developerNameLabel.setHorizontalAlignment(SwingConstants.CENTER); cp.add(developerNameLabel); } - - - - - + cp.setAlignmentY(0); twoPanes.add(cp); cp = new JPanel(); cp.setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 10)); - cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); - + cp.setLayout(new BoxLayout(cp, BoxLayout.Y_AXIS)); + JLabel translatorsLabel = new JLabel(translate("translators")); translatorsLabel.setAlignmentX(0.5f); translatorsLabel.setHorizontalAlignment(SwingConstants.CENTER); translatorsLabel.setFont(translatorsLabel.getFont().deriveFont(Font.BOLD)); cp.add(translatorsLabel); - - List translators=new ArrayList<>(); - for(String code:SelectLanguageDialog.languages){ + + List translators = new ArrayList<>(); + for (String code : SelectLanguageDialog.languages) { Locale l = Locale.forLanguageTag(code.equals("en") ? "" : code); - ResourceBundle b = ResourceBundle.getBundle(AppStrings.getResourcePath(AboutDialog.class),l); - translators.add(Locale.forLanguageTag(code).getDisplayName()+" - "+b.getString("translation.author")); + ResourceBundle b = ResourceBundle.getBundle(AppStrings.getResourcePath(AboutDialog.class), l); + translators.add(Locale.forLanguageTag(code).getDisplayName() + " - " + b.getString("translation.author")); } for (String c : translators) { JLabel translatorName = new JLabel(c); @@ -189,10 +179,10 @@ public class AboutDialog extends AppDialog { cp.add(Box.createVerticalStrut(10)); cp.setAlignmentY(0); twoPanes.add(cp); - + cnt.add(twoPanes, BorderLayout.CENTER); cp = new JPanel(new FlowLayout()); - cnt.add(cp,BorderLayout.SOUTH); + cnt.add(cp, BorderLayout.SOUTH); JButton okButton = new JButton(translate("button.ok")); okButton.setAlignmentX(0.5f); cp.add(okButton); @@ -207,6 +197,6 @@ public class AboutDialog extends AppDialog { View.setWindowIcon(this); setResizable(false); pack(); - View.centerScreen(this); + View.centerScreen(this); } } diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index c1ebc2c53..53d7fdb64 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -136,11 +136,9 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FilenameFilter; @@ -158,7 +156,6 @@ import java.util.concurrent.CancellationException; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Pattern; -import javax.imageio.ImageIO; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import javax.swing.Box; @@ -185,7 +182,6 @@ import javax.swing.event.TreeSelectionListener; import javax.swing.filechooser.FileFilter; import javax.swing.plaf.basic.BasicTreeUI; import javax.swing.tree.TreePath; -import org.monte.media.io.ByteArrayImageInputStream; /** * @@ -611,8 +607,14 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec private void ensureActionPanel() { if (actionPanel == null) { - actionPanel = new ActionPanel(this); - displayPanel.add(actionPanel, CARDACTIONSCRIPTPANEL); + final MainPanel diz = this; + View.execInEventDispatch(new Runnable() { + @Override + public void run() { + actionPanel = new ActionPanel(diz); + displayPanel.add(actionPanel, CARDACTIONSCRIPTPANEL); + } + }); } } @@ -1098,7 +1100,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec } } } - + public void searchAs() { if (searchDialog == null) { searchDialog = new SearchDialog(getMainFrame().getWindow()); @@ -1900,8 +1902,8 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec if (selectedFile != null) { Configuration.lastOpenDir.set(Helper.fixDialogFile(selectedFile).getParentFile().getAbsolutePath()); File selfile = Helper.fixDialogFile(selectedFile); - byte[] data = Helper.readFile(selfile.getAbsolutePath()); - try { + byte[] data = Helper.readFile(selfile.getAbsolutePath()); + try { Tag newTag = new ShapeImporter().importImage(st, data); if (newTag != null) { refreshTree(); diff --git a/src/com/jpexs/decompiler/flash/gui/SelectLanguageDialog.java b/src/com/jpexs/decompiler/flash/gui/SelectLanguageDialog.java index 138016003..bfc970d1a 100644 --- a/src/com/jpexs/decompiler/flash/gui/SelectLanguageDialog.java +++ b/src/com/jpexs/decompiler/flash/gui/SelectLanguageDialog.java @@ -44,8 +44,7 @@ public class SelectLanguageDialog extends AppDialog implements ActionListener { JComboBox languageCombobox = new JComboBox<>(); public String languageCode = null; public static final String[] languages = new String[]{"en", "ca", "cs", "zh", "de", "es", "fr", "hu", "nl", "pl", "pt", "pt-BR", "ru", "sv", "uk"}; - - + public SelectLanguageDialog() { setSize(350, 130); Container cnt1 = getContentPane(); diff --git a/src/com/jpexs/decompiler/flash/gui/proxy/ProxyFrame.java b/src/com/jpexs/decompiler/flash/gui/proxy/ProxyFrame.java index 65459d49d..75332e939 100644 --- a/src/com/jpexs/decompiler/flash/gui/proxy/ProxyFrame.java +++ b/src/com/jpexs/decompiler/flash/gui/proxy/ProxyFrame.java @@ -491,7 +491,7 @@ public class ProxyFrame extends AppFrame implements ActionListener, CatchedListe Logger.getLogger(ProxyFrame.class.getName()).log(Level.SEVERE, null, ex); } } - tableModel.setRowCount(0); + tableModel.setRowCount(0); reps.clear(); break; case ACTION_REMOVE: