#1541 XML Import/Export of Unknown tags

Unknown tags display and binary contents replace
Fixed accidentally left writing to stderr
This commit is contained in:
Jindra Petřík
2021-03-12 18:08:36 +01:00
parent 6c671ab6ca
commit 54e9601fae
7 changed files with 99 additions and 8 deletions

View File

@@ -121,6 +121,7 @@ import com.jpexs.decompiler.flash.tags.FileAttributesTag;
import com.jpexs.decompiler.flash.tags.MetadataTag;
import com.jpexs.decompiler.flash.tags.Tag;
import com.jpexs.decompiler.flash.tags.TagInfo;
import com.jpexs.decompiler.flash.tags.UnknownTag;
import com.jpexs.decompiler.flash.tags.base.ASMSource;
import com.jpexs.decompiler.flash.tags.base.BoundedTag;
import com.jpexs.decompiler.flash.tags.base.ButtonTag;
@@ -151,6 +152,7 @@ import com.jpexs.decompiler.flash.types.MATRIX;
import com.jpexs.decompiler.flash.types.RECT;
import com.jpexs.decompiler.flash.types.sound.SoundFormat;
import com.jpexs.decompiler.flash.xfl.FLAVersion;
import com.jpexs.helpers.ByteArrayRange;
import com.jpexs.helpers.CancellableWorker;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.Path;
@@ -2970,6 +2972,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
if (ti0 instanceof DefineBinaryDataTag) {
file = showImportFileChooser("", false);
}
if (ti0 instanceof UnknownTag) {
file = showImportFileChooser("", false);
}
for (TreeItem ti : items) {
doReplaceAction(ti, file);
}
@@ -3056,6 +3061,16 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
refreshTree(bt.getSwf());
reload(true);
}
if (item instanceof UnknownTag) {
UnknownTag ut = (UnknownTag) item;
File selfile = Helper.fixDialogFile(selectedFile);
byte[] data = Helper.readFile(selfile.getAbsolutePath());
ut.unknownData = new ByteArrayRange(data);
ut.setModified(true);
refreshTree(ut.getSwf());
reload(true);
}
}
public void replaceNoFillButtonActionPerformed(ActionEvent evt) {
@@ -3164,9 +3179,6 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
String[] filterArray = filter.length() > 0 ? filter.split("\\|") : new String[0];
JFileChooser fc = new JFileChooser();
System.err.println("" + fc.getPreferredSize().width);
// SubstanceFileChooserUI s = new SubstanceFileChooserUI(fc);
//MetalFileChooserUI f;
fc.setCurrentDirectory(new File(Configuration.lastOpenDir.get()));
if (imagePreview) {
fc.setAccessory(new FileChooserImagePreview(fc));
@@ -3534,6 +3546,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
} else if (treeItem instanceof DefineBinaryDataTag) {
DefineBinaryDataTag binaryTag = (DefineBinaryDataTag) treeItem;
previewPanel.showBinaryPanel(binaryTag);
} else if (treeItem instanceof UnknownTag) {
UnknownTag unknownTag = (UnknownTag) treeItem;
previewPanel.showUnknownPanel(unknownTag);
} else if (treeItem instanceof ImageTag) {
ImageTag imageTag = (ImageTag) treeItem;
previewPanel.setImageReplaceButtonVisible(!((Tag) imageTag).isReadOnly() && imageTag.importSupported(), imageTag instanceof DefineBitsJPEG3Tag || imageTag instanceof DefineBitsJPEG4Tag);
@@ -3685,6 +3700,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
} else if (treeItem instanceof DefineBinaryDataTag) {
showPreview(treeItem, previewPanel);
showCard(CARDPREVIEWPANEL);
} else if (treeItem instanceof UnknownTag) {
showPreview(treeItem, previewPanel);
showCard(CARDPREVIEWPANEL);
} else if (treeItem instanceof ASMSource && (!(treeItem instanceof DrawableTag) || preferScript)) {
getActionPanel().setSource((ASMSource) treeItem, !forceReload);
showCard(CARDACTIONSCRIPTPANEL);