Correct adding new subtags (CharacterId tags)

This commit is contained in:
Jindra Petřík
2015-04-18 06:06:12 +02:00
parent 642b6827db
commit 76bd6e8df6
47 changed files with 275 additions and 17 deletions

View File

@@ -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();

View File

@@ -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();