mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-06 00:37:52 +00:00
Merge pull request #63 from CapslockRSPS/master
[FEATURE] Added search function to Reflection Explorer
This commit is contained in:
@@ -38,7 +38,7 @@ public class BotUI extends JFrame implements ActionListener, ComponentListener,
|
|||||||
|
|
||||||
setTitle("Parabot");
|
setTitle("Parabot");
|
||||||
setResizable(false);
|
setResizable(false);
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
|
||||||
createMenu();
|
createMenu();
|
||||||
|
|
||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
|
|||||||
@@ -11,8 +11,12 @@ import javax.swing.event.TreeSelectionEvent;
|
|||||||
import javax.swing.event.TreeSelectionListener;
|
import javax.swing.event.TreeSelectionListener;
|
||||||
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
||||||
import javax.swing.tree.DefaultTreeModel;
|
import javax.swing.tree.DefaultTreeModel;
|
||||||
|
import javax.swing.tree.TreeNode;
|
||||||
import javax.swing.tree.TreePath;
|
import javax.swing.tree.TreePath;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -22,6 +26,7 @@ import java.util.HashMap;
|
|||||||
*/
|
*/
|
||||||
public class ReflectUI extends JFrame {
|
public class ReflectUI extends JFrame {
|
||||||
private static final long serialVersionUID = 98565034137367257L;
|
private static final long serialVersionUID = 98565034137367257L;
|
||||||
|
private JTree tree;
|
||||||
private DefaultMutableTreeNode root;
|
private DefaultMutableTreeNode root;
|
||||||
private DefaultTreeModel model;
|
private DefaultTreeModel model;
|
||||||
private JEditorPane basicInfoPane;
|
private JEditorPane basicInfoPane;
|
||||||
@@ -55,7 +60,75 @@ public class ReflectUI extends JFrame {
|
|||||||
JPanel infoContent = new JPanel();
|
JPanel infoContent = new JPanel();
|
||||||
infoContent.setLayout(new BoxLayout(infoContent, BoxLayout.Y_AXIS));
|
infoContent.setLayout(new BoxLayout(infoContent, BoxLayout.Y_AXIS));
|
||||||
|
|
||||||
JTree tree = new JTree();
|
JPanel searchContent = new JPanel();
|
||||||
|
searchContent.setLayout(new BoxLayout(searchContent, BoxLayout.X_AXIS));
|
||||||
|
|
||||||
|
final JTextField searchFunction = new JTextField(10);
|
||||||
|
searchFunction.setHorizontalAlignment(JTextField.CENTER);
|
||||||
|
searchFunction.setSize(30, 30);
|
||||||
|
searchFunction.setColumns(1);
|
||||||
|
searchFunction.setPreferredSize(new Dimension(30, 30));
|
||||||
|
|
||||||
|
final JButton searchButton = new JButton("Search");
|
||||||
|
searchFunction.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
searchButton.getActionListeners()[0].actionPerformed(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
searchButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
RefField result = null;
|
||||||
|
String search = searchFunction.getText();
|
||||||
|
for (RefField f : fields.values()) {
|
||||||
|
if (f != null && (f.asObject()) != null) {
|
||||||
|
String value;
|
||||||
|
if ((value = f.asObject().toString()).equalsIgnoreCase(search)) {
|
||||||
|
result = f;
|
||||||
|
} else if (value.toLowerCase().startsWith(search.toLowerCase())) {
|
||||||
|
result = f;
|
||||||
|
} else if (value.toLowerCase().endsWith(search.toLowerCase())) {
|
||||||
|
result = f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result != null) {
|
||||||
|
setFieldInfo(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
final JButton adjustClasses = new JButton("Expand");
|
||||||
|
adjustClasses.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
Enumeration<?> topLevelNodes
|
||||||
|
= ((TreeNode) tree.getModel().getRoot()).children();
|
||||||
|
while (topLevelNodes.hasMoreElements()) {
|
||||||
|
DefaultMutableTreeNode node
|
||||||
|
= (DefaultMutableTreeNode) topLevelNodes.nextElement();
|
||||||
|
TreePath treePath = new TreePath(node.getPath());
|
||||||
|
if (adjustClasses.getText().equalsIgnoreCase("expand")) {
|
||||||
|
tree.expandPath(treePath);
|
||||||
|
} else {
|
||||||
|
tree.collapsePath(treePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
adjustClasses.setText(adjustClasses.getText().equalsIgnoreCase("expand") ? "Collapse" : "Expand");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
searchContent.add(adjustClasses);
|
||||||
|
searchContent.add(searchFunction);
|
||||||
|
searchContent.setMaximumSize(new Dimension(500, (int) searchContent.getPreferredSize().getHeight()));
|
||||||
|
searchContent.add(searchButton);
|
||||||
|
|
||||||
|
|
||||||
|
tree = new JTree();
|
||||||
tree.setRootVisible(true);
|
tree.setRootVisible(true);
|
||||||
tree.setShowsRootHandles(true);
|
tree.setShowsRootHandles(true);
|
||||||
tree.setModel(model);
|
tree.setModel(model);
|
||||||
@@ -67,16 +140,12 @@ public class ReflectUI extends JFrame {
|
|||||||
Object[] pathElements = path.getPath();
|
Object[] pathElements = path.getPath();
|
||||||
Object element = pathElements[pathElements.length - 1];
|
Object element = pathElements[pathElements.length - 1];
|
||||||
if (pathElements.length == 2) {
|
if (pathElements.length == 2) {
|
||||||
// class
|
|
||||||
setClassInfo(classes.get(element));
|
setClassInfo(classes.get(element));
|
||||||
}
|
} else if (pathElements.length == 3) {
|
||||||
if (pathElements.length == 3) {
|
|
||||||
// field
|
|
||||||
RefField field = fields.get(element);
|
RefField field = fields.get(element);
|
||||||
setFieldInfo(field);
|
setFieldInfo(field);
|
||||||
DefaultMutableTreeNode el = (DefaultMutableTreeNode) element;
|
DefaultMutableTreeNode el = (DefaultMutableTreeNode) element;
|
||||||
el.setUserObject("Field: " + field.getName() + " [type: " + field.getASMType() + "] [value: " + field.asObject() + "]");
|
el.setUserObject("Field: " + field.getName() + " [type: " + field.getASMType() + "] [value: " + field.asObject() + "]");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,6 +175,7 @@ public class ReflectUI extends JFrame {
|
|||||||
exploreContent.add(infoContent);
|
exploreContent.add(infoContent);
|
||||||
|
|
||||||
content.add(exploreContent);
|
content.add(exploreContent);
|
||||||
|
content.add(searchContent);
|
||||||
|
|
||||||
JScrollPane contentPane = new JScrollPane(content);
|
JScrollPane contentPane = new JScrollPane(content);
|
||||||
Dimension prefSize = content.getPreferredSize();
|
Dimension prefSize = content.getPreferredSize();
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ public class ServerSelector extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ServerSelector() {
|
public ServerSelector() {
|
||||||
|
|
||||||
Queue<ServerComponent> widgets = getServers();
|
Queue<ServerComponent> widgets = getServers();
|
||||||
if (initServer != null) {
|
if (initServer != null) {
|
||||||
if (runServer(widgets)) {
|
if (runServer(widgets)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user