diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java index 087e72232..4ff7b29fd 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java @@ -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(); diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java index 1d1eedf6d..ea7a965c1 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java @@ -38,8 +38,7 @@ public class ResXmlGen { "navigation", "raw", "transition", - "xml" - )); + "xml")); private final ResourceStorage resStorage; private final ValuesParser vp; diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java b/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java index aafd56110..16792896f 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java @@ -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() { diff --git a/jadx-gui/src/main/java/jadx/gui/device/debugger/BreakpointManager.java b/jadx-gui/src/main/java/jadx/gui/device/debugger/BreakpointManager.java index f7d2ff71a..b3f4fe2a3 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/debugger/BreakpointManager.java +++ b/jadx-gui/src/main/java/jadx/gui/device/debugger/BreakpointManager.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java b/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java index e6c0d3538..76a079d88 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java +++ b/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/device/debugger/RegisterObserver.java b/jadx-gui/src/main/java/jadx/gui/device/debugger/RegisterObserver.java index b86b1e3a9..3b1d2abc7 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/debugger/RegisterObserver.java +++ b/jadx-gui/src/main/java/jadx/gui/device/debugger/RegisterObserver.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/device/debugger/SmaliDebugger.java b/jadx-gui/src/main/java/jadx/gui/device/debugger/SmaliDebugger.java index 717275476..7143a4760 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/debugger/SmaliDebugger.java +++ b/jadx-gui/src/main/java/jadx/gui/device/debugger/SmaliDebugger.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/Smali.java b/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/Smali.java index a7e1749fa..f308886a1 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/Smali.java +++ b/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/Smali.java @@ -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; } } - } diff --git a/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/SmaliMethodNode.java b/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/SmaliMethodNode.java index 508e548b0..f0e287d10 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/SmaliMethodNode.java +++ b/jadx-gui/src/main/java/jadx/gui/device/debugger/smali/SmaliMethodNode.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/device/protocol/ADB.java b/jadx-gui/src/main/java/jadx/gui/device/protocol/ADB.java index eb0a174c8..f18aa684d 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/protocol/ADB.java +++ b/jadx-gui/src/main/java/jadx/gui/device/protocol/ADB.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java index bad6fc6e0..5621c3683 100644 --- a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java +++ b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java index ab63e71bc..2c5e27631 100644 --- a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java b/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java index fc0b0ea40..a7f955367 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java @@ -1,6 +1,6 @@ package jadx.gui.settings; -import java.awt.*; +import java.awt.Rectangle; public class WindowLocation { private String windowId; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java b/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java index 7c522a46d..b63d9cb49 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java index ee9f43d68..c3099a688 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java index c86598005..d8596c921 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java @@ -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); diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java index e6671d286..70c7adc93 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java index 2bae9c167..85c763dc6 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JResSearchNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JResSearchNode.java index 54b4da077..976fc9137 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JResSearchNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JResSearchNode.java @@ -1,6 +1,6 @@ package jadx.gui.treemodel; -import javax.swing.*; +import javax.swing.Icon; import jadx.core.utils.StringUtils; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java index 70c103e78..2014600cf 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java @@ -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 { @@ -278,7 +277,7 @@ public class JResource extends JLoadableNode implements Comparable { case FILE: ResourceType resType = resFile.getType(); - switch (resType){ + switch (resType) { case MANIFEST: return MANIFEST_ICON; case ARSC: diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java index 8a1eaecbb..0106e9926 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JVariable.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JVariable.java index c2a9d005e..e70d03a12 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JVariable.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JVariable.java @@ -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; } - } diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java index cfd29336e..9b32cb231 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/TextNode.java @@ -1,6 +1,6 @@ package jadx.gui.treemodel; -import javax.swing.*; +import javax.swing.Icon; public class TextNode extends JNode { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/HeapUsageBar.java b/jadx-gui/src/main/java/jadx/gui/ui/HeapUsageBar.java index 93b59ce17..03ed093d9 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/HeapUsageBar.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/HeapUsageBar.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index b4ecc22ab..d6d0fd7b9 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java b/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java index 51368e910..b126945f9 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java index d0c8d0705..5fd7912f4 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java @@ -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 diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java index 3bd380fca..d3c91a1e9 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java index d0b0ba090..eaa0e1a2f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java @@ -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(); - } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java index c11c0326b..fe39d75f2 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java @@ -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; - } } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeContentPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeContentPanel.java index 0d7135232..d323b434f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeContentPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeContentPanel.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java index 32d22d019..5bab58d60 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java @@ -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 lineMapping = codeInfo.getLineMapping(); - if (lineMapping.isEmpty()) { - return false; - } - Set uniqueSourceLines = new HashSet<>(lineMapping.values()); - return uniqueSourceLines.size() > 3; + ICodeInfo codeInfo = codeArea.getNode().getCodeInfo(); + if (codeInfo == null) { + return false; } - return false; + Map lineMapping = codeInfo.getLineMapping(); + if (lineMapping.isEmpty()) { + return false; + } + Set uniqueSourceLines = new HashSet<>(lineMapping.values()); + return uniqueSourceLines.size() > 3; } public SearchBar getSearchBar() { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java index 9fc20fde8..176b63c15 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/GoToDeclarationAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/GoToDeclarationAction.java index 61959c37d..4198bb21a 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/GoToDeclarationAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/GoToDeclarationAction.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java index 9675505bb..4fcaa7b53 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java @@ -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) { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java index 8bd37b915..41b8d04fa 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java index 30e6f52a0..4e83c7134 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java @@ -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) { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java index b0b519bb8..6fbbde034 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/ADBDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ADBDialog.java index 3b094b901..5c14c9a9b 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/ADBDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ADBDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/AboutDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/AboutDialog.java index e4f91ee94..60653b554 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/AboutDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/AboutDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommonSearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommonSearchDialog.java index 398d217ac..b1e6d35f2 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommonSearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommonSearchDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/ExcludePkgDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ExcludePkgDialog.java index 46772c3e3..2374d7bc1 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/ExcludePkgDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ExcludePkgDialog.java @@ -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; } } - } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/LogViewerDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/LogViewerDialog.java index 3897d0108..a2cfac430 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/LogViewerDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/LogViewerDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java index f59c31f31..6aa20ac68 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java index 757060e51..d430e1764 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/SetValueDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SetValueDialog.java index 72d81db36..f8840d5d1 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/SetValueDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SetValueDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/dialog/UsageDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/UsageDialog.java index 6fe703179..ca4d5caf5 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/dialog/UsageDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/UsageDialog.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/panel/ContentPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/ContentPanel.java index 287f6348f..1056f217f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/panel/ContentPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/ContentPanel.java @@ -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. - * + *

