fix(gui): sort results in usage dialog (#1104)
This commit is contained in:
@@ -1,19 +1,22 @@
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user