From 4be005617b3b8c3578cca07c5d085d12916f0d1d Mon Sep 17 00:00:00 2001
From: lclc98
Date: Thu, 30 Jun 2016 00:49:21 +1000
Subject: Json format (#2)
* Added new format
* Fixed bug
* Updated Version
---
.../enigma/analysis/FieldReferenceTreeNode.java | 81 ++++++++++++++++++++++
1 file changed, 81 insertions(+)
create mode 100644 src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
(limited to 'src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java')
diff --git a/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java b/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
new file mode 100644
index 0000000..4b302e0
--- /dev/null
+++ b/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Jeff Martin.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Lesser General Public
+ * License v3.0 which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/lgpl.html
+ *
+ * Contributors:
+ * Jeff Martin - initial API and implementation
+ ******************************************************************************/
+package cuchaz.enigma.analysis;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import cuchaz.enigma.mapping.BehaviorEntry;
+import cuchaz.enigma.mapping.FieldEntry;
+import cuchaz.enigma.mapping.Translator;
+
+public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements ReferenceTreeNode {
+
+ private static final long serialVersionUID = -7934108091928699835L;
+
+ private Translator m_deobfuscatingTranslator;
+ private FieldEntry m_entry;
+ private EntryReference m_reference;
+ private Access m_access;
+
+ public FieldReferenceTreeNode(Translator deobfuscatingTranslator, FieldEntry entry) {
+ m_deobfuscatingTranslator = deobfuscatingTranslator;
+ m_entry = entry;
+ m_reference = null;
+ }
+
+ private FieldReferenceTreeNode(Translator deobfuscatingTranslator, EntryReference reference, Access access) {
+ m_deobfuscatingTranslator = deobfuscatingTranslator;
+ m_entry = reference.entry;
+ m_reference = reference;
+ m_access = access;
+ }
+
+ @Override
+ public FieldEntry getEntry() {
+ return m_entry;
+ }
+
+ @Override
+ public EntryReference getReference() {
+ return m_reference;
+ }
+
+ @Override
+ public String toString() {
+ if (m_reference != null) {
+ return String.format("%s (%s)", m_deobfuscatingTranslator.translateEntry(m_reference.context), m_access);
+ }
+ return m_deobfuscatingTranslator.translateEntry(m_entry).toString();
+ }
+
+ public void load(JarIndex index, boolean recurse) {
+ // get all the child nodes
+ if (m_reference == null) {
+ for (EntryReference reference : index.getFieldReferences(m_entry)) {
+ add(new FieldReferenceTreeNode(m_deobfuscatingTranslator, reference, index.getAccess(m_entry)));
+ }
+ } else {
+ for (EntryReference reference : index.getBehaviorReferences(m_reference.context)) {
+ add(new BehaviorReferenceTreeNode(m_deobfuscatingTranslator, reference, index.getAccess(m_reference.context)));
+ }
+ }
+
+ if (recurse && children != null) {
+ for (Object node : children) {
+ if (node instanceof BehaviorReferenceTreeNode) {
+ ((BehaviorReferenceTreeNode) node).load(index, true);
+ } else if (node instanceof FieldReferenceTreeNode) {
+ ((FieldReferenceTreeNode) node).load(index, true);
+ }
+ }
+ }
+ }
+}
--
cgit v1.2.3