Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_39073359
jadx
提交
75b52d67
J
jadx
项目概览
qq_39073359
/
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,发现更多精彩内容 >>
未验证
提交
75b52d67
编写于
8月 05, 2022
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(gui): save project search history
上级
11d04508
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
77 addition
and
0 deletion
+77
-0
jadx-gui/src/main/java/jadx/gui/settings/JadxProject.java
jadx-gui/src/main/java/jadx/gui/settings/JadxProject.java
+23
-0
jadx-gui/src/main/java/jadx/gui/settings/data/ProjectData.java
...gui/src/main/java/jadx/gui/settings/data/ProjectData.java
+9
-0
jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java
jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java
+38
-0
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_pt_BR.properties
jadx-gui/src/main/resources/i18n/Messages_pt_BR.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/resources/i18n/Messages_zh_TW.properties
jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties
+1
-0
未找到文件。
jadx-gui/src/main/java/jadx/gui/settings/JadxProject.java
浏览文件 @
75b52d67
...
...
@@ -43,6 +43,8 @@ public class JadxProject {
private
static
final
int
CURRENT_PROJECT_VERSION
=
1
;
public
static
final
String
PROJECT_EXTENSION
=
"jadx"
;
private
static
final
int
SEARCH_HISTORY_LIMIT
=
30
;
private
final
transient
MainWindow
mainWindow
;
private
transient
String
name
=
"New Project"
;
...
...
@@ -195,6 +197,27 @@ public class JadxProject {
}
}
public
List
<
String
>
getSearchHistory
()
{
return
data
.
getSearchHistory
();
}
public
void
addToSearchHistory
(
String
str
)
{
if
(
str
==
null
||
str
.
isEmpty
())
{
return
;
}
List
<
String
>
list
=
data
.
getSearchHistory
();
if
(!
list
.
isEmpty
()
&&
list
.
get
(
0
).
equals
(
str
))
{
return
;
}
list
.
remove
(
str
);
list
.
add
(
0
,
str
);
if
(
list
.
size
()
>
SEARCH_HISTORY_LIMIT
)
{
list
.
remove
(
list
.
size
()
-
1
);
}
data
.
setSearchHistory
(
list
);
changed
();
}
private
void
changed
()
{
JadxSettings
settings
=
mainWindow
.
getSettings
();
if
(
settings
!=
null
&&
settings
.
isAutoSaveProject
())
{
...
...
jadx-gui/src/main/java/jadx/gui/settings/data/ProjectData.java
浏览文件 @
75b52d67
...
...
@@ -20,6 +20,7 @@ public class ProjectData {
private
int
activeTab
=
-
1
;
private
@Nullable
Path
cacheDir
;
private
boolean
enableLiveReload
=
false
;
private
List
<
String
>
searchHistory
=
new
ArrayList
<>();
public
List
<
Path
>
getFiles
()
{
return
files
;
...
...
@@ -103,4 +104,12 @@ public class ProjectData {
public
void
setEnableLiveReload
(
boolean
enableLiveReload
)
{
this
.
enableLiveReload
=
enableLiveReload
;
}
public
List
<
String
>
getSearchHistory
()
{
return
searchHistory
;
}
public
void
setSearchHistory
(
List
<
String
>
searchHistory
)
{
this
.
searchHistory
=
searchHistory
;
}
}
jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java
浏览文件 @
75b52d67
...
...
@@ -20,7 +20,9 @@ import javax.swing.BoxLayout;
import
javax.swing.JButton
;
import
javax.swing.JCheckBox
;
import
javax.swing.JLabel
;
import
javax.swing.JMenuItem
;
import
javax.swing.JPanel
;
import
javax.swing.JPopupMenu
;
import
javax.swing.JTextField
;
import
javax.swing.WindowConstants
;
import
javax.swing.event.ChangeListener
;
...
...
@@ -29,6 +31,9 @@ import org.jetbrains.annotations.Nullable;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.formdev.flatlaf.FlatClientProperties
;
import
com.formdev.flatlaf.icons.FlatSearchWithHistoryIcon
;
import
io.reactivex.BackpressureStrategy
;
import
io.reactivex.Emitter
;
import
io.reactivex.Flowable
;
...
...
@@ -207,6 +212,8 @@ public class SearchDialog extends CommonSearchDialog {
searchFieldDefaultBgColor
=
searchField
.
getBackground
();
searchField
.
setAlignmentX
(
LEFT_ALIGNMENT
);
TextStandardActions
.
attach
(
searchField
);
addSearchHistoryButton
();
searchField
.
putClientProperty
(
FlatClientProperties
.
TEXT_FIELD_SHOW_CLEAR_BUTTON
,
true
);
boolean
autoSearch
=
mainWindow
.
getSettings
().
isUseAutoSearch
();
JButton
searchBtn
=
new
JButton
(
NLS
.
str
(
"search_dialog.search_button"
));
...
...
@@ -286,6 +293,25 @@ public class SearchDialog extends CommonSearchDialog {
setDefaultCloseOperation
(
WindowConstants
.
DISPOSE_ON_CLOSE
);
}
private
void
addSearchHistoryButton
()
{
JButton
searchHistoryButton
=
new
JButton
(
new
FlatSearchWithHistoryIcon
(
true
));
searchHistoryButton
.
setToolTipText
(
NLS
.
str
(
"search_dialog.search_history"
));
searchHistoryButton
.
addActionListener
(
e
->
{
JPopupMenu
popupMenu
=
new
JPopupMenu
();
List
<
String
>
searchHistory
=
mainWindow
.
getProject
().
getSearchHistory
();
if
(
searchHistory
.
isEmpty
())
{
popupMenu
.
add
(
"(empty)"
);
}
else
{
for
(
String
str
:
searchHistory
)
{
JMenuItem
item
=
popupMenu
.
add
(
str
);
item
.
addActionListener
(
ev
->
searchField
.
setText
(
str
));
}
}
popupMenu
.
show
(
searchHistoryButton
,
0
,
searchHistoryButton
.
getHeight
());
});
searchField
.
putClientProperty
(
FlatClientProperties
.
TEXT_FIELD_LEADING_COMPONENT
,
searchHistoryButton
);
}
protected
void
addResultsActions
(
JPanel
resultsActionsPanel
)
{
loadAllButton
=
new
JButton
(
NLS
.
str
(
"search_dialog.load_all"
));
loadAllButton
.
addActionListener
(
e
->
loadMoreResults
(
true
));
...
...
@@ -463,6 +489,15 @@ public class SearchDialog extends CommonSearchDialog {
return
true
;
}
@Override
protected
void
openItem
(
JNode
node
)
{
if
(
mainWindow
.
getSettings
().
isUseAutoSearch
())
{
// for auto search save only searches which leads to node opening
mainWindow
.
getProject
().
addToSearchHistory
(
searchField
.
getText
());
}
super
.
openItem
(
node
);
}
private
void
pauseSearch
()
{
stopBtn
.
setEnabled
(
false
);
searchBackgroundExecutor
.
execute
(()
->
{
...
...
@@ -539,6 +574,9 @@ public class SearchDialog extends CommonSearchDialog {
updateHighlightContext
(
text
,
!
options
.
contains
(
IGNORE_CASE
),
options
.
contains
(
USE_REGEX
));
cache
.
setLastSearch
(
text
);
cache
.
getLastSearchOptions
().
put
(
searchPreset
,
options
);
if
(!
mainWindow
.
getSettings
().
isUseAutoSearch
())
{
mainWindow
.
getProject
().
addToSearchHistory
(
text
);
}
}
private
void
updateProgress
(
ITaskProgress
progress
)
{
...
...
jadx-gui/src/main/resources/i18n/Messages_de_DE.properties
浏览文件 @
75b52d67
...
...
@@ -97,6 +97,7 @@ search_dialog.open=Öffnen
search_dialog.cancel
=
Beenden
search_dialog.open_by_name
=
Nach Text suchen:
#search_dialog.search_button=Search
#search_dialog.search_history=Search history
#search_dialog.auto_search=Auto search
search_dialog.search_in
=
Suche in Definitionen von:
search_dialog.class
=
Klassen
...
...
jadx-gui/src/main/resources/i18n/Messages_en_US.properties
浏览文件 @
75b52d67
...
...
@@ -97,6 +97,7 @@ search_dialog.open=Open
search_dialog.cancel
=
Cancel
search_dialog.open_by_name
=
Search for text:
search_dialog.search_button
=
Search
search_dialog.search_history
=
Search history
search_dialog.auto_search
=
Auto search
search_dialog.search_in
=
Search definitions of:
search_dialog.class
=
Class
...
...
jadx-gui/src/main/resources/i18n/Messages_es_ES.properties
浏览文件 @
75b52d67
...
...
@@ -97,6 +97,7 @@ search_dialog.open=Abrir
search_dialog.cancel
=
Cancelar
search_dialog.open_by_name
=
Buscar texto:
#search_dialog.search_button=Search
#search_dialog.search_history=Search history
#search_dialog.auto_search=Auto search
search_dialog.search_in
=
Buscar definiciones de:
search_dialog.class
=
Clase
...
...
jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties
浏览文件 @
75b52d67
...
...
@@ -97,6 +97,7 @@ search_dialog.open=열기
search_dialog.cancel
=
취소
search_dialog.open_by_name
=
텍스트 검색 :
#search_dialog.search_button=Search
#search_dialog.search_history=Search history
#search_dialog.auto_search=Auto search
search_dialog.search_in
=
정의 검색 :
search_dialog.class
=
클래스
...
...
jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties
浏览文件 @
75b52d67
...
...
@@ -97,6 +97,7 @@ search_dialog.open=Abrir
search_dialog.cancel
=
Cancelar
search_dialog.open_by_name
=
Buscar por text:
#search_dialog.search_button=Search
#search_dialog.search_history=Search history
#search_dialog.auto_search=Auto search
search_dialog.search_in
=
Buscar definições de:
search_dialog.class
=
Classe
...
...
jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties
浏览文件 @
75b52d67
...
...
@@ -97,6 +97,7 @@ search_dialog.open=转到
search_dialog.cancel
=
取消
search_dialog.open_by_name
=
搜索文本:
#search_dialog.search_button=Search
#search_dialog.search_history=Search history
#search_dialog.auto_search=Auto search
search_dialog.search_in
=
在以下位置搜索:
search_dialog.class
=
类名
...
...
jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties
浏览文件 @
75b52d67
...
...
@@ -97,6 +97,7 @@ search_dialog.open=開啟
search_dialog.cancel
=
取消
search_dialog.open_by_name
=
搜尋文字:
#search_dialog.search_button=Search
#search_dialog.search_history=Search history
#search_dialog.auto_search=Auto search
search_dialog.search_in
=
搜尋定義:
search_dialog.class
=
類別
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录