chore(gui): optimized the text search for classes, methods and fields (PR #887)

This commit is contained in:
Jan S
2020-03-15 16:55:32 +01:00
committed by GitHub
parent 79ab2e11f8
commit 2cc49256a9
5 changed files with 32 additions and 6 deletions
@@ -81,6 +81,16 @@ public class JField extends JNode {
return UiUtils.typeFormatHtml(field.getFullName(), field.getType());
}
@Override
public String makeDescString() {
return UiUtils.typeStr(field.getType()) + " " + field.getName();
}
@Override
public boolean hasDescString() {
return true;
}
@Override
public int hashCode() {
return field.hashCode();
@@ -111,6 +111,16 @@ public class JMethod extends JNode {
return UiUtils.typeFormatHtml(name, getReturnType());
}
@Override
public String makeDescString() {
return UiUtils.typeStr(getReturnType()) + " " + makeBaseString();
}
@Override
public boolean hasDescString() {
return true;
}
@Override
public int hashCode() {
return mth.hashCode();
@@ -94,7 +94,7 @@ public abstract class JNode extends DefaultMutableTreeNode {
}
public String makeLongStringHtml() {
return makeString();
return makeLongString();
}
@Override
@@ -1,6 +1,8 @@
package jadx.gui.utils;
import java.awt.*;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
@@ -9,7 +11,11 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import org.intellij.lang.annotations.MagicConstant;
import org.slf4j.Logger;
@@ -65,7 +71,7 @@ public class UiUtils {
}
public static String typeFormat(String name, ArgType type) {
return name + typeStr(type);
return name + " " + typeStr(type);
}
public static String typeFormatHtml(String name, ArgType type) {
@@ -55,11 +55,11 @@ public class TextSearchIndex {
clsNamesIndex.put(cls.getFullName(), nodeCache.makeFrom(cls));
for (JavaMethod mth : cls.getMethods()) {
JNode mthNode = nodeCache.makeFrom(mth);
mthSignaturesIndex.put(mthNode.makeLongString(), mthNode);
mthSignaturesIndex.put(mthNode.makeDescString(), mthNode);
}
for (JavaField fld : cls.getFields()) {
JNode fldNode = nodeCache.makeFrom(fld);
fldSignaturesIndex.put(fldNode.makeLongString(), fldNode);
fldSignaturesIndex.put(fldNode.makeDescString(), fldNode);
}
for (JavaClass innerCls : cls.getInnerClasses()) {
indexNames(innerCls);