mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-04 15:14:49 +00:00
Merge origin/master
This commit is contained in:
@@ -388,17 +388,19 @@ public class MainFrameRibbonMenu extends MainFrameMenu implements ActionListener
|
||||
|
||||
private List<RibbonBandResizePolicy> getIconBandResizePolicies(JRibbonBand ribbonBand) {
|
||||
List<RibbonBandResizePolicy> resizePolicies = new ArrayList<>();
|
||||
IconRibbonBandResizePolicy iconBandResizePolicy = new IconRibbonBandResizePolicy(ribbonBand.getControlPanel());
|
||||
final int width = Math.max(105, iconBandResizePolicy.getPreferredWidth(0, 0));
|
||||
resizePolicies.add(new BaseRibbonBandResizePolicy<AbstractBandControlPanel>(ribbonBand.getControlPanel()) {
|
||||
@Override
|
||||
public int getPreferredWidth(int i, int i1) {
|
||||
return 105;
|
||||
return width;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void install(int i, int i1) {
|
||||
}
|
||||
});
|
||||
resizePolicies.add(new IconRibbonBandResizePolicy(ribbonBand.getControlPanel()));
|
||||
resizePolicies.add(iconBandResizePolicy);
|
||||
return resizePolicies;
|
||||
}
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
});
|
||||
}
|
||||
|
||||
public void update(List<TreeItem> items) {
|
||||
public void update(final List<TreeItem> items) {
|
||||
|
||||
if (items.isEmpty()) {
|
||||
return;
|
||||
@@ -283,6 +283,23 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
}
|
||||
}
|
||||
|
||||
boolean allSelectedIsInTheSameSwf = true;
|
||||
SWF singleSwf = null;
|
||||
for (TreeItem item : items) {
|
||||
if (item instanceof SWFList) {
|
||||
allSelectedIsInTheSameSwf = false;
|
||||
break;
|
||||
}
|
||||
if (singleSwf == null) {
|
||||
singleSwf = item.getSwf();
|
||||
} else {
|
||||
if (singleSwf != item.getSwf()) {
|
||||
allSelectedIsInTheSameSwf = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expandRecursiveMenuItem.setVisible(false);
|
||||
removeMenuItem.setVisible(allSelectedIsTagOrFrame);
|
||||
removeWithDependenciesMenuItem.setVisible(allSelectedIsTagOrFrame);
|
||||
@@ -300,10 +317,11 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
copyTagMenu.setVisible(false);
|
||||
openSWFInsideTagMenuItem.setVisible(false);
|
||||
|
||||
final TreeItem firstItem = items.get(0);
|
||||
boolean singleSelect = items.size() == 1;
|
||||
|
||||
if (singleSelect) {
|
||||
final TreeItem firstItem = items.get(0);
|
||||
|
||||
// replace
|
||||
if (firstItem instanceof ImageTag && ((ImageTag) firstItem).importSupported()) {
|
||||
replaceMenuItem.setVisible(true);
|
||||
@@ -374,61 +392,6 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
addTagMenu.setVisible(true);
|
||||
}
|
||||
|
||||
if (firstItem instanceof Tag && swfs.size() > 1) {
|
||||
final Tag tag = (Tag) firstItem;
|
||||
moveTagMenu.removeAll();
|
||||
copyTagMenu.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) {
|
||||
SWF sourceSwf = tag.getSwf();
|
||||
sourceSwf.tags.remove(tag);
|
||||
tag.setSwf(targetSwf);
|
||||
targetSwf.tags.add(tag);
|
||||
tag.setModified(true);
|
||||
sourceSwf.assignExportNamesToSymbols();
|
||||
targetSwf.assignExportNamesToSymbols();
|
||||
sourceSwf.assignClassesToSymbols();
|
||||
targetSwf.assignClassesToSymbols();
|
||||
sourceSwf.clearImageCache();
|
||||
targetSwf.clearImageCache();
|
||||
mainPanel.refreshTree(null); // refresh all opened swfs
|
||||
}
|
||||
});
|
||||
moveTagMenu.add(swfItem);
|
||||
|
||||
swfItem = new JMenuItem(targetSwf.getShortFileName());
|
||||
swfItem.addActionListener(new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
try {
|
||||
Tag copyTag = tag.cloneTag();
|
||||
copyTag.setSwf(targetSwf);
|
||||
targetSwf.tags.add(copyTag);
|
||||
copyTag.setModified(true);
|
||||
targetSwf.assignExportNamesToSymbols();
|
||||
targetSwf.assignClassesToSymbols();
|
||||
targetSwf.clearImageCache();
|
||||
mainPanel.refreshTree(targetSwf);
|
||||
} catch (IOException | InterruptedException ex) {
|
||||
Logger.getLogger(TagTreeContextMenu.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
copyTagMenu.add(swfItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
moveTagMenu.setVisible(true);
|
||||
copyTagMenu.setVisible(true);
|
||||
}
|
||||
|
||||
if (tagTree.getModel().getChildCount(firstItem) > 0) {
|
||||
expandRecursiveMenuItem.setVisible(true);
|
||||
}
|
||||
@@ -441,6 +404,71 @@ public class TagTreeContextMenu extends JPopupMenu implements ActionListener {
|
||||
rawEditMenuItem.setVisible(firstItem instanceof Tag);
|
||||
}
|
||||
}
|
||||
|
||||
if (allSelectedIsInTheSameSwf && allSelectedIsTag && swfs.size() > 1) {
|
||||
moveTagMenu.removeAll();
|
||||
copyTagMenu.removeAll();
|
||||
for (SWFList targetSwfList : swfs) {
|
||||
for (final SWF targetSwf : targetSwfList) {
|
||||
if (targetSwf != singleSwf) {
|
||||
JMenuItem swfItem = new JMenuItem(targetSwf.getShortFileName());
|
||||
swfItem.addActionListener(new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
SWF sourceSwf = items.get(0).getSwf();
|
||||
for (TreeItem item : items) {
|
||||
Tag tag = (Tag) item;
|
||||
sourceSwf.tags.remove(tag);
|
||||
tag.setSwf(targetSwf);
|
||||
targetSwf.tags.add(tag);
|
||||
tag.setModified(true);
|
||||
}
|
||||
|
||||
sourceSwf.assignExportNamesToSymbols();
|
||||
targetSwf.assignExportNamesToSymbols();
|
||||
sourceSwf.assignClassesToSymbols();
|
||||
targetSwf.assignClassesToSymbols();
|
||||
sourceSwf.clearImageCache();
|
||||
targetSwf.clearImageCache();
|
||||
sourceSwf.updateCharacters();
|
||||
targetSwf.updateCharacters();
|
||||
mainPanel.refreshTree(null); // refresh all opened swfs
|
||||
}
|
||||
});
|
||||
moveTagMenu.add(swfItem);
|
||||
|
||||
swfItem = new JMenuItem(targetSwf.getShortFileName());
|
||||
swfItem.addActionListener(new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
try {
|
||||
for (TreeItem item : items) {
|
||||
Tag tag = (Tag) item;
|
||||
Tag copyTag = tag.cloneTag();
|
||||
copyTag.setSwf(targetSwf);
|
||||
targetSwf.tags.add(copyTag);
|
||||
copyTag.setModified(true);
|
||||
}
|
||||
|
||||
targetSwf.assignExportNamesToSymbols();
|
||||
targetSwf.assignClassesToSymbols();
|
||||
targetSwf.clearImageCache();
|
||||
targetSwf.updateCharacters();
|
||||
mainPanel.refreshTree(targetSwf);
|
||||
} catch (IOException | InterruptedException ex) {
|
||||
Logger.getLogger(TagTreeContextMenu.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
copyTagMenu.add(swfItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
moveTagMenu.setVisible(true);
|
||||
copyTagMenu.setVisible(true);
|
||||
}
|
||||
|
||||
if (allSelectedIsBinaryData) {
|
||||
boolean anyInnerSwf = false;
|
||||
|
||||
Reference in New Issue
Block a user