Skip to content

Commit

Permalink
fix(gui): show 'copy name' action only for supported nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
skylot committed Sep 8, 2018
1 parent b587b6d commit 9e24a5a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 9 deletions.
23 changes: 18 additions & 5 deletions jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,12 @@ public void mouseClicked(MouseEvent e) {
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));
Expand Down Expand Up @@ -275,15 +278,25 @@ public void closeAllTabs() {
}

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() {
Expand Down
13 changes: 9 additions & 4 deletions jadx-gui/src/main/java/jadx/gui/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,14 @@ public static char caseChar(char ch, boolean toLower) {
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);
}
}
}

0 comments on commit 9e24a5a

Please sign in to comment.