chore: fix code formatting and resolve PR issues

This commit is contained in:
Skylot
2021-08-04 18:30:52 +01:00
parent ee12f0bd18
commit e8e0491cb5
64 changed files with 481 additions and 213 deletions
@@ -311,7 +311,7 @@ public class ResTableParser extends CommonBinaryParser {
first = false;
}
// autogenerate key name, appended with cleaned origKeyName to be human-friendly
String newResName = String.format("res_0x%08x",resRef);
String newResName = String.format("res_0x%08x", resRef);
String cleanedResName = sb.toString();
if (!cleanedResName.isEmpty()) {
newResName += "_" + cleanedResName.toLowerCase();
@@ -38,8 +38,7 @@ public class ResXmlGen {
"navigation",
"raw",
"transition",
"xml"
));
"xml"));
private final ResourceStorage resStorage;
private final ValuesParser vp;
@@ -33,7 +33,7 @@ public final class ResourceEntry {
}
public ResourceEntry copyWithId() {
return copy(String.format("%s_res_0x%08x",keyName,id));
return copy(String.format("%s_res_0x%08x", keyName, id));
}
public int getId() {
@@ -5,11 +5,18 @@ import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import com.google.gson.*;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import jadx.core.dex.nodes.ClassNode;
@@ -1,6 +1,11 @@
package jadx.gui.device.debugger;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
@@ -18,13 +23,21 @@ import jadx.core.dex.nodes.FieldNode;
import jadx.core.utils.StringUtils;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.gui.device.debugger.BreakpointManager.FileBreakpoint;
import jadx.gui.device.debugger.SmaliDebugger.*;
import jadx.gui.device.debugger.SmaliDebugger.Frame;
import jadx.gui.device.debugger.SmaliDebugger.RuntimeBreakpoint;
import jadx.gui.device.debugger.SmaliDebugger.RuntimeDebugInfo;
import jadx.gui.device.debugger.SmaliDebugger.RuntimeField;
import jadx.gui.device.debugger.SmaliDebugger.RuntimeRegister;
import jadx.gui.device.debugger.SmaliDebugger.RuntimeValue;
import jadx.gui.device.debugger.SmaliDebugger.RuntimeVarInfo;
import jadx.gui.device.debugger.SmaliDebugger.SmaliDebuggerException;
import jadx.gui.device.debugger.smali.Smali;
import jadx.gui.device.debugger.smali.SmaliRegister;
import jadx.gui.treemodel.JClass;
import jadx.gui.ui.panel.IDebugController;
import jadx.gui.ui.panel.JDebuggerPanel;
import jadx.gui.ui.panel.JDebuggerPanel.*;
import jadx.gui.ui.panel.JDebuggerPanel.IListElement;
import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
import static jadx.gui.device.debugger.SmaliDebugger.RuntimeType;
@@ -367,7 +380,6 @@ public final class DebugController implements SmaliDebugger.SuspendListener, IDe
}
if (refreshLevel == 2) {
updateAllInfo(threadID, info.getOffset());
} else {
if (cur.smali != null && cur.frame != null) {
refreshRegInfo(info.getOffset());
@@ -772,7 +784,6 @@ public final class DebugController implements SmaliDebugger.SuspendListener, IDe
valNode.updateType("class_object").updateTypeID(debugger.readID(rValue));
break;
}
} catch (SmaliDebuggerException e) {
logErr(e);
return false;
@@ -1,7 +1,12 @@
package jadx.gui.device.debugger;
import java.util.*;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import io.reactivex.annotations.Nullable;
@@ -4,16 +4,41 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.*;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.atomic.AtomicInteger;
import io.github.hqktech.JDWP;
import io.github.hqktech.JDWP.ArrayReference.Length.LengthReplyData;
import io.github.hqktech.JDWP.ByteBuffer;
import io.github.hqktech.JDWP.Event.Composite.*;
import io.github.hqktech.JDWP.Event.Composite.BreakpointEvent;
import io.github.hqktech.JDWP.Event.Composite.ClassPrepareEvent;
import io.github.hqktech.JDWP.Event.Composite.ClassUnloadEvent;
import io.github.hqktech.JDWP.Event.Composite.EventData;
import io.github.hqktech.JDWP.Event.Composite.ExceptionEvent;
import io.github.hqktech.JDWP.Event.Composite.FieldAccessEvent;
import io.github.hqktech.JDWP.Event.Composite.FieldModificationEvent;
import io.github.hqktech.JDWP.Event.Composite.MethodEntryEvent;
import io.github.hqktech.JDWP.Event.Composite.MethodExitEvent;
import io.github.hqktech.JDWP.Event.Composite.MethodExitWithReturnValueEvent;
import io.github.hqktech.JDWP.Event.Composite.MonitorContendedEnterEvent;
import io.github.hqktech.JDWP.Event.Composite.MonitorContendedEnteredEvent;
import io.github.hqktech.JDWP.Event.Composite.MonitorWaitEvent;
import io.github.hqktech.JDWP.Event.Composite.MonitorWaitedEvent;
import io.github.hqktech.JDWP.Event.Composite.SingleStepEvent;
import io.github.hqktech.JDWP.Event.Composite.ThreadDeathEvent;
import io.github.hqktech.JDWP.Event.Composite.ThreadStartEvent;
import io.github.hqktech.JDWP.Event.Composite.VMDeathEvent;
import io.github.hqktech.JDWP.Event.Composite.VMStartEvent;
import io.github.hqktech.JDWP.EventRequest.Set.ClassMatchRequest;
import io.github.hqktech.JDWP.EventRequest.Set.CountRequest;
import io.github.hqktech.JDWP.EventRequest.Set.LocationOnlyRequest;
@@ -1,14 +1,29 @@
package jadx.gui.device.debugger.smali;
import java.util.*;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import jadx.api.ICodeInfo;
import jadx.api.plugins.input.data.*;
import jadx.api.plugins.input.data.AccessFlags;
import jadx.api.plugins.input.data.AccessFlagsScope;
import jadx.api.plugins.input.data.ICatch;
import jadx.api.plugins.input.data.IClassData;
import jadx.api.plugins.input.data.ICodeReader;
import jadx.api.plugins.input.data.IDebugInfo;
import jadx.api.plugins.input.data.IFieldData;
import jadx.api.plugins.input.data.ILocalVar;
import jadx.api.plugins.input.data.IMethodData;
import jadx.api.plugins.input.data.IMethodRef;
import jadx.api.plugins.input.data.ITry;
import jadx.api.plugins.input.data.annotations.AnnotationVisibility;
import jadx.api.plugins.input.data.annotations.EncodedValue;
import jadx.api.plugins.input.data.annotations.IAnnotation;
@@ -29,7 +44,19 @@ import jadx.core.dex.nodes.MethodNode;
import static jadx.api.plugins.input.data.AccessFlagsScope.FIELD;
import static jadx.api.plugins.input.data.AccessFlagsScope.METHOD;
import static jadx.api.plugins.input.insns.Opcode.*;
import static jadx.api.plugins.input.insns.Opcode.CONST;
import static jadx.api.plugins.input.insns.Opcode.CONST_METHOD_HANDLE;
import static jadx.api.plugins.input.insns.Opcode.CONST_METHOD_TYPE;
import static jadx.api.plugins.input.insns.Opcode.CONST_WIDE;
import static jadx.api.plugins.input.insns.Opcode.FILLED_NEW_ARRAY;
import static jadx.api.plugins.input.insns.Opcode.FILLED_NEW_ARRAY_RANGE;
import static jadx.api.plugins.input.insns.Opcode.FILL_ARRAY_DATA_PAYLOAD;
import static jadx.api.plugins.input.insns.Opcode.INVOKE_CUSTOM;
import static jadx.api.plugins.input.insns.Opcode.INVOKE_CUSTOM_RANGE;
import static jadx.api.plugins.input.insns.Opcode.INVOKE_POLYMORPHIC;
import static jadx.api.plugins.input.insns.Opcode.INVOKE_POLYMORPHIC_RANGE;
import static jadx.api.plugins.input.insns.Opcode.PACKED_SWITCH_PAYLOAD;
import static jadx.api.plugins.input.insns.Opcode.SPARSE_SWITCH_PAYLOAD;
public class Smali {
@@ -308,22 +335,16 @@ public class Smali {
if (!tryFormatTargetIns(insn, node.getType(), line)) {
if (hasLiteral(insn)) {
line.getLineWriter().append(", ").append(literal(insn));
} else if (node.getType() == InsnType.INVOKE) {
line.getLineWriter().append(", ").append(method(insn));
} else if (insn.getIndexType() == InsnIndexType.FIELD_REF) {
line.getLineWriter().append(", ").append(field(insn));
} else if (insn.getIndexType() == InsnIndexType.STRING_REF) {
line.getLineWriter().append(", ").append(str(insn));
} else if (insn.getIndexType() == InsnIndexType.TYPE_REF) {
line.getLineWriter().append(", ").append(type(insn));
} else if (insn.getOpcode() == CONST_METHOD_HANDLE) {
line.getLineWriter().append(", ").append(methodHandle(insn));
} else if (insn.getOpcode() == CONST_METHOD_TYPE) {
line.getLineWriter().append(", ").append(proto(insn, insn.getIndex()));
}
@@ -621,7 +642,6 @@ public class Smali {
line.getLineWriter().append(line.getRegName(insn.getReg(0)))
.append(" .. ")
.append(line.getRegName(insn.getReg(insn.getRegsCount() - 1)));
} else if (insn.getRegsCount() > 0) {
for (int i = 0; i < insn.getRegsCount(); i++) {
if (i > 0) {
@@ -994,5 +1014,4 @@ public class Smali {
return field;
}
}
}
@@ -1,6 +1,10 @@
package jadx.gui.device.debugger.smali;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jadx.core.dex.instructions.args.InsnArg;
import jadx.core.dex.instructions.args.RegisterArg;
@@ -4,7 +4,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -16,9 +16,9 @@ import com.google.gson.GsonBuilder;
import jadx.gui.treemodel.JClass;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.HtmlPanel;
import jadx.gui.ui.TabbedPane;
import jadx.gui.utils.UiUtils;
public class QuarkReportNode extends JNode {
@@ -38,9 +38,9 @@ import jadx.core.utils.Utils;
import jadx.gui.JadxWrapper;
import jadx.gui.jobs.BackgroundExecutor;
import jadx.gui.treemodel.JMethod;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.utils.JNodeCache;
public class QuarkReportPanel extends ContentPanel {
@@ -1,6 +1,6 @@
package jadx.gui.settings;
import java.awt.*;
import java.awt.Rectangle;
public class WindowLocation {
private String windowId;
@@ -19,9 +19,9 @@ import com.android.apksig.ApkVerifier;
import jadx.api.ResourceFile;
import jadx.api.ResourceType;
import jadx.gui.JadxWrapper;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.HtmlPanel;
import jadx.gui.ui.TabbedPane;
import jadx.gui.utils.CertificateManager;
import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
@@ -1,8 +1,8 @@
package jadx.gui.treemodel;
import javax.swing.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import jadx.gui.ui.panel.ContentPanel;
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
import org.jetbrains.annotations.Nullable;
@@ -15,6 +15,7 @@ import jadx.core.dex.attributes.AFlag;
import jadx.core.dex.info.AccessInfo;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.codearea.ClassCodeContentPanel;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
@@ -12,12 +12,11 @@ import jadx.api.JavaNode;
import jadx.core.dex.attributes.AFlag;
import jadx.core.dex.info.AccessInfo;
import jadx.core.dex.instructions.args.ArgType;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.codearea.ClassCodeContentPanel;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.utils.OverlayIcon;
import jadx.gui.utils.UiUtils;
import sun.security.mscapi.PRNG;
public class JMethod extends JNode {
private static final long serialVersionUID = 3834526867464663751L;
@@ -75,23 +74,23 @@ public class JMethod extends JNode {
public Icon getIcon() {
AccessInfo accessFlags = mth.getAccessFlags();
Icon icon = ICON_METHOD;
if(accessFlags.isAbstract()){
if (accessFlags.isAbstract()) {
icon = ICON_METHOD_ABSTRACT;
}
if (accessFlags.isConstructor()) {
icon = ICON_METHOD_CONSTRUCTOR;
}
if(accessFlags.isPublic()){
icon= ICON_METHOD_PUBLIC;
if (accessFlags.isPublic()) {
icon = ICON_METHOD_PUBLIC;
}
if(accessFlags.isPrivate()){
if (accessFlags.isPrivate()) {
icon = ICON_METHOD_PRIVATE;
}
if(accessFlags.isProtected()){
if (accessFlags.isProtected()) {
icon = ICON_METHOD_PROTECTED;
}
if (accessFlags.isSynchronized()) {
icon= ICON_METHOD_SYNC;
icon = ICON_METHOD_SYNC;
}
OverlayIcon overIcon = new OverlayIcon(icon);
@@ -9,8 +9,8 @@ import org.jetbrains.annotations.Nullable;
import jadx.api.ICodeInfo;
import jadx.api.JadxDecompiler;
import jadx.api.JavaNode;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.panel.ContentPanel;
public abstract class JNode extends DefaultMutableTreeNode {
@@ -4,7 +4,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import org.jetbrains.annotations.NotNull;
@@ -1,6 +1,6 @@
package jadx.gui.treemodel;
import javax.swing.*;
import javax.swing.Icon;
import jadx.core.utils.StringUtils;
@@ -21,12 +21,11 @@ import jadx.api.ResourcesLoader;
import jadx.api.impl.SimpleCodeInfo;
import jadx.core.utils.Utils;
import jadx.core.xmlgen.ResContainer;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.ImagePanel;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.codearea.CodeContentPanel;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.ImagePanel;
import jadx.gui.utils.NLS;
import jadx.gui.utils.OverlayIcon;
import jadx.gui.utils.UiUtils;
public class JResource extends JLoadableNode implements Comparable<JResource> {
@@ -278,7 +277,7 @@ public class JResource extends JLoadableNode implements Comparable<JResource> {
case FILE:
ResourceType resType = resFile.getType();
switch (resType){
switch (resType) {
case MANIFEST:
return MANIFEST_ICON;
case ARSC:
@@ -8,7 +8,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import jadx.api.JavaPackage;
import jadx.gui.JadxWrapper;
@@ -1,6 +1,6 @@
package jadx.gui.treemodel;
import javax.swing.*;
import javax.swing.Icon;
import jadx.api.JavaNode;
import jadx.api.JavaVariable;
@@ -49,5 +49,4 @@ public class JVariable extends JNode {
public boolean canRename() {
return true;
}
}
@@ -1,6 +1,6 @@
package jadx.gui.treemodel;
import javax.swing.*;
import javax.swing.Icon;
public class TextNode extends JNode {
@@ -1,13 +1,13 @@
package jadx.gui.ui;
import java.awt.*;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import javax.swing.*;
import javax.swing.FocusManager;
import javax.swing.JProgressBar;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -74,11 +74,6 @@ import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import jadx.gui.ui.dialog.*;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.JDebuggerPanel;
import jadx.gui.ui.panel.ProgressPanel;
import jadx.gui.ui.popupmenu.JPackagePopupMenu;
import org.fife.ui.rsyntaxtextarea.Theme;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -113,6 +108,15 @@ import jadx.gui.treemodel.JPackage;
import jadx.gui.treemodel.JResource;
import jadx.gui.treemodel.JRoot;
import jadx.gui.ui.codearea.AbstractCodeContentPanel;
import jadx.gui.ui.dialog.ADBDialog;
import jadx.gui.ui.dialog.AboutDialog;
import jadx.gui.ui.dialog.LogViewerDialog;
import jadx.gui.ui.dialog.RenameDialog;
import jadx.gui.ui.dialog.SearchDialog;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.JDebuggerPanel;
import jadx.gui.ui.panel.ProgressPanel;
import jadx.gui.ui.popupmenu.JPackagePopupMenu;
import jadx.gui.update.JadxUpdate;
import jadx.gui.update.JadxUpdate.IUpdateCallback;
import jadx.gui.update.data.Release;
@@ -1,13 +1,21 @@
package jadx.gui.ui;
import java.awt.*;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import javax.swing.plaf.basic.BasicButtonUI;
import jadx.gui.treemodel.JClass;
@@ -16,9 +16,6 @@ import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.HtmlPanel;
import jadx.gui.ui.panel.ImagePanel;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -31,6 +28,9 @@ import jadx.gui.ui.codearea.AbstractCodeArea;
import jadx.gui.ui.codearea.AbstractCodeContentPanel;
import jadx.gui.ui.codearea.ClassCodeContentPanel;
import jadx.gui.ui.codearea.SmaliArea;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.panel.HtmlPanel;
import jadx.gui.ui.panel.ImagePanel;
import jadx.gui.utils.JumpManager;
import jadx.gui.utils.JumpPosition;
@@ -122,7 +122,7 @@ public class TabbedPane extends JTabbedPane {
lastTab = null;
return;
}
// FocusManager.focusOnCodePanel(tab);
FocusManager.focusOnCodePanel(tab);
if (tab == curTab) { // a tab was closed by not the current one.
if (lastTab != null && indexOfComponent(lastTab) == -1) { // lastTab was closed
setLastTabAdjacentToCurTab();
@@ -197,7 +197,7 @@ public class TabbedPane extends JTabbedPane {
codeArea.scrollToLine(line);
}
}
//codeArea.requestFocus();
codeArea.requestFocus();
});
}
@@ -240,7 +240,7 @@ public class TabbedPane extends JTabbedPane {
smaliArea.scrollToDebugPos(pos);
}
smaliArea.scrollToPos(pos);
//smaliArea.requestFocus();
smaliArea.requestFocus();
}
@Nullable
@@ -32,8 +32,8 @@ import jadx.core.utils.StringUtils;
import jadx.gui.settings.JadxSettings;
import jadx.gui.treemodel.JClass;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.utils.DefaultPopupMenuListener;
import jadx.gui.utils.JumpPosition;
import jadx.gui.utils.NLS;
@@ -1,8 +1,8 @@
package jadx.gui.ui.codearea;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.panel.ContentPanel;
/**
* The abstract base class for a content panel that show text based code or a.g. a resource
@@ -15,5 +15,4 @@ public abstract class AbstractCodeContentPanel extends ContentPanel {
}
public abstract AbstractCodeArea getCodeArea();
}
@@ -21,8 +21,8 @@ import jadx.api.JavaNode;
import jadx.gui.settings.JadxProject;
import jadx.gui.treemodel.JClass;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.utils.CaretPositionFix;
import jadx.gui.utils.DefaultPopupMenuListener;
import jadx.gui.utils.JNodeCache;
@@ -37,13 +37,12 @@ public final class CodeArea extends AbstractCodeArea {
private static final Logger LOG = LoggerFactory.getLogger(CodeArea.class);
private static final long serialVersionUID = 6312736869579635796L;
private final boolean isJavaCode;
CodeArea(ContentPanel contentPanel) {
super(contentPanel);
setSyntaxEditingStyle(node.getSyntaxName());
isJavaCode = node instanceof JClass;
boolean isJavaCode = node instanceof JClass;
if (isJavaCode) {
((RSyntaxDocument) getDocument()).setSyntaxStyle(new JadxTokenMaker(this));
addMenuItems();
@@ -244,8 +243,4 @@ public final class CodeArea extends AbstractCodeArea {
public JadxProject getProject() {
return getMainWindow().getProject();
}
public boolean isJavaCode() {
return isJavaCode;
}
}
@@ -1,6 +1,6 @@
package jadx.gui.ui.codearea;
import java.awt.*;
import java.awt.BorderLayout;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.TabbedPane;
@@ -1,14 +1,23 @@
package jadx.gui.ui.codearea;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JPopupMenu.Separator;
import javax.swing.JScrollPane;
import javax.swing.JViewport;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.event.PopupMenuEvent;
@@ -124,23 +133,16 @@ public class CodePanel extends JPanel {
if (codeArea instanceof SmaliArea) {
return false;
}
if (codeArea instanceof CodeArea) {
CodeArea code = (CodeArea) codeArea;
if (!code.isJavaCode()) {
return false;
}
ICodeInfo codeInfo = code.getNode().getCodeInfo();
if (codeInfo == null) {
return false;
}
Map<Integer, Integer> lineMapping = codeInfo.getLineMapping();
if (lineMapping.isEmpty()) {
return false;
}
Set<Integer> uniqueSourceLines = new HashSet<>(lineMapping.values());
return uniqueSourceLines.size() > 3;
ICodeInfo codeInfo = codeArea.getNode().getCodeInfo();
if (codeInfo == null) {
return false;
}
return false;
Map<Integer, Integer> lineMapping = codeInfo.getLineMapping();
if (lineMapping.isEmpty()) {
return false;
}
Set<Integer> uniqueSourceLines = new HashSet<>(lineMapping.values());
return uniqueSourceLines.size() > 3;
}
public SearchBar getSearchBar() {
@@ -3,7 +3,8 @@ package jadx.gui.ui.codearea;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.KeyStroke;
import org.jetbrains.annotations.Nullable;
@@ -3,7 +3,8 @@ package jadx.gui.ui.codearea;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.KeyStroke;
import org.jetbrains.annotations.Nullable;
@@ -74,20 +74,13 @@ public class LineNumbers extends JPanel implements CaretListener {
setPreferredWidth();
codeArea.addCaretListener(this);
// use source lines only decompiled java code
if (codeArea instanceof CodeArea) {
CodeArea code = (CodeArea) codeArea;
if (code.isJavaCode()) {
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
useSourceLines = !useSourceLines;
repaint();
}
});
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
useSourceLines = !useSourceLines;
repaint();
}
}
});
}
public void setBorderGap(int borderGap) {
@@ -2,7 +2,8 @@ package jadx.gui.ui.codearea;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.KeyStroke;
import javax.swing.event.PopupMenuEvent;
import org.jetbrains.annotations.Nullable;
@@ -1,11 +1,15 @@
package jadx.gui.ui.codearea;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.text.BadLocationException;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
@@ -25,10 +29,6 @@ class SearchBar extends JToolBar {
private static final Logger LOG = LoggerFactory.getLogger(SearchBar.class);
private static final Color COLOR_BG_ERROR = new Color(0xFFDFDE);
private static final Color COLOR_BG_WARN = new Color(0xFFFDD9);
//private static final Color COLOR_BG_NORMAL = new Color(0xFFFFFF);
private static final Icon ICON_UP = UiUtils.openSvgIcon("ui/top");
private static final Icon ICON_DOWN = UiUtils.openSvgIcon("ui/bottom");
private static final Icon ICON_CLOSE = UiUtils.openSvgIcon("ui/close");
@@ -38,10 +38,11 @@ class SearchBar extends JToolBar {
private final JTextField searchField;
private final JCheckBox markAllCB;
private final JCheckBox regexCB;
private final JCheckBox wholeWordCB;
private final JCheckBox matchCaseCB;
private boolean notFound;
public SearchBar(RSyntaxTextArea textArea) {
rTextArea = textArea;
@@ -148,7 +149,7 @@ class SearchBar extends JToolBar {
context.setMarkAll(markAllCB.isSelected());
// TODO hack: move cursor before previous search for not jump to next occurrence
/*if (direction == 0) {
if (direction == 0 && !notFound) {
try {
int caretPos = rTextArea.getCaretPosition();
int lineNum = rTextArea.getLineOfOffset(caretPos) - 1;
@@ -158,21 +159,23 @@ class SearchBar extends JToolBar {
} catch (BadLocationException e) {
LOG.error("Caret move error", e);
}
}*/
}
SearchResult result = SearchEngine.find(rTextArea, context);
if (!result.wasFound()) {
notFound = !result.wasFound();
if (notFound) {
int pos = SearchEngine.getNextMatchPos(searchText, rTextArea.getText(), forward, matchCase, wholeWord);
if (pos != -1) {
rTextArea.setCaretPosition(forward ? 0 : rTextArea.getDocument().getLength() - 1);
search(direction);
//searchField.setBackground(COLOR_BG_WARN);
return;
searchField.putClientProperty("JComponent.outline", "warning");
} else {
searchField.putClientProperty("JComponent.outline", "error");
}
//searchField.setBackground(COLOR_BG_ERROR);
} else {
//searchField.setBackground(COLOR_BG_NORMAL);
searchField.putClientProperty("JComponent.outline", "");
}
searchField.repaint();
}
public void setRTextArea(RSyntaxTextArea rTextArea) {
@@ -1,6 +1,7 @@
package jadx.gui.ui.codearea;
import java.awt.*;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
@@ -9,13 +10,28 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.Icon;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.KeyStroke;
import javax.swing.text.BadLocationException;
import javax.swing.text.EditorKit;
import javax.swing.text.JTextComponent;
import org.fife.ui.rsyntaxtextarea.*;
import org.fife.ui.rtextarea.*;
import org.fife.ui.rsyntaxtextarea.FoldingAwareIconRowHeader;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaEditorKit;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaUI;
import org.fife.ui.rsyntaxtextarea.RSyntaxUtilities;
import org.fife.ui.rsyntaxtextarea.Style;
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
import org.fife.ui.rsyntaxtextarea.SyntaxScheme;
import org.fife.ui.rsyntaxtextarea.Theme;
import org.fife.ui.rtextarea.Gutter;
import org.fife.ui.rtextarea.GutterIconInfo;
import org.fife.ui.rtextarea.IconRowHeader;
import org.fife.ui.rtextarea.RTextArea;
import org.fife.ui.rtextarea.RTextAreaUI;
import jadx.gui.device.debugger.BreakpointManager;
import jadx.gui.device.debugger.DbgUtils;
@@ -1,28 +1,52 @@
package jadx.gui.ui.dialog;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.net.Socket;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import jadx.core.utils.StringUtils;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.gui.device.debugger.DbgUtils;
import jadx.gui.device.protocol.ADB;
import jadx.gui.treemodel.JClass;
import jadx.gui.ui.panel.IDebugController;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.panel.IDebugController;
import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
import static jadx.gui.device.protocol.ADB.Device.*;
import static jadx.gui.device.protocol.ADB.Device.ForwardResult;
public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.JDWPProcessListener {
private static final long serialVersionUID = -1111111202102181630L;
@@ -1,9 +1,21 @@
package jadx.gui.ui.dialog;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.net.URL;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import jadx.api.JadxDecompiler;
import jadx.gui.utils.NLS;
@@ -38,9 +38,6 @@ import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.panel.ProgressPanel;
import jadx.gui.ui.TabbedPane;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rtextarea.SearchContext;
import org.fife.ui.rtextarea.SearchEngine;
@@ -51,7 +48,10 @@ import org.slf4j.LoggerFactory;
import jadx.gui.treemodel.JNode;
import jadx.gui.treemodel.JResSearchNode;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.codearea.AbstractCodeArea;
import jadx.gui.ui.panel.ProgressPanel;
import jadx.gui.utils.CacheObject;
import jadx.gui.utils.JumpPosition;
import jadx.gui.utils.NLS;
@@ -1,15 +1,35 @@
package jadx.gui.ui.dialog;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Label;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.WindowConstants;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import jadx.api.JavaPackage;
import jadx.gui.ui.MainWindow;
@@ -295,5 +315,4 @@ public class ExcludePkgDialog extends JDialog {
return c;
}
}
}
@@ -1,15 +1,23 @@
package jadx.gui.ui.dialog;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import jadx.gui.ui.MainWindow;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import ch.qos.logback.classic.Level;
import jadx.gui.settings.JadxSettings;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.codearea.AbstractCodeArea;
import jadx.gui.utils.NLS;
import jadx.gui.utils.logs.ILogListener;
@@ -23,9 +23,6 @@ import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.TabbedPane;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,8 +49,11 @@ import jadx.gui.treemodel.JMethod;
import jadx.gui.treemodel.JNode;
import jadx.gui.treemodel.JPackage;
import jadx.gui.treemodel.JVariable;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.codearea.ClassCodeContentPanel;
import jadx.gui.ui.codearea.CodeArea;
import jadx.gui.ui.panel.ContentPanel;
import jadx.gui.utils.CacheObject;
import jadx.gui.utils.JNodeCache;
import jadx.gui.utils.NLS;
@@ -1,6 +1,10 @@
package jadx.gui.ui.dialog;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Collections;
@@ -21,7 +25,6 @@ import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import jadx.gui.ui.MainWindow;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,6 +36,7 @@ import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.MainWindow;
import jadx.gui.utils.NLS;
import jadx.gui.utils.TextStandardActions;
import jadx.gui.utils.layout.WrapLayout;
@@ -1,18 +1,30 @@
package jadx.gui.ui.dialog;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Map.Entry;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.WindowConstants;
import jadx.core.dex.instructions.args.ArgType;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
import jadx.gui.utils.NLS;
import jadx.gui.utils.TextStandardActions;
import jadx.gui.utils.UiUtils;
@@ -1,8 +1,14 @@
package jadx.gui.ui.dialog;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.MainWindow;
@@ -1,12 +1,12 @@
package jadx.gui.ui.panel;
import javax.swing.*;
import javax.swing.JPanel;
import jadx.gui.ui.TabbedPane;
import org.jetbrains.annotations.Nullable;
import jadx.gui.treemodel.JClass;
import jadx.gui.treemodel.JNode;
import jadx.gui.ui.TabbedPane;
public abstract class ContentPanel extends JPanel {
@@ -33,7 +33,7 @@ public abstract class ContentPanel extends JPanel {
/**
* Allows to show a tool tip on the tab e.g. for displaying a long path of the
* selected entry inside the APK file.
*
* <p>
* If <code>null</code> is returned no tool tip will be displayed.
*/
@Nullable
@@ -1,8 +1,12 @@
package jadx.gui.ui.panel;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.*;
import javax.swing.JEditorPane;
import javax.swing.JScrollPane;
import jadx.gui.settings.JadxSettings;
import jadx.gui.treemodel.JNode;
@@ -1,7 +1,6 @@
package jadx.gui.ui.panel;
import jadx.core.dex.instructions.args.ArgType;
import jadx.gui.ui.panel.JDebuggerPanel;
import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
public interface IDebugController {
@@ -1,12 +1,11 @@
package jadx.gui.ui.panel;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import javax.imageio.ImageIO;
import jadx.gui.ui.TabbedPane;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import hu.kazocsaba.imageviewer.ImageViewer;
@@ -18,6 +17,7 @@ import jadx.core.utils.Utils;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.core.xmlgen.ResContainer;
import jadx.gui.treemodel.JResource;
import jadx.gui.ui.TabbedPane;
import jadx.gui.ui.codearea.AbstractCodeArea;
public class ImagePanel extends ContentPanel {
@@ -1,11 +1,43 @@
package jadx.gui.ui.panel;
import java.awt.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.Label;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Box;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import io.reactivex.annotations.Nullable;
@@ -13,9 +45,9 @@ import jadx.core.utils.StringUtils;
import jadx.gui.device.debugger.DebugController;
import jadx.gui.treemodel.JClass;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.popupmenu.VarTreePopupMenu;
import jadx.gui.ui.codearea.SmaliArea;
import jadx.gui.ui.dialog.ADBDialog;
import jadx.gui.ui.popupmenu.VarTreePopupMenu;
import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
@@ -4,11 +4,12 @@ import java.awt.event.ActionEvent;
import java.util.Arrays;
import java.util.List;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.dialog.ExcludePkgDialog;
import jadx.gui.ui.dialog.RenameDialog;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -16,6 +17,9 @@ import org.slf4j.LoggerFactory;
import jadx.gui.JadxWrapper;
import jadx.gui.treemodel.JClass;
import jadx.gui.treemodel.JPackage;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.dialog.ExcludePkgDialog;
import jadx.gui.ui.dialog.RenameDialog;
import jadx.gui.utils.NLS;
public class JPackagePopupMenu extends JPopupMenu {
@@ -1,16 +1,19 @@
package jadx.gui.ui.popupmenu;
import java.awt.*;
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import jadx.core.dex.instructions.args.ArgType;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
import jadx.gui.ui.dialog.SetValueDialog;
import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
@@ -1,6 +1,7 @@
package jadx.gui.utils;
import java.awt.*;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.io.InputStream;
import javax.swing.text.StyleContext;
@@ -3,9 +3,17 @@ package jadx.gui.utils;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import jadx.api.*;
import jadx.api.JavaClass;
import jadx.api.JavaField;
import jadx.api.JavaMethod;
import jadx.api.JavaNode;
import jadx.api.JavaVariable;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.gui.treemodel.*;
import jadx.gui.treemodel.JClass;
import jadx.gui.treemodel.JField;
import jadx.gui.treemodel.JMethod;
import jadx.gui.treemodel.JNode;
import jadx.gui.treemodel.JVariable;
public class JNodeCache {
@@ -1,16 +1,26 @@
package jadx.gui.utils;
import ch.qos.logback.classic.Level;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
import jadx.cli.LogHelper;
import jadx.gui.settings.JadxSettings;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import org.reflections.Reflections;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.swing.*;
import java.util.*;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
import ch.qos.logback.classic.Level;
import jadx.cli.LogHelper;
import jadx.gui.settings.JadxSettings;
public class LafManager {
private static final Logger LOG = LoggerFactory.getLogger(LafManager.class);
@@ -1,11 +1,15 @@
package jadx.gui.utils;
import java.awt.*;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Map;
import javax.swing.*;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1,11 +1,12 @@
package jadx.gui.utils;
import java.awt.*;
import java.awt.Component;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.*;
import javax.swing.Icon;
public class OverlayIcon implements Icon {
@@ -1,6 +1,6 @@
package jadx.gui.utils;
import java.awt.*;
import java.awt.Rectangle;
import java.io.IOException;
import com.google.gson.TypeAdapter;
@@ -1,13 +1,16 @@
package jadx.gui.utils;
import java.awt.*;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JPopupMenu;
import javax.swing.KeyStroke;
import javax.swing.text.JTextComponent;
import javax.swing.undo.UndoManager;
@@ -1,16 +1,11 @@
package jadx.gui.utils;
import com.formdev.flatlaf.extras.FlatSVGIcon;
import jadx.core.dex.info.AccessInfo;
import jadx.core.dex.instructions.args.ArgType;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.gui.ui.codearea.AbstractCodeArea;
import org.intellij.lang.annotations.MagicConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.swing.*;
import java.awt.*;
import java.awt.Component;
import java.awt.Image;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
@@ -20,6 +15,26 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import org.intellij.lang.annotations.MagicConstant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.formdev.flatlaf.extras.FlatSVGIcon;
import jadx.core.dex.info.AccessInfo;
import jadx.core.dex.instructions.args.ArgType;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.gui.ui.codearea.AbstractCodeArea;
public class UiUtils {
private static final Logger LOG = LoggerFactory.getLogger(UiUtils.class);
@@ -2,8 +2,10 @@ package jadx.gui.utils.search;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -20,7 +22,8 @@ import jadx.gui.treemodel.JResSearchNode;
import jadx.gui.treemodel.JResource;
import jadx.gui.utils.CacheObject;
import static jadx.core.utils.StringUtils.*;
import static jadx.core.utils.StringUtils.countLinesByPos;
import static jadx.core.utils.StringUtils.getLine;
public class ResourceIndex {
private final List<JResource> resNodes = new ArrayList<>();
@@ -190,7 +193,6 @@ public class ResourceIndex {
resNodes.add(resNode);
}
}
}
}
@@ -48,7 +48,6 @@ public class TestI18n {
} else {
compareToReference(p);
}
} catch (IOException e) {
Assertions.fail("Error " + e.getMessage());
}