* If null is returned no tool tip will be displayed. */ @Nullable diff --git a/jadx-gui/src/main/java/jadx/gui/ui/panel/HtmlPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/HtmlPanel.java index 832d9a808..d9e21e54d 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/panel/HtmlPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/HtmlPanel.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/panel/IDebugController.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/IDebugController.java index c7b7d9eaf..59c0a9fa5 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/panel/IDebugController.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/IDebugController.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/panel/ImagePanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/ImagePanel.java index ead008db1..c539b2649 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/panel/ImagePanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/ImagePanel.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java index 80cc912c1..7b63fdad2 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JPackagePopupMenu.java b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JPackagePopupMenu.java index 8a525cb42..79e7b2f77 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JPackagePopupMenu.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JPackagePopupMenu.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/VarTreePopupMenu.java b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/VarTreePopupMenu.java index 4621d7648..93a35a717 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/VarTreePopupMenu.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/VarTreePopupMenu.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/FontUtils.java b/jadx-gui/src/main/java/jadx/gui/utils/FontUtils.java index 67b56f8a1..2829fdc6d 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/FontUtils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/FontUtils.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java b/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java index 5a022c252..85e54c12e 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/JNodeCache.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java b/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java index caee78528..ad6c84036 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java @@ -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); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/Link.java b/jadx-gui/src/main/java/jadx/gui/utils/Link.java index b4d51cbbf..c0fdeb87c 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/Link.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/Link.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java b/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java index 9471c3b5e..43ce62a6a 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/OverlayIcon.java @@ -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 { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/RectangleTypeAdapter.java b/jadx-gui/src/main/java/jadx/gui/utils/RectangleTypeAdapter.java index 27ba217bf..216b12221 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/RectangleTypeAdapter.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/RectangleTypeAdapter.java @@ -1,6 +1,6 @@ package jadx.gui.utils; -import java.awt.*; +import java.awt.Rectangle; import java.io.IOException; import com.google.gson.TypeAdapter; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java b/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java index 24120f295..d73172a1e 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/TextStandardActions.java @@ -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; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java b/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java index 899361a6d..2b91b9b45 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java @@ -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); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/ResourceIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/ResourceIndex.java index 9bdded3f0..3038d0e55 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/ResourceIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/ResourceIndex.java @@ -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 resNodes = new ArrayList<>(); @@ -190,7 +193,6 @@ public class ResourceIndex { resNodes.add(resNode); } } - } } diff --git a/jadx-gui/src/test/java/jadx/gui/TestI18n.java b/jadx-gui/src/test/java/jadx/gui/TestI18n.java index fdfef3453..1a77582e1 100644 --- a/jadx-gui/src/test/java/jadx/gui/TestI18n.java +++ b/jadx-gui/src/test/java/jadx/gui/TestI18n.java @@ -48,7 +48,6 @@ public class TestI18n { } else { compareToReference(p); } - } catch (IOException e) { Assertions.fail("Error " + e.getMessage()); }