mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-06 02:38:11 +00:00
Tag list view - adding new tags by category
This commit is contained in:
@@ -66,17 +66,24 @@ public class TagListTree extends AbstractTagTree {
|
||||
@Override
|
||||
public List<Integer> getNestedTagIds(Tag obj) {
|
||||
if (obj instanceof DefineSpriteTag) {
|
||||
return Arrays.asList(PlaceObjectTag.ID, PlaceObject2Tag.ID, PlaceObject3Tag.ID, PlaceObject4Tag.ID,
|
||||
return getSpriteNestedTagIds();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
private 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,
|
||||
DefineScalingGridTag.ID); //scaling grid? FIXME?
|
||||
}
|
||||
return new ArrayList<>(); //FIXME: it should be actually all tags
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Integer> getFrameNestedTagIds() {
|
||||
return new ArrayList<>(); //FIXME: it should be alltags for swf timeline, limited for sprite timeline
|
||||
public List<Integer> getFrameNestedTagIds(boolean inSprite) {
|
||||
if (inSprite) {
|
||||
return getSpriteNestedTagIds();
|
||||
}
|
||||
return null; //null = all possible tags
|
||||
}
|
||||
}
|
||||
|
||||
@@ -496,7 +496,7 @@ public abstract class AbstractTagTree extends JTree {
|
||||
|
||||
public abstract List<Integer> getNestedTagIds(Tag obj);
|
||||
|
||||
public abstract List<Integer> getFrameNestedTagIds();
|
||||
public abstract List<Integer> getFrameNestedTagIds(boolean inSprite);
|
||||
|
||||
public TreeItem getCurrentTreeItem() {
|
||||
TreeItem item = (TreeItem) getLastSelectedPathComponent();
|
||||
|
||||
@@ -418,8 +418,8 @@ public class TagTree extends AbstractTagTree {
|
||||
return TreeNodeType.FOLDER;
|
||||
}
|
||||
|
||||
public List<Integer> getSwfFolderItemNestedTagIds(String folderName, boolean gfx) {
|
||||
List<Integer> ret = null;
|
||||
public static List<Integer> getSwfFolderItemNestedTagIds(String folderName, boolean gfx) {
|
||||
List<Integer> ret = new ArrayList<>();
|
||||
switch (folderName) {
|
||||
case TagTreeModel.FOLDER_SHAPES:
|
||||
ret = Arrays.asList(DefineShapeTag.ID, DefineShape2Tag.ID, DefineShape3Tag.ID, DefineShape4Tag.ID);
|
||||
@@ -481,7 +481,7 @@ public class TagTree extends AbstractTagTree {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Integer> getFrameNestedTagIds() {
|
||||
public List<Integer> getFrameNestedTagIds(boolean inSprite) {
|
||||
return Arrays.asList(PlaceObjectTag.ID, PlaceObject2Tag.ID, PlaceObject3Tag.ID, PlaceObject4Tag.ID,
|
||||
RemoveObjectTag.ID, RemoveObject2Tag.ID, FrameLabelTag.ID,
|
||||
StartSoundTag.ID, StartSound2Tag.ID, VideoFrameTag.ID,
|
||||
@@ -509,7 +509,7 @@ public class TagTree extends AbstractTagTree {
|
||||
if (obj instanceof DefineButton2Tag) {
|
||||
return Arrays.asList(DefineButtonSoundTag.ID, DefineScalingGridTag.ID);
|
||||
}
|
||||
return null;
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
|
||||
import com.jpexs.decompiler.flash.action.parser.script.ActionScript2Parser;
|
||||
import com.jpexs.decompiler.flash.gui.AppDialog;
|
||||
import com.jpexs.decompiler.flash.gui.AppStrings;
|
||||
import com.jpexs.decompiler.flash.gui.SelectTagPositionDialog;
|
||||
import com.jpexs.decompiler.flash.gui.Main;
|
||||
import com.jpexs.decompiler.flash.gui.MainPanel;
|
||||
@@ -717,7 +718,6 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
|
||||
private List<Integer> getAllowedTagTypes(TreeItem item) {
|
||||
if (item instanceof FolderItem) {
|
||||
List<Integer> allowedTagTypes;
|
||||
FolderItem folderItem = (FolderItem) item;
|
||||
SWF swf = item.getSwf();
|
||||
|
||||
@@ -725,7 +725,7 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
} else if (item instanceof Tag) {
|
||||
return getTree().getNestedTagIds((Tag) item);
|
||||
} else if (item instanceof Frame) {
|
||||
return getTree().getFrameNestedTagIds();
|
||||
return getTree().getFrameNestedTagIds(((Frame) item).timeline.timelined instanceof DefineSpriteTag);
|
||||
}
|
||||
|
||||
return new ArrayList<>();
|
||||
@@ -736,8 +736,40 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
void call(ActionEvent evt, TreeItem item, Class<?> cl);
|
||||
}
|
||||
|
||||
private void addAddTagMenuFolder(JMenu addTagMenu, String folder, boolean gfx, TreeItem item, AddTagActionLisener listener) {
|
||||
String folderTranslated = AppStrings.translate("node."+folder);
|
||||
JMenu folderMenu = new JMenu(folderTranslated);
|
||||
|
||||
List<Integer> allowedTagTypes = TagTree.getSwfFolderItemNestedTagIds(folder, gfx);
|
||||
if (allowedTagTypes.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
addAddTagMenuItems(allowedTagTypes, folderMenu, item, listener);
|
||||
addTagMenu.add(folderMenu);
|
||||
}
|
||||
|
||||
private void addAddTagMenuItems(List<Integer> allowedTagTypes, JMenu addTagMenu, TreeItem item, AddTagActionLisener listener) {
|
||||
if (allowedTagTypes == null) {
|
||||
boolean gfx = mainPanel.getCurrentSwf().gfx;
|
||||
|
||||
String folders[] = new String[] {
|
||||
TagTreeModel.FOLDER_SHAPES,
|
||||
TagTreeModel.FOLDER_MORPHSHAPES,
|
||||
TagTreeModel.FOLDER_SPRITES,
|
||||
TagTreeModel.FOLDER_TEXTS,
|
||||
TagTreeModel.FOLDER_IMAGES,
|
||||
TagTreeModel.FOLDER_MOVIES,
|
||||
TagTreeModel.FOLDER_SOUNDS,
|
||||
TagTreeModel.FOLDER_BUTTONS,
|
||||
TagTreeModel.FOLDER_FONTS,
|
||||
TagTreeModel.FOLDER_BINARY_DATA,
|
||||
TagTreeModel.FOLDER_FRAMES,
|
||||
TagTreeModel.FOLDER_OTHERS
|
||||
};
|
||||
for (String folder : folders) {
|
||||
addAddTagMenuFolder(addTagMenu, folder, gfx, item, listener);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user