diff --git a/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java b/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java index 409045811..ce7c99e3b 100644 --- a/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java @@ -62,86 +62,83 @@ public class FolderPreviewPanel extends JPanel { private static final ExecutorService executor; private List items; private int selectedIndex = -1; - - public Map selectedItems = new HashMap<>(); - - private Cache cachedPreviews; - private static final int PREVIEW_SIZE = 150; + + public Map selectedItems = new HashMap<>(); + + private Cache cachedPreviews; + private static final int PREVIEW_SIZE = 150; private static final int BORDER_SIZE = 5; - private static final int LABEL_HEIGHT=20; - private static final int CELL_HEIGHT = 2*BORDER_SIZE + PREVIEW_SIZE + LABEL_HEIGHT; - private static final int CELL_WIDTH = 2*BORDER_SIZE + PREVIEW_SIZE; - private static final SerializableImage noImage = new SerializableImage(PREVIEW_SIZE,PREVIEW_SIZE,BufferedImage.TYPE_INT_ARGB); - static{ + private static final int LABEL_HEIGHT = 20; + private static final int CELL_HEIGHT = 2 * BORDER_SIZE + PREVIEW_SIZE + LABEL_HEIGHT; + private static final int CELL_WIDTH = 2 * BORDER_SIZE + PREVIEW_SIZE; + private static final SerializableImage noImage = new SerializableImage(PREVIEW_SIZE, PREVIEW_SIZE, BufferedImage.TYPE_INT_ARGB); + + static { noImage.fillTransparent(); executor = Executors.newFixedThreadPool(Configuration.parallelSpeedUp.get() ? Configuration.parallelThreadCount.get() : 1); } - - + public FolderPreviewPanel(final MainPanel mainPanel, List items) { this.items = items; cachedPreviews = Cache.getInstance(false); - + addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - if(e.getClickCount() >1){ - if(selectedIndex>-1){ + if (e.getClickCount() > 1) { + if (selectedIndex > -1) { mainPanel.setTagTreeSelectedNode(FolderPreviewPanel.this.items.get(selectedIndex)); } } } - - @Override public void mousePressed(MouseEvent e) { int width = getWidth(); - + int cols = width / CELL_WIDTH; - int rows = (int)Math.ceil(FolderPreviewPanel.this.items.size() / (float)cols); + int rows = (int) Math.ceil(FolderPreviewPanel.this.items.size() / (float) cols); int x = e.getX() / CELL_WIDTH; int y = e.getY() / CELL_HEIGHT; - int index=y*cols+x; - if(index>=FolderPreviewPanel.this.items.size()){ + int index = y * cols + x; + if (index >= FolderPreviewPanel.this.items.size()) { return; - } - - - if(e.getButton() == MouseEvent.BUTTON1 || selectedItems.isEmpty()){ - if(!e.isControlDown()){ - selectedItems.clear(); } - int oldSelectedIndex = selectedIndex; - selectedIndex = index; - - if(e.isShiftDown() && oldSelectedIndex>-1){ - int minindex=Math.min(selectedIndex, oldSelectedIndex); - int maxindex=Math.max(selectedIndex, oldSelectedIndex); - for(int i=minindex;i<=maxindex;i++){ - selectedItems.put(i, FolderPreviewPanel.this.items.get(i)); + + if (e.getButton() == MouseEvent.BUTTON1 || selectedItems.isEmpty()) { + if (!e.isControlDown()) { + selectedItems.clear(); } - selectedIndex = oldSelectedIndex; - }else{ - TreeItem ti=FolderPreviewPanel.this.items.get(index); - if(!selectedItems.containsKey(selectedIndex)){ - selectedItems.put(selectedIndex,ti); - }else{ - selectedItems.remove(selectedIndex); - selectedIndex = -1; + int oldSelectedIndex = selectedIndex; + selectedIndex = index; + + if (e.isShiftDown() && oldSelectedIndex > -1) { + int minindex = Math.min(selectedIndex, oldSelectedIndex); + int maxindex = Math.max(selectedIndex, oldSelectedIndex); + for (int i = minindex; i <= maxindex; i++) { + selectedItems.put(i, FolderPreviewPanel.this.items.get(i)); + } + selectedIndex = oldSelectedIndex; + } else { + TreeItem ti = FolderPreviewPanel.this.items.get(index); + if (!selectedItems.containsKey(selectedIndex)) { + selectedItems.put(selectedIndex, ti); + } else { + selectedItems.remove(selectedIndex); + selectedIndex = -1; + } } } - } - - if(e.getButton() == MouseEvent.BUTTON3){ + + if (e.getButton() == MouseEvent.BUTTON3) { mainPanel.tagTree.updateContextMenu(mainPanel.tagTree.swfs, new ArrayList<>(selectedItems.values())); - mainPanel.tagTree.contextPopupMenu.show(FolderPreviewPanel.this, e.getX(),e.getY()); + mainPanel.tagTree.contextPopupMenu.show(FolderPreviewPanel.this, e.getX(), e.getY()); } repaint(); } - -}); + + }); } public synchronized void setItems(List items) { @@ -152,76 +149,71 @@ public class FolderPreviewPanel extends JPanel { selectedItems.clear(); selectedIndex = -1; } - @Override public Dimension getPreferredSize() { - int width = getParent().getSize().width-20; + int width = getParent().getSize().width - 20; int cols = width / CELL_WIDTH; - int rows = (int)Math.ceil(items.size() / (float)cols); - int height = rows*CELL_HEIGHT; - return (new Dimension(width,height)); + int rows = (int) Math.ceil(items.size() / (float) cols); + int height = rows * CELL_HEIGHT; + return (new Dimension(width, height)); } - - @Override public void paint(Graphics g) { super.paint(g); Rectangle r = getVisibleRect(); int width = getWidth(); - + int cols = width / CELL_WIDTH; - int rows = (int)Math.ceil(items.size() / (float)cols); - int height = rows*CELL_HEIGHT; - - int start_y = r.y / CELL_HEIGHT; + int rows = (int) Math.ceil(items.size() / (float) cols); + int height = rows * CELL_HEIGHT; + + int start_y = r.y / CELL_HEIGHT; JLabel l = new JLabel(); Font f = l.getFont().deriveFont(AffineTransform.getScaleInstance(0.8, 0.8)); - int finish_y = (int)Math.ceil((r.y + r.height) / (float)CELL_HEIGHT); - g.setColor(Color.black); - for(int y=start_y;y<=finish_y;y++){ - for(int x=0;x() { @Override @@ -241,7 +233,7 @@ public class FolderPreviewPanel extends JPanel { }); } - + private SerializableImage renderImage(SWF swf, TreeItem treeItem) { int width = 0; diff --git a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java index d7ecf7e1b..5496f979c 100644 --- a/src/com/jpexs/decompiler/flash/gui/ImagePanel.java +++ b/src/com/jpexs/decompiler/flash/gui/ImagePanel.java @@ -426,7 +426,7 @@ public final class ImagePanel extends JPanel implements ActionListener, MediaDis } return (double) w / (double) w1; } - + return 1; } diff --git a/src/com/jpexs/decompiler/flash/gui/Main.java b/src/com/jpexs/decompiler/flash/gui/Main.java index 918f48589..0d52256cf 100644 --- a/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/src/com/jpexs/decompiler/flash/gui/Main.java @@ -919,8 +919,8 @@ public class Main { UIManager.put("ColorChooser.swatchesNameText", AppStrings.translate("ColorChooser.swatchesNameText")); UIManager.put("ColorChooser.swatchesRecentText", AppStrings.translate("ColorChooser.swatchesRecentText")); UIManager.put("ColorChooser.sampleText", AppStrings.translate("ColorChooser.sampleText")); - - Helper.decompilationErrorAdd = AppStrings.translate(Configuration.autoDeobfuscate.get()?"deobfuscation.comment.failed":"deobfuscation.comment.tryenable"); + + Helper.decompilationErrorAdd = AppStrings.translate(Configuration.autoDeobfuscate.get() ? "deobfuscation.comment.failed" : "deobfuscation.comment.tryenable"); } /** diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 94e5f85b9..46c6801ed 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -352,7 +352,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec private JPanel createFolderPreviewCard() { JPanel folderPreviewCard = new JPanel(new BorderLayout()); - folderPreviewPanel = new FolderPreviewPanel(this,new ArrayList()); + folderPreviewPanel = new FolderPreviewPanel(this, new ArrayList()); folderPreviewCard.add(new JScrollPane(folderPreviewPanel), BorderLayout.CENTER); return folderPreviewCard; @@ -989,7 +989,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec public List exportSelection(AbortRetryIgnoreHandler handler, String selFile, ExportDialog export) throws IOException { List ret = new ArrayList<>(); - List sel = folderPreviewPanel.selectedItems.isEmpty()?tagTree.getAllSelected(tagTree):new ArrayList<>(folderPreviewPanel.selectedItems.values()); + List sel = folderPreviewPanel.selectedItems.isEmpty() ? tagTree.getAllSelected(tagTree) : new ArrayList<>(folderPreviewPanel.selectedItems.values()); List allSwfs = new ArrayList<>(); for (SWFList swfList : swfs) { @@ -1316,7 +1316,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec } public void autoDeobfuscateChanged() { - Helper.decompilationErrorAdd = AppStrings.translate(Configuration.autoDeobfuscate.get()?"deobfuscation.comment.failed":"deobfuscation.comment.tryenable"); + Helper.decompilationErrorAdd = AppStrings.translate(Configuration.autoDeobfuscate.get() ? "deobfuscation.comment.failed" : "deobfuscation.comment.tryenable"); clearCache(); if (abcPanel != null) { abcPanel.reload(); @@ -2460,8 +2460,6 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec previewPanel.showTextPanel(textTag); } - - private void showFolderPreview(TreeItem treeNode) { List folderPreviewItems = new ArrayList<>(); FolderItem item = (FolderItem) treeNode; diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagIdClassMap.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagIdClassMap.java index ca528de3e..63d3a7576 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagIdClassMap.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagIdClassMap.java @@ -107,7 +107,7 @@ public class TagIdClassMap { private static final Map tagIdClassMap = new HashMap<>(); private static final Map classTagIdMap = new HashMap<>(); - + static { addTag(CSMTextSettingsTag.ID, CSMTextSettingsTag.class); addTag(DebugIDTag.ID, DebugIDTag.class); @@ -189,12 +189,12 @@ public class TagIdClassMap { addTag(ExporterInfo.ID, ExporterInfo.class); addTag(FontTextureInfo.ID, FontTextureInfo.class); } - + private static void addTag(int tagId, Class cl) { tagIdClassMap.put(tagId, cl); classTagIdMap.put(cl, tagId); } - + public static Class getClassByTagId(int tagId) { return tagIdClassMap.get(tagId); } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java index 1f35c3db8..0754aa967 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java @@ -389,14 +389,14 @@ public class TagTree extends JTree implements ActionListener { ret = new ArrayList<>(); break; case TagTreeModel.FOLDER_OTHERS: - ret = Arrays.asList(CSMTextSettingsTag.ID, DebugIDTag.ID, DefineButtonCxformTag.ID, DefineButtonSoundTag.ID, - DefineFontAlignZonesTag.ID, DefineFontInfoTag.ID, DefineFontInfo2Tag.ID, DefineFontNameTag.ID, - DefineScalingGridTag.ID, DefineSceneAndFrameLabelDataTag.ID, - DoABCDefineTag.ID, DoABCTag.ID, DoActionTag.ID, DoInitActionTag.ID, - EnableDebuggerTag.ID, EnableDebugger2Tag.ID, EnableTelemetryTag.ID, - ExportAssetsTag.ID, FileAttributesTag.ID, ImportAssetsTag.ID, ImportAssets2Tag.ID, - JPEGTablesTag.ID, MetadataTag.ID, ProductInfoTag.ID, ProtectTag.ID, ScriptLimitsTag.ID, - SetBackgroundColorTag.ID, SetTabIndexTag.ID, SymbolClassTag.ID); + ret = Arrays.asList(CSMTextSettingsTag.ID, DebugIDTag.ID, DefineButtonCxformTag.ID, DefineButtonSoundTag.ID, + DefineFontAlignZonesTag.ID, DefineFontInfoTag.ID, DefineFontInfo2Tag.ID, DefineFontNameTag.ID, + DefineScalingGridTag.ID, DefineSceneAndFrameLabelDataTag.ID, + DoABCDefineTag.ID, DoABCTag.ID, DoActionTag.ID, DoInitActionTag.ID, + EnableDebuggerTag.ID, EnableDebugger2Tag.ID, EnableTelemetryTag.ID, + ExportAssetsTag.ID, FileAttributesTag.ID, ImportAssetsTag.ID, ImportAssets2Tag.ID, + JPEGTablesTag.ID, MetadataTag.ID, ProductInfoTag.ID, ProtectTag.ID, ScriptLimitsTag.ID, + SetBackgroundColorTag.ID, SetTabIndexTag.ID, SymbolClassTag.ID); break; } @@ -409,7 +409,7 @@ public class TagTree extends JTree implements ActionListener { StartSoundTag.ID, StartSound2Tag.ID, VideoFrameTag.ID, SoundStreamBlockTag.ID, SoundStreamHeadTag.ID, SoundStreamHead2Tag.ID); } - + JMenuItem expandRecursiveMenuItem; JMenuItem removeMenuItem; JMenuItem removeWithDependenciesMenuItem; @@ -592,15 +592,15 @@ public class TagTree extends JTree implements ActionListener { try { SWF swf = item.getSwf(); Tag t = (Tag) cl.getDeclaredConstructor(SWF.class).newInstance(new Object[]{swf}); - boolean isDefineSprite = item instanceof DefineSpriteTag; - Timelined timelined = isDefineSprite ? (DefineSpriteTag) item : swf; + boolean isDefineSprite = item instanceof DefineSpriteTag; + Timelined timelined = isDefineSprite ? (DefineSpriteTag) item : swf; t.setTimelined(timelined); - if (isDefineSprite) { - ((DefineSpriteTag) item).subTags.add(t); - } else { - swf.tags.add(t); - } - timelined.getTimeline().reset(); + if (isDefineSprite) { + ((DefineSpriteTag) item).subTags.add(t); + } else { + swf.tags.add(t); + } + timelined.getTimeline().reset(); swf.updateCharacters(); mainPanel.refreshTree(); } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException | IllegalArgumentException | InvocationTargetException ex) {