Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_39073359
jadx
提交
127f0ecf
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,发现更多精彩内容 >>
未验证
提交
127f0ecf
编写于
8月 16, 2022
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(gui): disable actions if files not loaded (#1644)
上级
cf7767e7
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
70 addition
and
4 deletion
+70
-4
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
+36
-1
jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java
...i/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java
+10
-1
jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java
jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java
+13
-2
jadx-gui/src/main/java/jadx/gui/utils/ILoadListener.java
jadx-gui/src/main/java/jadx/gui/utils/ILoadListener.java
+11
-0
未找到文件。
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
浏览文件 @
127f0ecf
...
...
@@ -132,6 +132,7 @@ import jadx.gui.update.JadxUpdate.IUpdateCallback;
import
jadx.gui.update.data.Release
;
import
jadx.gui.utils.CacheObject
;
import
jadx.gui.utils.FontUtils
;
import
jadx.gui.utils.ILoadListener
;
import
jadx.gui.utils.Icons
;
import
jadx.gui.utils.LafManager
;
import
jadx.gui.utils.Link
;
...
...
@@ -211,6 +212,9 @@ public class MainWindow extends JFrame {
private
JDebuggerPanel
debuggerPanel
;
private
JSplitPane
verticalSplitter
;
private
List
<
ILoadListener
>
loadListeners
=
new
ArrayList
<>();
private
boolean
loaded
;
public
MainWindow
(
JadxSettings
settings
)
{
this
.
settings
=
settings
;
this
.
cacheObject
=
new
CacheObject
();
...
...
@@ -488,6 +492,7 @@ public class MainWindow extends JFrame {
}
private
void
closeAll
()
{
notifyLoadListeners
(
false
);
cancelBackgroundJobs
();
clearTree
();
resetCache
();
...
...
@@ -526,7 +531,10 @@ public class MainWindow extends JFrame {
backgroundExecutor
.
execute
(
NLS
.
str
(
"progress.load"
),
this
::
restoreOpenTabs
,
status
->
runInitialBackgroundJobs
());
status
->
{
runInitialBackgroundJobs
();
notifyLoadListeners
(
true
);
});
}
public
void
updateLiveReload
(
boolean
state
)
{
...
...
@@ -1210,6 +1218,22 @@ public class MainWindow extends JFrame {
toolbar
.
add
(
updateLink
);
mainPanel
.
add
(
toolbar
,
BorderLayout
.
NORTH
);
addLoadListener
(
loaded
->
{
textSearchAction
.
setEnabled
(
loaded
);
clsSearchAction
.
setEnabled
(
loaded
);
commentSearchAction
.
setEnabled
(
loaded
);
backAction
.
setEnabled
(
loaded
);
forwardAction
.
setEnabled
(
loaded
);
syncAction
.
setEnabled
(
loaded
);
saveAllAction
.
setEnabled
(
loaded
);
exportAction
.
setEnabled
(
loaded
);
saveProjectAsAction
.
setEnabled
(
loaded
);
reload
.
setEnabled
(
loaded
);
deobfAction
.
setEnabled
(
loaded
);
quarkAction
.
setEnabled
(
loaded
);
return
false
;
});
}
private
void
initUI
()
{
...
...
@@ -1499,6 +1523,17 @@ public class MainWindow extends JFrame {
settings
.
setDebuggerVarTreeSplitterLoc
(
debuggerPanel
.
getRightSplitterLocation
());
}
public
void
addLoadListener
(
ILoadListener
loadListener
)
{
this
.
loadListeners
.
add
(
loadListener
);
// set initial value
loadListener
.
update
(
loaded
);
}
public
void
notifyLoadListeners
(
boolean
loaded
)
{
this
.
loaded
=
loaded
;
loadListeners
.
removeIf
(
listener
->
listener
.
update
(
loaded
));
}
public
JadxWrapper
getWrapper
()
{
return
wrapper
;
}
...
...
jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java
浏览文件 @
127f0ecf
...
...
@@ -3,6 +3,7 @@ package jadx.gui.ui.codearea;
import
java.awt.event.KeyEvent
;
import
jadx.gui.treemodel.JNode
;
import
jadx.gui.ui.MainWindow
;
import
jadx.gui.ui.dialog.UsageDialog
;
import
jadx.gui.utils.NLS
;
...
...
@@ -18,7 +19,15 @@ public final class FindUsageAction extends JNodeAction {
@Override
public
void
runAction
(
JNode
node
)
{
UsageDialog
usageDialog
=
new
UsageDialog
(
getCodeArea
().
getMainWindow
(),
node
);
MainWindow
mw
=
getCodeArea
().
getMainWindow
();
UsageDialog
usageDialog
=
new
UsageDialog
(
mw
,
node
);
mw
.
addLoadListener
(
loaded
->
{
if
(!
loaded
)
{
usageDialog
.
dispose
();
return
true
;
}
return
false
;
});
usageDialog
.
setVisible
(
true
);
}
}
jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java
浏览文件 @
127f0ecf
...
...
@@ -81,17 +81,28 @@ public class SearchDialog extends CommonSearchDialog {
public
static
void
search
(
MainWindow
window
,
SearchPreset
preset
)
{
SearchDialog
searchDialog
=
new
SearchDialog
(
window
,
preset
,
Collections
.
emptySet
());
s
earchDialog
.
setVisible
(
true
);
s
how
(
searchDialog
,
window
);
}
public
static
void
searchInActiveTab
(
MainWindow
window
,
SearchPreset
preset
)
{
SearchDialog
searchDialog
=
new
SearchDialog
(
window
,
preset
,
EnumSet
.
of
(
SearchOptions
.
ACTIVE_TAB
));
s
earchDialog
.
setVisible
(
true
);
s
how
(
searchDialog
,
window
);
}
public
static
void
searchText
(
MainWindow
window
,
String
text
)
{
SearchDialog
searchDialog
=
new
SearchDialog
(
window
,
SearchPreset
.
TEXT
,
Collections
.
emptySet
());
searchDialog
.
initSearchText
=
text
;
show
(
searchDialog
,
window
);
}
private
static
void
show
(
SearchDialog
searchDialog
,
MainWindow
mw
)
{
mw
.
addLoadListener
(
loaded
->
{
if
(!
loaded
)
{
searchDialog
.
dispose
();
return
true
;
}
return
false
;
});
searchDialog
.
setVisible
(
true
);
}
...
...
jadx-gui/src/main/java/jadx/gui/utils/ILoadListener.java
0 → 100644
浏览文件 @
127f0ecf
package
jadx.gui.utils
;
public
interface
ILoadListener
{
/**
* Update files/project loaded state
*
* @return true to remove listener
*/
boolean
update
(
boolean
loaded
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录