feat: option to disable inner classes move to parent (#1817)

This commit is contained in:
Skylot
2023-05-06 18:07:10 +01:00
parent d29263ef57
commit f53dbbfebf
19 changed files with 85 additions and 32 deletions
@@ -36,7 +36,8 @@ public final class ClassSearchProvider extends BaseSearchProvider {
ClassInfo clsInfo = cls.getClassNode().getClassInfo();
return isMatch(clsInfo.getShortName())
|| isMatch(clsInfo.getFullName())
|| isMatch(clsInfo.getAliasFullName());
|| isMatch(clsInfo.getAliasFullName())
|| isMatch(clsInfo.getRawName());
}
@Override
@@ -1,10 +1,6 @@
package jadx.gui.settings;
import java.awt.Font;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Window;
import java.awt.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -17,7 +13,7 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import javax.swing.JFrame;
import javax.swing.*;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.jetbrains.annotations.Nullable;
@@ -410,6 +406,10 @@ public class JadxSettings extends JadxCLIArgs {
this.inlineMethods = inlineMethods;
}
public void setMoveInnerClasses(boolean moveInnerClasses) {
this.moveInnerClasses = moveInnerClasses;
}
public void setAllowInlineKotlinLambda(boolean allowInlineKotlinLambda) {
this.allowInlineKotlinLambda = allowInlineKotlinLambda;
}
@@ -559,6 +559,13 @@ public class JadxSettingsWindow extends JDialog {
needReload();
});
JCheckBox moveInnerClasses = new JCheckBox();
moveInnerClasses.setSelected(settings.isMoveInnerClasses());
moveInnerClasses.addItemListener(e -> {
settings.setMoveInnerClasses(e.getStateChange() == ItemEvent.SELECTED);
needReload();
});
JCheckBox extractFinally = new JCheckBox();
extractFinally.setSelected(settings.isExtractFinally());
extractFinally.addItemListener(e -> {
@@ -602,8 +609,9 @@ public class JadxSettingsWindow extends JDialog {
other.addRow(NLS.str("preferences.useImports"), useImports);
other.addRow(NLS.str("preferences.useDebugInfo"), useDebugInfo);
other.addRow(NLS.str("preferences.inlineAnonymous"), inlineAnonymous);
other.addRow(NLS.str("preferences.inlineMethods"), inlineMethods);
other.addRow(NLS.str("preferences.inlineMethods"), moveInnerClasses);
other.addRow(NLS.str("preferences.inlineKotlinLambdas"), inlineKotlinLambdas);
other.addRow(NLS.str("preferences.moveInnerClasses"), moveInnerClasses);
other.addRow(NLS.str("preferences.extractFinally"), extractFinally);
other.addRow(NLS.str("preferences.fsCaseSensitive"), fsCaseSensitive);
other.addRow(NLS.str("preferences.useDx"), useDx);
@@ -178,6 +178,7 @@ preferences.useDebugInfo=Debug-Infos verwenden
preferences.inlineAnonymous=Anonyme Inline-Klassen
preferences.inlineMethods=Inline-Methoden
#preferences.inlineKotlinLambdas=Allow to inline Kotlin Lambdas
#preferences.moveInnerClasses=Move inner classes into parent
#preferences.extractFinally=Extract finally block
preferences.fsCaseSensitive=Dateisystem unterscheidet zwischen Groß/Kleinschreibung
preferences.skipResourcesDecode=Keine Ressourcen dekodieren
@@ -178,6 +178,7 @@ preferences.useDebugInfo=Use debug info
preferences.inlineAnonymous=Inline anonymous classes
preferences.inlineMethods=Inline methods
preferences.inlineKotlinLambdas=Allow to inline Kotlin Lambdas
preferences.moveInnerClasses=Move inner classes into parent
preferences.extractFinally=Extract finally block
preferences.fsCaseSensitive=File system is case-sensitive
preferences.skipResourcesDecode=Don't decode resources
@@ -178,6 +178,7 @@ preferences.replaceConsts=Reemplazar constantes
#preferences.inlineAnonymous=
#preferences.inlineMethods=Inline methods
#preferences.inlineKotlinLambdas=Allow to inline Kotlin Lambdas
#preferences.moveInnerClasses=Move inner classes into parent
#preferences.extractFinally=Extract finally block
#preferences.fsCaseSensitive=
preferences.skipResourcesDecode=No descodificar recursos
@@ -178,6 +178,7 @@ preferences.useDebugInfo=디버그 정보 사용
preferences.inlineAnonymous=인라인 익명 클래스
preferences.inlineMethods=인라인 메서드
#preferences.inlineKotlinLambdas=Allow to inline Kotlin Lambdas
#preferences.moveInnerClasses=Move inner classes into parent
preferences.extractFinally=finally 블록 추출
preferences.fsCaseSensitive=파일 시스템 대소문자 구별
preferences.skipResourcesDecode=리소스 디코딩 하지 않기
@@ -178,6 +178,7 @@ preferences.useDebugInfo=Utilizar informação de depuração
preferences.inlineAnonymous=Classes anônimas de uma linha
preferences.inlineMethods=Métodos de uma linha
#preferences.inlineKotlinLambdas=Allow to inline Kotlin Lambdas
#preferences.moveInnerClasses=Move inner classes into parent
preferences.extractFinally=Extrair blocos finally
preferences.fsCaseSensitive=Sistema de arquivo diferencia maiúsculas de minúsculas
preferences.skipResourcesDecode=Não decodificar recursos
@@ -178,6 +178,7 @@ preferences.useDebugInfo=Отладочная информация
preferences.inlineAnonymous=Объединять анонимные классы
preferences.inlineMethods=Объединять методы
#preferences.inlineKotlinLambdas=Allow to inline Kotlin Lambdas
#preferences.moveInnerClasses=Move inner classes into parent
preferences.extractFinally=Вычленять finally блоки
preferences.fsCaseSensitive=Учитывать регистр в файловой системе
preferences.skipResourcesDecode=Не декодировать ресурсы
@@ -178,6 +178,7 @@ preferences.useDebugInfo=启用调试信息
preferences.inlineAnonymous=内联匿名类
preferences.inlineMethods=内联方法
preferences.inlineKotlinLambdas=允许内联Kotlin Lambda
#preferences.moveInnerClasses=Move inner classes into parent
preferences.extractFinally=提取finally块
preferences.fsCaseSensitive=文件系统区分大小写
preferences.skipResourcesDecode=不反编译资源文件
@@ -178,6 +178,7 @@ preferences.useDebugInfo=使用除錯資訊
preferences.inlineAnonymous=內嵌匿名類別
preferences.inlineMethods=內嵌方式
#preferences.inlineKotlinLambdas=Allow to inline Kotlin Lambdas
#preferences.moveInnerClasses=Move inner classes into parent
preferences.extractFinally=擷取 finally 區塊
preferences.fsCaseSensitive=檔案系統區分大小寫
preferences.skipResourcesDecode=不要為資源解碼