mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-24 11:35:32 +00:00
Correct adding new subtags (CharacterId tags)
This commit is contained in:
@@ -94,6 +94,7 @@ import com.jpexs.decompiler.flash.tags.Tag;
|
||||
import com.jpexs.decompiler.flash.tags.VideoFrameTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.ASMSource;
|
||||
import com.jpexs.decompiler.flash.tags.base.ButtonTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.FontTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.ImageTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.MorphShapeTag;
|
||||
import com.jpexs.decompiler.flash.tags.base.PlaceObjectTypeTag;
|
||||
@@ -177,7 +178,7 @@ public class TagTree extends JTree {
|
||||
// SWF was closed
|
||||
value = null;
|
||||
}
|
||||
|
||||
|
||||
super.getTreeCellRendererComponent(
|
||||
tree, value, sel,
|
||||
expanded, leaf, row,
|
||||
@@ -410,9 +411,12 @@ public class TagTree extends JTree {
|
||||
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,
|
||||
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,
|
||||
@@ -424,11 +428,27 @@ public class TagTree extends JTree {
|
||||
return ret;
|
||||
}
|
||||
|
||||
public List<Integer> getSpriteNestedTagIds() {
|
||||
return Arrays.asList(PlaceObjectTag.ID, PlaceObject2Tag.ID, PlaceObject3Tag.ID, PlaceObject4Tag.ID,
|
||||
RemoveObjectTag.ID, RemoveObject2Tag.ID, ShowFrameTag.ID, FrameLabelTag.ID,
|
||||
StartSoundTag.ID, StartSound2Tag.ID, VideoFrameTag.ID,
|
||||
SoundStreamBlockTag.ID, SoundStreamHeadTag.ID, SoundStreamHead2Tag.ID);
|
||||
public List<Integer> getNestedTagIds(Tag obj) {
|
||||
if (obj instanceof DefineSpriteTag) {
|
||||
return Arrays.asList(PlaceObjectTag.ID, PlaceObject2Tag.ID, PlaceObject3Tag.ID, PlaceObject4Tag.ID,
|
||||
RemoveObjectTag.ID, RemoveObject2Tag.ID, ShowFrameTag.ID, FrameLabelTag.ID,
|
||||
StartSoundTag.ID, StartSound2Tag.ID, VideoFrameTag.ID,
|
||||
SoundStreamBlockTag.ID, SoundStreamHeadTag.ID, SoundStreamHead2Tag.ID,
|
||||
DefineScalingGridTag.ID);
|
||||
}
|
||||
if (obj instanceof FontTag) {
|
||||
return Arrays.asList(DefineFontNameTag.ID, DefineFontAlignZonesTag.ID, DefineFontInfoTag.ID, DefineFontInfo2Tag.ID);
|
||||
}
|
||||
if (obj instanceof TextTag) {
|
||||
return Arrays.asList(CSMTextSettingsTag.ID);
|
||||
}
|
||||
if (obj instanceof DefineButtonTag) {
|
||||
return Arrays.asList(DefineButtonCxformTag.ID, DefineButtonSoundTag.ID, DefineScalingGridTag.ID);
|
||||
}
|
||||
if (obj instanceof DefineButton2Tag) {
|
||||
return Arrays.asList(DefineButtonSoundTag.ID, DefineScalingGridTag.ID);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean hasExportableNodes() {
|
||||
@@ -565,7 +585,7 @@ public class TagTree extends JTree {
|
||||
if (!mainPanel.folderPreviewPanel.selectedItems.isEmpty()) {
|
||||
return mainPanel.folderPreviewPanel.selectedItems.entrySet().iterator().next().getValue();
|
||||
}
|
||||
|
||||
|
||||
TreeItem item = (TreeItem) getLastSelectedPathComponent();
|
||||
return item;
|
||||
}
|
||||
@@ -580,7 +600,7 @@ public class TagTree extends JTree {
|
||||
TreeItem root = ttm.getRoot();
|
||||
expandPath(new TreePath(new Object[]{root}));
|
||||
}
|
||||
|
||||
|
||||
public void expandFirstLevelNodes() {
|
||||
TagTreeModel ttm = getModel();
|
||||
TreeItem root = ttm.getRoot();
|
||||
|
||||
@@ -324,8 +324,8 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
List<Integer> allowedTagTypes = null;
|
||||
if (firstItem instanceof FolderItem) {
|
||||
allowedTagTypes = tagTree.getSwfFolderItemNestedTagIds(((FolderItem) firstItem).getName(), firstItem.getSwf().gfx);
|
||||
} else if (firstItem instanceof DefineSpriteTag) {
|
||||
allowedTagTypes = tagTree.getSpriteNestedTagIds();
|
||||
} else if (firstItem instanceof Tag) {
|
||||
allowedTagTypes = tagTree.getNestedTagIds((Tag) firstItem);
|
||||
}
|
||||
|
||||
addTagMenu.removeAll();
|
||||
@@ -347,7 +347,19 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
if (isDefineSprite) {
|
||||
((DefineSpriteTag) firstItem).subTags.add(t);
|
||||
} else {
|
||||
swf.tags.add(t);
|
||||
if (firstItem instanceof Tag) {
|
||||
if ((t instanceof CharacterIdTag) && (firstItem instanceof CharacterTag)) {
|
||||
((CharacterIdTag) t).setCharacterId(((CharacterTag) firstItem).getCharacterId());
|
||||
}
|
||||
int index = swf.tags.indexOf(firstItem);
|
||||
if (index > -1) {
|
||||
swf.tags.add(index, t);
|
||||
} else {
|
||||
swf.tags.add(t);
|
||||
}
|
||||
} else {
|
||||
swf.tags.add(t);
|
||||
}
|
||||
}
|
||||
timelined.getTimeline().reset();
|
||||
swf.updateCharacters();
|
||||
|
||||
Reference in New Issue
Block a user