diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java index d1c2b574a..433ac6f20 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java @@ -1,6 +1,7 @@ package jadx.gui.treemodel; -import javax.swing.*; +import javax.swing.Icon; +import javax.swing.ImageIcon; import jadx.api.JavaField; import jadx.api.JavaNode; @@ -65,11 +66,21 @@ public class JField extends JNode { return UiUtils.typeFormat(field.getName(), field.getType()); } + @Override + public String makeStringHtml() { + return UiUtils.typeFormatHtml(field.getName(), field.getType()); + } + @Override public String makeLongString() { return UiUtils.typeFormat(field.getFullName(), field.getType()); } + @Override + public String makeLongStringHtml() { + return UiUtils.typeFormatHtml(field.getFullName(), field.getType()); + } + @Override public int hashCode() { return field.hashCode(); diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java index 1cef3404f..ffe4e60d3 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java @@ -2,7 +2,8 @@ package jadx.gui.treemodel; import java.util.Iterator; -import javax.swing.*; +import javax.swing.Icon; +import javax.swing.ImageIcon; import jadx.api.JavaMethod; import jadx.api.JavaNode; @@ -93,12 +94,23 @@ public class JMethod extends JNode { return UiUtils.typeFormat(makeBaseString(), getReturnType()); } + @Override + public String makeStringHtml() { + return UiUtils.typeFormatHtml(makeBaseString(), getReturnType()); + } + @Override public String makeLongString() { String name = mth.getDeclaringClass().getFullName() + '.' + makeBaseString(); return UiUtils.typeFormat(name, getReturnType()); } + @Override + public String makeLongStringHtml() { + String name = mth.getDeclaringClass().getFullName() + '.' + makeBaseString(); + return UiUtils.typeFormatHtml(name, getReturnType()); + } + @Override public int hashCode() { return mth.hashCode(); diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java index 85750bc25..5d15a84fe 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java @@ -1,6 +1,6 @@ package jadx.gui.treemodel; -import javax.swing.*; +import javax.swing.Icon; import javax.swing.tree.DefaultMutableTreeNode; import org.fife.ui.rsyntaxtextarea.SyntaxConstants; @@ -77,6 +77,10 @@ public abstract class JNode extends DefaultMutableTreeNode { public abstract String makeString(); + public String makeStringHtml() { + return makeString(); + } + public String makeDescString() { return null; } @@ -89,6 +93,10 @@ public abstract class JNode extends DefaultMutableTreeNode { return makeString(); } + public String makeLongStringHtml() { + return makeString(); + } + @Override public String toString() { return makeString(); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java index 86073aa15..17e6ccf5d 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java @@ -446,7 +446,7 @@ public abstract class CommonSearchDialog extends JDialog { private Component makeCell(JNode node, int column) { if (column == 0) { - JLabel label = new JLabel(node.makeLongString() + " ", node.getIcon(), SwingConstants.LEFT); + JLabel label = new JLabel(node.makeLongStringHtml() + " ", node.getIcon(), SwingConstants.LEFT); label.setFont(font); label.setOpaque(true); label.setToolTipText(label.getText()); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java index b70f87704..06fe2bfbf 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java @@ -196,7 +196,7 @@ public class RenameDialog extends JDialog { private void initUI() { JLabel lbl = new JLabel(NLS.str("popup.rename")); - JLabel nodeLabel = new JLabel(this.node.makeLongString(), this.node.getIcon(), SwingConstants.LEFT); + JLabel nodeLabel = new JLabel(this.node.makeLongStringHtml(), this.node.getIcon(), SwingConstants.LEFT); lbl.setLabelFor(nodeLabel); renameField = new JTextField(40); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java b/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java index f53fc91d9..98968dd67 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java @@ -47,7 +47,7 @@ public class TabComponent extends JPanel { panel.setOpaque(false); JNode node = contentPanel.getNode(); - label = new JLabel(node.makeLongString()); + label = new JLabel(node.makeLongStringHtml()); label.setFont(getLabelFont()); String toolTip = contentPanel.getTabTooltip(); if (toolTip != null) { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java index cbc0a6860..06d7e5df2 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java @@ -54,7 +54,7 @@ public class UsageDialog extends CommonSearchDialog { private void initUI() { JLabel lbl = new JLabel(NLS.str("usage_dialog.label")); - JLabel nodeLabel = new JLabel(this.node.makeLongString(), this.node.getIcon(), SwingConstants.LEFT); + JLabel nodeLabel = new JLabel(this.node.makeLongStringHtml(), this.node.getIcon(), SwingConstants.LEFT); lbl.setLabelFor(nodeLabel); JPanel searchPane = new JPanel(); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java b/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java index 54fb89b15..5b62e6777 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java @@ -65,6 +65,10 @@ public class UiUtils { } public static String typeFormat(String name, ArgType type) { + return name + typeStr(type); + } + + public static String typeFormatHtml(String name, ArgType type) { return "" + escapeHtml(name) + " " + escapeHtml(typeStr(type)) + "" + ""; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java index 0cc09c561..1be31cc5f 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java @@ -37,8 +37,8 @@ public class TextSearchIndex { private final JNodeCache nodeCache; private SearchIndex clsNamesIndex; - private SearchIndex mthNamesIndex; - private SearchIndex fldNamesIndex; + private SearchIndex mthSignaturesIndex; + private SearchIndex fldSignaturesIndex; private SearchIndex codeIndex; private List skippedClasses = new ArrayList<>(); @@ -46,18 +46,20 @@ public class TextSearchIndex { public TextSearchIndex(JNodeCache nodeCache) { this.nodeCache = nodeCache; this.clsNamesIndex = new SimpleIndex<>(); - this.mthNamesIndex = new SimpleIndex<>(); - this.fldNamesIndex = new SimpleIndex<>(); + this.mthSignaturesIndex = new SimpleIndex<>(); + this.fldSignaturesIndex = new SimpleIndex<>(); this.codeIndex = new CodeIndex<>(); } public void indexNames(JavaClass cls) { clsNamesIndex.put(cls.getFullName(), nodeCache.makeFrom(cls)); for (JavaMethod mth : cls.getMethods()) { - mthNamesIndex.put(mth.getName(), nodeCache.makeFrom(mth)); + JNode mthNode = nodeCache.makeFrom(mth); + mthSignaturesIndex.put(mthNode.makeLongString(), mthNode); } for (JavaField fld : cls.getFields()) { - fldNamesIndex.put(fld.getName(), nodeCache.makeFrom(fld)); + JNode fldNode = nodeCache.makeFrom(fld); + fldSignaturesIndex.put(fldNode.makeLongString(), fldNode); } for (JavaClass innerCls : cls.getInnerClasses()) { indexNames(innerCls); @@ -97,10 +99,10 @@ public class TextSearchIndex { result = Flowable.concat(result, clsNamesIndex.search(text, ignoreCase)); } if (options.contains(METHOD)) { - result = Flowable.concat(result, mthNamesIndex.search(text, ignoreCase)); + result = Flowable.concat(result, mthSignaturesIndex.search(text, ignoreCase)); } if (options.contains(FIELD)) { - result = Flowable.concat(result, fldNamesIndex.search(text, ignoreCase)); + result = Flowable.concat(result, fldSignaturesIndex.search(text, ignoreCase)); } if (options.contains(CODE)) { if (codeIndex.size() > 0) {