merge problem fixed

This commit is contained in:
honfika@gmail.com
2014-11-07 23:53:37 +01:00
parent e84550ebe8
commit e6cd239cc7

View File

@@ -410,8 +410,19 @@ public class TagTree extends JTree implements ActionListener {
SoundStreamBlockTag.ID, SoundStreamHeadTag.ID, SoundStreamHead2Tag.ID);
}
public void createContextMenu(final List<SWFList> swfs) {
final JPopupMenu contextPopupMenu = new JPopupMenu();
JMenuItem expandRecursiveMenuItem;
JMenuItem removeMenuItem;
JMenuItem removeWithDependenciesMenuItem;
JMenuItem exportSelectionMenuItem;
JMenuItem replaceSelectionMenuItem;
JMenuItem rawEditMenuItem;
JMenuItem jumpToCharacterMenuItem;
JMenuItem closeSelectionMenuItem;
JMenu addTagMenu;
JMenu moveTagMenu;
JMenuItem openSWFInsideTagMenuItem;
public JPopupMenu contextPopupMenu;
public List<SWFList> swfs;
public void createContextMenu(final List<SWFList> swfs) {
this.swfs = swfs;
@@ -501,108 +512,6 @@ public class TagTree extends JTree implements ActionListener {
openSWFInsideTagMenuItem.setVisible(false);
if (paths.length == 1) {
final TreeItem item = (TreeItem) paths[0].getLastPathComponent();
if (item instanceof ImageTag && ((ImageTag) item).importSupported()) {
replaceSelectionMenuItem.setVisible(true);
}
if (item instanceof DefineBinaryDataTag) {
replaceSelectionMenuItem.setVisible(true);
DefineBinaryDataTag bin = (DefineBinaryDataTag) item;
if (bin.binaryData.length > 8) {
String signature = new String(bin.binaryData, 0, 3, Utf8Helper.charset);
if (Arrays.asList(
"FWS", //Uncompressed Flash
"CWS", //ZLib compressed Flash
"ZWS", //LZMA compressed Flash
"GFX", //Uncompressed ScaleForm GFx
"CFX" //Compressed ScaleForm GFx
).contains(signature)) {
openSWFInsideTagMenuItem.setVisible(true);
}
}
}
if (item instanceof DefineSoundTag) {
replaceSelectionMenuItem.setVisible(true);
}
if (item instanceof SWF) {
closeSelectionMenuItem.setVisible(true);
}
List<Integer> allowedTagTypes = null;
if (item instanceof FolderItem) {
allowedTagTypes = getSwfFolderItemNestedTagIds(((FolderItem) item).getName(), item.getSwf().gfx);
} else if (item instanceof DefineSpriteTag) {
allowedTagTypes = getSpriteNestedTagIds();
}
addTagMenu.removeAll();
if (allowedTagTypes != null) {
for (Integer tagId : allowedTagTypes) {
final Class cl = TagIdClassMap.getClassByTagId(tagId);
JMenuItem tagItem = new JMenuItem(cl.getSimpleName());
tagItem.addActionListener(new ActionListener() {
@Override
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent ae) {
try {
SWF swf = item.getSwf();
Tag t = (Tag) cl.getDeclaredConstructor(SWF.class).newInstance(new Object[]{swf});
boolean isDefineSprite = item instanceof DefineSpriteTag;
Timelined timelined = isDefineSprite ? (DefineSpriteTag) item : swf;
t.setTimelined(timelined);
if (isDefineSprite) {
((DefineSpriteTag) item).subTags.add(t);
} else {
swf.tags.add(t);
}
timelined.getTimeline().reset();
swf.updateCharacters();
mainPanel.refreshTree();
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(TagTree.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
addTagMenu.add(tagItem);
}
addTagMenu.setVisible(true);
}
if (item instanceof Tag && swfs.size() > 1) {
final Tag tag = (Tag) item;
moveTagMenu.removeAll();
for (SWFList targetSwfList : swfs) {
for (final SWF targetSwf : targetSwfList) {
if (targetSwf != tag.getSwf()) {
JMenuItem swfItem = new JMenuItem(targetSwf.getShortFileName());
swfItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
tag.getSwf().tags.remove(tag);
tag.setSwf(targetSwf);
targetSwf.tags.add(tag);
mainPanel.refreshTree();
}
});
moveTagMenu.add(swfItem);
}
}
}
moveTagMenu.setVisible(true);
}
TreeModel model = getModel();
expandRecursiveMenuItem.setVisible(model.getChildCount(item) > 0);
jumpToCharacterMenuItem.setVisible(item instanceof CharacterIdTag && !(item instanceof CharacterTag));
rawEditMenuItem.setVisible(item instanceof Tag);
TreeItem item = (TreeItem) paths[0].getLastPathComponent();
List<TreeItem> li = new ArrayList<>();
li.add(item);
@@ -633,7 +542,7 @@ public class TagTree extends JTree implements ActionListener {
}
exportSelectionMenuItem.setEnabled(!items.isEmpty() && !getSelection(items.get(0).getSwf(), items).isEmpty());
TreeItem item = items.get(0);
final TreeItem item = items.get(0);
if (item instanceof ImageTag && ((ImageTag) item).importSupported()) {
replaceSelectionMenuItem.setVisible(true);
}
@@ -663,34 +572,45 @@ public class TagTree extends JTree implements ActionListener {
closeSelectionMenuItem.setVisible(true);
}
List<Integer> allowedTagTypes = null;
if (item instanceof FolderItem) {
final FolderItem folderItem = (FolderItem) item;
List<Class> allowedTagTypes = getTreeItemClasses(folderItem.getName(), item.getSwf().gfx);
addTagMenu.removeAll();
if (allowedTagTypes != null) {
for (final Class cl : allowedTagTypes) {
JMenuItem tagItem = new JMenuItem(cl.getSimpleName());
tagItem.addActionListener(new ActionListener() {
allowedTagTypes = getSwfFolderItemNestedTagIds(((FolderItem) item).getName(), item.getSwf().gfx);
} else if (item instanceof DefineSpriteTag) {
allowedTagTypes = getSpriteNestedTagIds();
}
@Override
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent ae) {
try {
SWF swf = folderItem.getSwf();
Tag t = (Tag) cl.getDeclaredConstructor(SWF.class).newInstance(new Object[]{swf});
t.setTimelined(swf);
swf.tags.add(t);
swf.updateCharacters();
mainPanel.refreshTree();
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(TagTree.class.getName()).log(Level.SEVERE, null, ex);
}
addTagMenu.removeAll();
if (allowedTagTypes != null) {
for (Integer tagId : allowedTagTypes) {
final Class cl = TagIdClassMap.getClassByTagId(tagId);
JMenuItem tagItem = new JMenuItem(cl.getSimpleName());
tagItem.addActionListener(new ActionListener() {
@Override
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent ae) {
try {
SWF swf = item.getSwf();
Tag t = (Tag) cl.getDeclaredConstructor(SWF.class).newInstance(new Object[]{swf});
boolean isDefineSprite = item instanceof DefineSpriteTag;
Timelined timelined = isDefineSprite ? (DefineSpriteTag) item : swf;
t.setTimelined(timelined);
if (isDefineSprite) {
((DefineSpriteTag) item).subTags.add(t);
} else {
swf.tags.add(t);
}
timelined.getTimeline().reset();
swf.updateCharacters();
mainPanel.refreshTree();
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException | IllegalArgumentException | InvocationTargetException ex) {
Logger.getLogger(TagTree.class.getName()).log(Level.SEVERE, null, ex);
}
});
addTagMenu.add(tagItem);
}
addTagMenu.setVisible(true);
}
});
addTagMenu.add(tagItem);
}
addTagMenu.setVisible(true);
}
if (item instanceof Tag && swfs.size() > 1) {