未验证 提交 f3700595 编写于 作者: S Skylot

fix(gui): sort results in usage dialog (#1104)

上级 dfdc14ea
package jadx.gui.treemodel;
import java.util.Comparator;
import javax.swing.Icon;
import org.jetbrains.annotations.NotNull;
import jadx.api.JavaNode;
import jadx.gui.utils.search.StringRef;
public class CodeNode extends JNode {
public class CodeNode extends JNode implements Comparable<CodeNode> {
private static final long serialVersionUID = 1658650786734966545L;
private final transient JNode jNode;
private final transient JClass jParent;
private final transient StringRef line;
private final transient int lineNum;
private transient int pos;
private final transient int pos;
public CodeNode(JNode jNode, StringRef lineStr, int lineNum, int pos) {
this.jNode = jNode;
......@@ -84,6 +87,11 @@ public class CodeNode extends JNode {
return jNode.getSyntaxName();
}
@Override
public int getPos() {
return pos;
}
@Override
public boolean equals(Object o) {
if (this == o) {
......@@ -101,8 +109,12 @@ public class CodeNode extends JNode {
return jNode.hashCode();
}
public static final Comparator<CodeNode> COMPARATOR = Comparator
.comparing(CodeNode::getJParent)
.thenComparingInt(CodeNode::getPos);
@Override
public int getPos() {
return pos;
public int compareTo(@NotNull CodeNode other) {
return COMPARATOR.compare(this, other);
}
}
......@@ -4,6 +4,7 @@ import javax.swing.Icon;
import javax.swing.ImageIcon;
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import jadx.api.ICodeInfo;
......@@ -19,7 +20,7 @@ import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
public class JClass extends JLoadableNode {
public class JClass extends JLoadableNode implements Comparable<JClass> {
private static final long serialVersionUID = -1239986875244097177L;
private static final ImageIcon ICON_CLASS = UiUtils.openSvgIcon("nodes/class");
......@@ -198,4 +199,9 @@ public class JClass extends JLoadableNode {
public String makeLongString() {
return cls.getFullName();
}
@Override
public int compareTo(@NotNull JClass o) {
return this.getFullName().compareTo(o.getFullName());
}
}
......@@ -3,6 +3,7 @@ package jadx.gui.ui.dialog;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
......@@ -17,6 +18,7 @@ import jadx.api.JavaClass;
import jadx.api.JavaNode;
import jadx.gui.jobs.IndexService;
import jadx.gui.jobs.TaskStatus;
import jadx.gui.treemodel.CodeNode;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.MainWindow;
import jadx.gui.utils.CodeUsageInfo;
......@@ -95,7 +97,9 @@ public class UsageDialog extends CommonSearchDialog {
if (usageInfo == null) {
return;
}
resultsModel.addAll(usageInfo.getUsageList(node));
List<CodeNode> usageList = usageInfo.getUsageList(node);
Collections.sort(usageList);
resultsModel.addAll(usageList);
// TODO: highlight only needed node usage
highlightText = null;
super.performSearch();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册