Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
8e89a2ef
J
jadx
项目概览
Quincy379
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8e89a2ef
编写于
9月 01, 2021
作者:
M
MrIkso
提交者:
skylot
9月 03, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(gui): added option to always select opened file/class
上级
316c2fdd
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
46 addition
and
14 deletion
+46
-14
jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java
jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java
+15
-1
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
+8
-1
jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java
jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java
+7
-8
jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java
jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java
+11
-4
jadx-gui/src/main/resources/i18n/Messages_de_DE.properties
jadx-gui/src/main/resources/i18n/Messages_de_DE.properties
+1
-0
jadx-gui/src/main/resources/i18n/Messages_en_US.properties
jadx-gui/src/main/resources/i18n/Messages_en_US.properties
+1
-0
jadx-gui/src/main/resources/i18n/Messages_es_ES.properties
jadx-gui/src/main/resources/i18n/Messages_es_ES.properties
+1
-0
jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties
jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties
+1
-0
jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties
jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties
+1
-0
未找到文件。
jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java
浏览文件 @
8e89a2ef
...
...
@@ -42,7 +42,7 @@ public class JadxSettings extends JadxCLIArgs {
private
static
final
Path
USER_HOME
=
Paths
.
get
(
System
.
getProperty
(
"user.home"
));
private
static
final
int
RECENT_PROJECTS_COUNT
=
15
;
private
static
final
int
CURRENT_SETTINGS_VERSION
=
1
2
;
private
static
final
int
CURRENT_SETTINGS_VERSION
=
1
3
;
private
static
final
Font
DEFAULT_FONT
=
new
RSyntaxTextArea
().
getFont
();
...
...
@@ -68,6 +68,7 @@ public class JadxSettings extends JadxCLIArgs {
private
boolean
autoSaveProject
=
false
;
private
boolean
showHeapUsageBar
=
false
;
private
boolean
alwaysSelectOpened
=
false
;
private
Map
<
String
,
WindowLocation
>
windowPos
=
new
HashMap
<>();
private
int
mainWindowExtendedState
=
JFrame
.
NORMAL
;
...
...
@@ -242,6 +243,15 @@ public class JadxSettings extends JadxCLIArgs {
partialSync
(
settings
->
settings
.
showHeapUsageBar
=
showHeapUsageBar
);
}
public
boolean
isAlwaysSelectOpened
()
{
return
alwaysSelectOpened
;
}
public
void
setAlwaysSelectOpened
(
boolean
showHeapUsageBar
)
{
this
.
alwaysSelectOpened
=
showHeapUsageBar
;
partialSync
(
settings
->
settings
.
alwaysSelectOpened
=
alwaysSelectOpened
);
}
public
String
getExcludedPackages
()
{
return
excludedPackages
;
}
...
...
@@ -607,6 +617,10 @@ public class JadxSettings extends JadxCLIArgs {
inlineMethods
=
true
;
fromVersion
++;
}
if
(
fromVersion
==
12
)
{
alwaysSelectOpened
=
false
;
fromVersion
++;
}
if
(
fromVersion
!=
CURRENT_SETTINGS_VERSION
)
{
throw
new
JadxRuntimeException
(
"Incorrect settings upgrade"
);
}
...
...
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
浏览文件 @
8e89a2ef
...
...
@@ -745,7 +745,7 @@ public class MainWindow extends JFrame {
return
null
;
}
p
rivate
void
syncWithEditor
()
{
p
ublic
void
syncWithEditor
()
{
ContentPanel
selectedContentPanel
=
tabbedPane
.
getSelectedCodePanel
();
if
(
selectedContentPanel
==
null
)
{
return
;
...
...
@@ -861,6 +861,12 @@ public class MainWindow extends JFrame {
heapUsageBar
.
setVisible
(
settings
.
isShowHeapUsageBar
());
});
JCheckBoxMenuItem
alwaysSelectOpened
=
new
JCheckBoxMenuItem
(
NLS
.
str
(
"menu.alwaysSelectOpened"
));
alwaysSelectOpened
.
setState
(
settings
.
isAlwaysSelectOpened
());
alwaysSelectOpened
.
addActionListener
(
event
->
{
settings
.
setAlwaysSelectOpened
(!
settings
.
isAlwaysSelectOpened
());
});
Action
syncAction
=
new
AbstractAction
(
NLS
.
str
(
"menu.sync"
),
ICON_SYNC
)
{
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
...
...
@@ -999,6 +1005,7 @@ public class MainWindow extends JFrame {
view
.
add
(
flatPkgMenuItem
);
view
.
add
(
syncAction
);
view
.
add
(
heapUsageBarMenuItem
);
view
.
add
(
alwaysSelectOpened
);
JMenu
nav
=
new
JMenu
(
NLS
.
str
(
"menu.navigation"
));
nav
.
setMnemonic
(
KeyEvent
.
VK_N
);
...
...
jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java
浏览文件 @
8e89a2ef
...
...
@@ -51,9 +51,8 @@ public class TabComponent extends JPanel {
}
private
void
init
()
{
JPanel
panel
=
this
;
panel
.
setLayout
(
new
FlowLayout
(
FlowLayout
.
CENTER
,
3
,
0
));
panel
.
setOpaque
(
false
);
setLayout
(
new
FlowLayout
(
FlowLayout
.
LEFT
,
0
,
0
));
setOpaque
(
false
);
JNode
node
=
contentPanel
.
getNode
();
String
tabTitle
;
...
...
@@ -93,18 +92,18 @@ public class TabComponent extends JPanel {
menu
.
show
(
e
.
getComponent
(),
e
.
getX
(),
e
.
getY
());
}
else
if
(
SwingUtilities
.
isLeftMouseButton
(
e
))
{
if
(
tabbedPane
.
getSelectedComponent
()
!=
contentPanel
)
{
tabbedPane
.
se
tSelectedComponent
(
contentPanel
);
tabbedPane
.
se
lectTab
(
contentPanel
);
}
}
}
};
panel
.
addMouseListener
(
clickAdapter
);
addMouseListener
(
clickAdapter
);
label
.
addMouseListener
(
clickAdapter
);
closeBtn
.
addMouseListener
(
clickAdapter
);
panel
.
add
(
label
);
panel
.
add
(
closeBtn
);
panel
.
setBorder
(
BorderFactory
.
createEmptyBorder
(
0
,
0
,
0
,
0
));
add
(
label
);
add
(
closeBtn
);
setBorder
(
BorderFactory
.
createEmptyBorder
(
0
,
0
,
0
,
0
));
}
private
JPopupMenu
createTabPopupMenu
(
final
ContentPanel
contentPanel
)
{
...
...
jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java
浏览文件 @
8e89a2ef
...
...
@@ -100,7 +100,7 @@ public class TabbedPane extends JTabbedPane {
}
}
if
(
doSwitch
)
{
se
tSelectedComponent
(
lastTab
);
se
lectTab
(
lastTab
);
}
}
}
else
if
(
consume
&&
(
e
.
getModifiersEx
()
&
ctrlDown
)
==
0
)
{
...
...
@@ -168,7 +168,7 @@ public class TabbedPane extends JTabbedPane {
return
;
}
SwingUtilities
.
invokeLater
(()
->
{
se
tSelectedComponent
(
contentPanel
);
se
lectTab
(
contentPanel
);
AbstractCodeArea
codeArea
=
contentPanel
.
getCodeArea
();
int
pos
=
jumpPos
.
getPos
();
if
(
pos
>
0
)
{
...
...
@@ -206,7 +206,14 @@ public class TabbedPane extends JTabbedPane {
if
(
contentPanel
==
null
)
{
return
;
}
SwingUtilities
.
invokeLater
(()
->
setSelectedComponent
(
contentPanel
));
SwingUtilities
.
invokeLater
(()
->
selectTab
(
contentPanel
));
}
public
void
selectTab
(
ContentPanel
contentPanel
)
{
setSelectedComponent
(
contentPanel
);
if
(
mainWindow
.
getSettings
().
isAlwaysSelectOpened
())
{
mainWindow
.
syncWithEditor
();
}
}
public
void
codeJump
(
JNode
node
)
{
...
...
@@ -231,7 +238,7 @@ public class TabbedPane extends JTabbedPane {
throw
new
JadxRuntimeException
(
"Failed to open panel for JClass: "
+
cls
);
}
}
else
{
se
tSelectedComponent
(
panel
);
se
lectTab
(
panel
);
}
ClassCodeContentPanel
codePane
=
((
ClassCodeContentPanel
)
panel
);
codePane
.
showSmaliPane
();
...
...
jadx-gui/src/main/resources/i18n/Messages_de_DE.properties
浏览文件 @
8e89a2ef
...
...
@@ -8,6 +8,7 @@ menu.preferences=Präferenzen
menu.sync
=
Mit Editor synchronisieren
menu.flatten
=
Codepaket erweitern
menu.heapUsageBar
=
Speicherverbrauchsleiste anzeigen
#menu.alwaysSelectOpened=Always Select Opened File/Class
menu.navigation
=
Navigation
menu.text_search
=
Textsuche
menu.class_search
=
Klassen-Suche
...
...
jadx-gui/src/main/resources/i18n/Messages_en_US.properties
浏览文件 @
8e89a2ef
...
...
@@ -8,6 +8,7 @@ menu.preferences=Preferences
menu.sync
=
Sync with editor
menu.flatten
=
Show flatten packages
menu.heapUsageBar
=
Show memory usage bar
menu.alwaysSelectOpened
=
Always Select Opened File/Class
menu.navigation
=
Navigation
menu.text_search
=
Text search
menu.class_search
=
Class search
...
...
jadx-gui/src/main/resources/i18n/Messages_es_ES.properties
浏览文件 @
8e89a2ef
...
...
@@ -8,6 +8,7 @@ menu.preferences=Preferencias
menu.sync
=
Sincronizar con el editor
menu.flatten
=
Mostrar paquetes en vista plana
#menu.heapUsageBar=
#menu.alwaysSelectOpened=Always Select Opened File/Class
menu.navigation
=
Navegación
menu.text_search
=
Buscar texto
menu.class_search
=
Buscar clase
...
...
jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties
浏览文件 @
8e89a2ef
...
...
@@ -8,6 +8,7 @@ menu.preferences=설정
menu.sync
=
에디터와 동기화
menu.flatten
=
플랫 패키지 표시
menu.heapUsageBar
=
메모리 사용량 표시
#menu.alwaysSelectOpened=Always Select Opened File/Class
menu.navigation
=
네비게이션
menu.text_search
=
텍스트 검색
menu.class_search
=
클래스 검색
...
...
jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties
浏览文件 @
8e89a2ef
...
...
@@ -8,6 +8,7 @@ menu.preferences=首选项
menu.sync
=
与编辑器同步
menu.flatten
=
展开显示代码包
menu.heapUsageBar
=
显示内存使用栏
#menu.alwaysSelectOpened=Always Select Opened File/Class
menu.navigation
=
导航
menu.text_search
=
搜索文本
menu.class_search
=
搜索类
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录