From 9e24a5abeb5357265474a7dda0bb6ea910571fb1 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sun, 2 Sep 2018 15:58:34 +0300 Subject: [PATCH] fix(gui): show 'copy name' action only for supported nodes --- .../src/main/java/jadx/gui/ui/TabbedPane.java | 23 +++++++++++++++---- .../src/main/java/jadx/gui/utils/Utils.java | 13 +++++++---- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java index 97b17dbb1..ea2b01ddd 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java @@ -225,9 +225,12 @@ class TabbedPane extends JTabbedPane { private JPopupMenu createTabPopupMenu(final ContentPanel contentPanel) { JPopupMenu menu = new JPopupMenu(); - JMenuItem copyRootClassName = new JMenuItem(NLS.str("tabs.copy_class_name")); - copyRootClassName.addActionListener(actionEvent -> copyRootClassName()); - menu.add(copyRootClassName); + if (getNodeFullName() != null) { + JMenuItem copyRootClassName = new JMenuItem(NLS.str("tabs.copy_class_name")); + copyRootClassName.addActionListener(actionEvent -> copyRootClassName()); + menu.add(copyRootClassName); + menu.addSeparator(); + } JMenuItem closeTab = new JMenuItem(NLS.str("tabs.close")); closeTab.addActionListener(e -> closeCodePanel(contentPanel)); @@ -275,15 +278,25 @@ class TabbedPane extends JTabbedPane { } public void copyRootClassName() { + String name = getNodeFullName(); + if (name != null) { + Utils.setClipboardString(name); + } + } + + @Nullable + private String getNodeFullName() { ContentPanel selectedPanel = getSelectedCodePanel(); if (selectedPanel != null) { JNode node = selectedPanel.getNode(); JClass jClass = node.getRootClass(); if (jClass != null) { - String name = jClass.getFullName(); - Utils.setClipboardString(name); + return jClass.getFullName(); + } else { + return node.getName(); } } + return null; } public void loadSettings() { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java index 89bca8055..1a90f8999 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java @@ -141,9 +141,14 @@ public class Utils { return toLower ? Character.toLowerCase(ch) : ch; } - public static void setClipboardString(String text){ - Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - Transferable transferable = new StringSelection(text); - clipboard.setContents(transferable, null); + public static void setClipboardString(String text) { + try { + Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + Transferable transferable = new StringSelection(text); + clipboard.setContents(transferable, null); + LOG.debug("String '{}' copied to clipboard", text); + } catch (Exception e) { + LOG.error("Failed copy string '{}' to clipboard", text, e); + } } }