Commit eaf623a5 authored by Skylot's avatar Skylot

gui: fix sync with editor

parent 26aa5045
...@@ -9,6 +9,7 @@ import javax.swing.ImageIcon; ...@@ -9,6 +9,7 @@ import javax.swing.ImageIcon;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.IdentityHashMap; import java.util.IdentityHashMap;
import java.util.Iterator; import java.util.Iterator;
...@@ -122,6 +123,17 @@ public class JRoot extends JNode { ...@@ -122,6 +123,17 @@ public class JRoot extends JNode {
} }
} }
public JClass searchClassInTree(JClass node) {
Enumeration en = this.breadthFirstEnumeration();
while (en.hasMoreElements()) {
Object obj = en.nextElement();
if (node.equals(obj)) {
return (JClass) obj;
}
}
return null;
}
public boolean isFlatPackages() { public boolean isFlatPackages() {
return flatPackages; return flatPackages;
} }
......
...@@ -76,6 +76,7 @@ public class MainWindow extends JFrame { ...@@ -76,6 +76,7 @@ public class MainWindow extends JFrame {
private JTree tree; private JTree tree;
private DefaultTreeModel treeModel; private DefaultTreeModel treeModel;
private JRoot treeRoot;
private TabbedPane tabbedPane; private TabbedPane tabbedPane;
public MainWindow(JadxWrapper wrapper) { public MainWindow(JadxWrapper wrapper) {
...@@ -116,7 +117,7 @@ public class MainWindow extends JFrame { ...@@ -116,7 +117,7 @@ public class MainWindow extends JFrame {
} }
private void initTree() { private void initTree() {
JRoot treeRoot = new JRoot(wrapper); treeRoot = new JRoot(wrapper);
treeModel.setRoot(treeRoot); treeModel.setRoot(treeRoot);
treeModel.reload(); treeModel.reload();
tree.expandRow(0); tree.expandRow(0);
...@@ -152,13 +153,20 @@ public class MainWindow extends JFrame { ...@@ -152,13 +153,20 @@ public class MainWindow extends JFrame {
return; return;
} }
JClass jCls = selectedCodePanel.getCls(); JClass jCls = selectedCodePanel.getCls();
if (jCls.getParent() == null && treeRoot != null) {
// node not register in tree
jCls = treeRoot.searchClassInTree(jCls);
if (jCls == null) {
LOG.error("Class not found in tree");
return;
}
}
TreeNode[] pathNodes = treeModel.getPathToRoot(jCls); TreeNode[] pathNodes = treeModel.getPathToRoot(jCls);
if (pathNodes == null) { if (pathNodes == null) {
return; return;
} }
TreePath path = new TreePath(pathNodes); TreePath path = new TreePath(pathNodes);
tree.setSelectionPath(path); tree.setSelectionPath(path);
tree.expandPath(path);
tree.makeVisible(path); tree.makeVisible(path);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment