diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 2984b9ff1..2f342745e 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -2650,6 +2650,36 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } } + public void replaceNoFillButtonActionPerformed(ActionEvent evt) { + TreeItem item = tagTree.getCurrentTreeItem(); + if (item == null) { + return; + } + + if (item instanceof ShapeTag) { + ShapeTag st = (ShapeTag) item; + File selectedFile = showImportFileChooser("filter.images|*.jpg;*.jpeg;*.gif;*.png;*.bmp"); + if (selectedFile != null) { + File selfile = Helper.fixDialogFile(selectedFile); + byte[] data = Helper.readFile(selfile.getAbsolutePath()); + try { + Tag newTag = new ShapeImporter().importImage(st, data, 0, false); + SWF swf = st.getSwf(); + if (newTag != null) { + refreshTree(swf); + setTagTreeSelectedNode(newTag); + } + + swf.clearImageCache(); + } catch (IOException ex) { + logger.log(Level.SEVERE, "Invalid image", ex); + View.showMessageDialog(null, translate("error.image.invalid"), translate("error"), JOptionPane.ERROR_MESSAGE); + } + reload(true); + } + } + } + public void replaceAlphaButtonActionPerformed(ActionEvent evt) { TreeItem item = tagTree.getCurrentTreeItem(); if (item == null) { diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 617205e0e..462cc0d2d 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -695,3 +695,6 @@ debug.break.reason.halt = (Halt) debug.break.reason.scriptLoaded = (Script loaded) menu.file.start.debugpcode = Debug P-code + +#after 7.1.2 +button.replaceNoFill = Replace - Update bounds... diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java index 12f7a720a..b57a4521e 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java @@ -82,6 +82,8 @@ public class TagTreeContextMenu extends JPopupMenu { private JMenuItem replaceMenuItem; + private JMenuItem replaceNoFillMenuItem; + private JMenuItem replaceWithTagMenuItem; private JMenuItem rawEditMenuItem; @@ -137,6 +139,10 @@ public class TagTreeContextMenu extends JPopupMenu { replaceMenuItem.addActionListener(mainPanel::replaceButtonActionPerformed); add(replaceMenuItem); + replaceNoFillMenuItem = new JMenuItem(mainPanel.translate("button.replaceNoFill")); + replaceNoFillMenuItem.addActionListener(mainPanel::replaceNoFillButtonActionPerformed); + add(replaceNoFillMenuItem); + replaceWithTagMenuItem = new JMenuItem(mainPanel.translate("button.replaceWithTag")); replaceWithTagMenuItem.addActionListener(this::replaceWithTagActionPerformed); add(replaceWithTagMenuItem); @@ -293,6 +299,7 @@ public class TagTreeContextMenu extends JPopupMenu { undoTagMenuItem.setVisible(allSelectedIsTag); exportSelectionMenuItem.setEnabled(tagTree.hasExportableNodes()); replaceMenuItem.setVisible(false); + replaceNoFillMenuItem.setVisible(false); replaceWithTagMenuItem.setVisible(false); rawEditMenuItem.setVisible(false); jumpToCharacterMenuItem.setVisible(false); @@ -322,6 +329,7 @@ public class TagTreeContextMenu extends JPopupMenu { if (firstItem instanceof ShapeTag) { replaceMenuItem.setVisible(true); + replaceNoFillMenuItem.setVisible(true); } if (firstItem instanceof DefineBinaryDataTag) {