mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-17 11:31:57 +00:00
#745 Copy tag to
This commit is contained in:
@@ -538,3 +538,6 @@ preview.gotoframe.dialog.message = Enter frame number (%min% - %max%)
|
||||
preview.gotoframe.dialog.frame.error = Invalid frame number. It must be number between %min% and %max%.
|
||||
|
||||
error.text.invalid.continue = Invalid text: %text% on line %line%. Do you want to continue?
|
||||
|
||||
#after version 4.0.5
|
||||
contextmenu.copyTag = Copy tag to
|
||||
|
||||
@@ -527,3 +527,17 @@ contextmenu.addTag = Tag hozz\u00e1ad\u00e1sa
|
||||
|
||||
deobfuscation.comment.tryenable = Tipp: Megpr\u00f3b\u00e1lhatja bekapcsolni az "Automatikus deobfuszk\u00e1l\u00e1st" a Be\u00e1ll\u00edt\u00e1sokban
|
||||
deobfuscation.comment.failed = Deobfuszk\u00e1l\u00e1s be van kapcsolva, de a visszaford\u00edt\u00e1s meghi\u00fasult. Ha a f\u00e1jl NEM obfuszk\u00e1lt kapcsolja ki az "Automatikus deobfuszk\u00e1l\u00e1st" jobb eredm\u00e9nyek el\u00e9r\u00e9se \u00e9rdek\u00e9ben.
|
||||
|
||||
#after version 4.0.2
|
||||
preview.nextframe = K\u00f6vetkez\u0151 keret
|
||||
preview.prevframe = El\u0151z\u0151 keret
|
||||
preview.gotoframe = Keretre ugr\u00e1s...
|
||||
|
||||
preview.gotoframe.dialog.title = Keretre ugr\u00e1s
|
||||
preview.gotoframe.dialog.message = \u00cdrja be a keret sz\u00e1m\u00e1t (%min% - %max%)
|
||||
preview.gotoframe.dialog.frame.error = Hib\u00e1s keret sz\u00e1m. A k\u00f6vetkez\u0151 \u00e9rt\u00e9kek k\u00f6z\u00f6tt kell lennie: %min% \u00e9s %max%.
|
||||
|
||||
error.text.invalid.continue = Hib\u00e1s sz\u00f6veg: %text% a %line%. sorban. Folytatja?
|
||||
|
||||
#after version 4.0.5
|
||||
contextmenu.copyTag = M\u00e1sol\u00e1s ide
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.jpexs.decompiler.flash.gui.tagtree;
|
||||
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.SWFInputStream;
|
||||
import com.jpexs.decompiler.flash.gui.Main;
|
||||
import com.jpexs.decompiler.flash.gui.MainFrameRibbonMenu;
|
||||
import com.jpexs.decompiler.flash.gui.MainPanel;
|
||||
@@ -25,6 +26,7 @@ import com.jpexs.decompiler.flash.tags.DefineBinaryDataTag;
|
||||
import com.jpexs.decompiler.flash.tags.DefineSoundTag;
|
||||
import com.jpexs.decompiler.flash.tags.DefineSpriteTag;
|
||||
import com.jpexs.decompiler.flash.tags.Tag;
|
||||
import com.jpexs.decompiler.flash.tags.TagStub;
|
||||
import com.jpexs.decompiler.flash.tags.base.CharacterIdTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.CharacterTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.ImageTag;
|
||||
@@ -39,6 +41,7 @@ import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -78,6 +81,7 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
private JMenuItem closeMenuItem;
|
||||
private JMenu addTagMenu;
|
||||
private JMenu moveTagMenu;
|
||||
private JMenu copyTagMenu;
|
||||
private JMenuItem openSWFInsideTagMenuItem;
|
||||
|
||||
public TagTreeContextMenu(final TagTree tagTree, MainPanel mainPanel) {
|
||||
@@ -131,6 +135,9 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
moveTagMenu = new JMenu(mainPanel.translate("contextmenu.moveTag"));
|
||||
add(moveTagMenu);
|
||||
|
||||
copyTagMenu = new JMenu(mainPanel.translate("contextmenu.copyTag"));
|
||||
add(copyTagMenu);
|
||||
|
||||
openSWFInsideTagMenuItem = new JMenuItem(mainPanel.translate("contextmenu.openswfinside"));
|
||||
add(openSWFInsideTagMenuItem);
|
||||
openSWFInsideTagMenuItem.setActionCommand(ACTION_OPEN_SWFINSIDE);
|
||||
@@ -213,6 +220,7 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
closeMenuItem.setVisible(allSelectedIsSwf);
|
||||
addTagMenu.setVisible(false);
|
||||
moveTagMenu.setVisible(false);
|
||||
copyTagMenu.setVisible(false);
|
||||
openSWFInsideTagMenuItem.setVisible(false);
|
||||
|
||||
final TreeItem firstItem = items.get(0);
|
||||
@@ -280,6 +288,7 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
if (firstItem instanceof Tag && swfs.size() > 1) {
|
||||
final Tag tag = (Tag) firstItem;
|
||||
moveTagMenu.removeAll();
|
||||
copyTagMenu.removeAll();
|
||||
for (SWFList targetSwfList : swfs) {
|
||||
for (final SWF targetSwf : targetSwfList) {
|
||||
if (targetSwf != tag.getSwf()) {
|
||||
@@ -299,10 +308,35 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
}
|
||||
});
|
||||
moveTagMenu.add(swfItem);
|
||||
|
||||
swfItem = new JMenuItem(targetSwf.getShortFileName());
|
||||
swfItem.addActionListener(new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
try {
|
||||
SWF sourceSwf = tag.getSwf();
|
||||
byte[] data = tag.getData();
|
||||
SWFInputStream tagDataStream = new SWFInputStream(sourceSwf, data, tag.getDataPos(), data.length);
|
||||
TagStub copy = new TagStub(sourceSwf, tag.getId(), "Unresolved", tag.getOriginalRange(), tagDataStream);
|
||||
copy.forceWriteAsLong = tag.forceWriteAsLong;
|
||||
Tag copyTag = SWFInputStream.resolveTag(copy, 0, false, true, false);
|
||||
copyTag.setSwf(targetSwf);
|
||||
targetSwf.tags.add(copyTag);
|
||||
copyTag.setModified(true);
|
||||
targetSwf.clearImageCache();
|
||||
mainPanel.refreshTree();
|
||||
} catch (IOException | InterruptedException ex) {
|
||||
Logger.getLogger(TagTreeContextMenu.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
copyTagMenu.add(swfItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
moveTagMenu.setVisible(true);
|
||||
copyTagMenu.setVisible(true);
|
||||
}
|
||||
|
||||
if (tagTree.getModel().getChildCount(firstItem) > 0) {
|
||||
|
||||
Reference in New Issue
Block a user