From e6cd239cc73c36bf1c5812c993bbe1f3839c29cb Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Fri, 7 Nov 2014 23:53:37 +0100 Subject: [PATCH] merge problem fixed --- .../decompiler/flash/gui/tagtree/TagTree.java | 178 +++++------------- 1 file changed, 49 insertions(+), 129 deletions(-) diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java index be7902983..1f35c3db8 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTree.java @@ -410,8 +410,19 @@ public class TagTree extends JTree implements ActionListener { SoundStreamBlockTag.ID, SoundStreamHeadTag.ID, SoundStreamHead2Tag.ID); } - public void createContextMenu(final List 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 swfs; public void createContextMenu(final List 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 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 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 allowedTagTypes = null; if (item instanceof FolderItem) { - final FolderItem folderItem = (FolderItem) item; - List 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) {