Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ql04210214
jadx
提交
cdfb46d9
J
jadx
项目概览
ql04210214
/
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,发现更多精彩内容 >>
提交
cdfb46d9
编写于
8月 17, 2014
作者:
A
Anton Dyachenko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
gui: add saving preferences (open/save paths, flatten packages)
上级
5545a94a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
147 addition
and
9 deletion
+147
-9
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
+41
-9
jadx-gui/src/main/java/jadx/gui/utils/JadxPreferences.java
jadx-gui/src/main/java/jadx/gui/utils/JadxPreferences.java
+106
-0
未找到文件。
jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java
浏览文件 @
cdfb46d9
...
...
@@ -4,6 +4,7 @@ import jadx.gui.JadxWrapper;
import
jadx.gui.treemodel.JClass
;
import
jadx.gui.treemodel.JNode
;
import
jadx.gui.treemodel.JRoot
;
import
jadx.gui.utils.JadxPreferences
;
import
jadx.gui.utils.NLS
;
import
jadx.gui.utils.Position
;
import
jadx.gui.utils.Utils
;
...
...
@@ -79,6 +80,10 @@ public class MainWindow extends JFrame {
private
JRoot
treeRoot
;
private
TabbedPane
tabbedPane
;
private
JCheckBoxMenuItem
flatPkgMenuItem
;
private
JToggleButton
flatPkgButton
;
private
boolean
isFlattenPackage
;
public
MainWindow
(
JadxWrapper
wrapper
)
{
this
.
wrapper
=
wrapper
;
...
...
@@ -91,8 +96,16 @@ public class MainWindow extends JFrame {
fileChooser
.
setAcceptAllFileFilterUsed
(
true
);
fileChooser
.
setFileFilter
(
new
FileNameExtensionFilter
(
"supported files"
,
"dex"
,
"apk"
,
"jar"
));
fileChooser
.
setToolTipText
(
NLS
.
str
(
"file.open"
));
String
currentDirectory
=
JadxPreferences
.
getLastOpenFilePath
();
if
(!
currentDirectory
.
isEmpty
())
{
fileChooser
.
setCurrentDirectory
(
new
File
(
currentDirectory
));
}
int
ret
=
fileChooser
.
showDialog
(
mainPanel
,
NLS
.
str
(
"file.open"
));
if
(
ret
==
JFileChooser
.
APPROVE_OPTION
)
{
JadxPreferences
.
putLastOpenFilePath
(
fileChooser
.
getCurrentDirectory
().
getPath
());
openFile
(
fileChooser
.
getSelectedFile
());
}
}
...
...
@@ -107,9 +120,16 @@ public class MainWindow extends JFrame {
JFileChooser
fileChooser
=
new
JFileChooser
();
fileChooser
.
setFileSelectionMode
(
JFileChooser
.
DIRECTORIES_ONLY
);
fileChooser
.
setToolTipText
(
NLS
.
str
(
"file.save_all_msg"
));
String
currentDirectory
=
JadxPreferences
.
getLastSaveFilePath
();
if
(!
currentDirectory
.
isEmpty
())
{
fileChooser
.
setCurrentDirectory
(
new
File
(
currentDirectory
));
}
int
ret
=
fileChooser
.
showDialog
(
mainPanel
,
NLS
.
str
(
"file.select"
));
if
(
ret
==
JFileChooser
.
APPROVE_OPTION
)
{
JadxPreferences
.
putLastSaveFilePath
(
fileChooser
.
getCurrentDirectory
().
getPath
());
ProgressMonitor
progressMonitor
=
new
ProgressMonitor
(
mainPanel
,
"Saving sources"
,
""
,
0
,
100
);
progressMonitor
.
setMillisToPopup
(
500
);
wrapper
.
saveAll
(
fileChooser
.
getSelectedFile
(),
progressMonitor
);
...
...
@@ -118,19 +138,27 @@ public class MainWindow extends JFrame {
private
void
initTree
()
{
treeRoot
=
new
JRoot
(
wrapper
);
treeRoot
.
setFlatPackages
(
isFlattenPackage
);
treeModel
.
setRoot
(
treeRoot
);
treeModel
.
reload
();
tree
.
expandRow
(
0
);
}
private
void
toggleFlattenPackage
(
JToggleButton
btn
,
JCheckBoxMenuItem
menuItem
)
{
private
void
toggleFlattenPackage
()
{
setFlattenPackage
(!
isFlattenPackage
);
}
private
void
setFlattenPackage
(
boolean
value
)
{
isFlattenPackage
=
value
;
JadxPreferences
.
putFlattenPackage
(
isFlattenPackage
);
flatPkgButton
.
setSelected
(
isFlattenPackage
);
flatPkgMenuItem
.
setState
(
isFlattenPackage
);
Object
root
=
treeModel
.
getRoot
();
if
(
root
instanceof
JRoot
)
{
JRoot
treeRoot
=
(
JRoot
)
root
;
boolean
flatPkg
=
!
treeRoot
.
isFlatPackages
();
btn
.
setSelected
(
flatPkg
);
menuItem
.
setState
(
flatPkg
);
treeRoot
.
setFlatPackages
(
flatPkg
);
treeRoot
.
setFlatPackages
(
isFlattenPackage
);
treeModel
.
reload
();
tree
.
expandRow
(
0
);
}
...
...
@@ -212,8 +240,11 @@ public class MainWindow extends JFrame {
JMenu
view
=
new
JMenu
(
NLS
.
str
(
"menu.view"
));
view
.
setMnemonic
(
KeyEvent
.
VK_V
);
final
JCheckBoxMenuItem
flatPkgMenuItem
=
new
JCheckBoxMenuItem
(
NLS
.
str
(
"menu.flatten"
),
ICON_FLAT_PKG
);
isFlattenPackage
=
JadxPreferences
.
getFlattenPackage
();
flatPkgMenuItem
=
new
JCheckBoxMenuItem
(
NLS
.
str
(
"menu.flatten"
),
ICON_FLAT_PKG
);
view
.
add
(
flatPkgMenuItem
);
flatPkgMenuItem
.
setState
(
isFlattenPackage
);
JMenuItem
syncItem
=
new
JMenuItem
(
NLS
.
str
(
"menu.sync"
),
ICON_SYNC
);
view
.
add
(
syncItem
);
...
...
@@ -300,11 +331,12 @@ public class MainWindow extends JFrame {
syncButton
.
setToolTipText
(
NLS
.
str
(
"menu.sync"
));
toolbar
.
add
(
syncButton
);
final
JToggleButton
flatPkgButton
=
new
JToggleButton
(
ICON_FLAT_PKG
);
flatPkgButton
=
new
JToggleButton
(
ICON_FLAT_PKG
);
flatPkgButton
.
setSelected
(
isFlattenPackage
);
ActionListener
flatPkgAction
=
new
ActionListener
()
{
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
toggleFlattenPackage
(
flatPkgButton
,
flatPkgMenuItem
);
toggleFlattenPackage
();
}
};
flatPkgButton
.
addActionListener
(
flatPkgAction
);
...
...
jadx-gui/src/main/java/jadx/gui/utils/JadxPreferences.java
0 → 100644
浏览文件 @
cdfb46d9
package
jadx.gui.utils
;
import
java.util.prefs.Preferences
;
public
class
JadxPreferences
{
public
static
String
getLastOpenFilePath
()
{
String
result
=
""
;
try
{
result
=
getPreferences
().
get
(
KEY_LAST_OPEN_FILE_PATH
,
""
);
if
(
result
.
isEmpty
())
{
result
=
System
.
getProperty
(
"user.home"
);
}
}
catch
(
Exception
anyEx
)
{
/* do nothing, no preferences */
}
return
result
;
}
public
static
void
putLastOpenFilePath
(
String
path
)
{
try
{
Preferences
prefs
=
getPreferences
();
prefs
.
put
(
KEY_LAST_OPEN_FILE_PATH
,
path
);
prefs
.
sync
();
}
catch
(
Exception
anyEx
)
{
/* do nothing, no preferences */
}
}
public
static
String
getLastSaveFilePath
()
{
String
result
=
""
;
try
{
result
=
getPreferences
().
get
(
KEY_LAST_SAVE_FILE_PATH
,
""
);
if
(
result
.
isEmpty
())
{
result
=
getLastOpenFilePath
();
}
}
catch
(
Exception
anyEx
)
{
/* do nothing, no preferences */
}
return
result
;
}
public
static
void
putLastSaveFilePath
(
String
path
)
{
try
{
Preferences
prefs
=
getPreferences
();
prefs
.
put
(
KEY_LAST_SAVE_FILE_PATH
,
path
);
prefs
.
sync
();
}
catch
(
Exception
anyEx
)
{
/* do nothing, no preferences */
}
}
public
static
boolean
getFlattenPackage
()
{
boolean
result
=
false
;
try
{
Preferences
prefs
=
getPreferences
();
result
=
prefs
.
getBoolean
(
KEY_FLATTEN_PACKAGE
,
false
);
}
catch
(
Exception
anyEx
)
{
/* do nothing, no preferences */
}
return
result
;
}
public
static
void
putFlattenPackage
(
boolean
value
)
{
try
{
Preferences
prefs
=
getPreferences
();
prefs
.
putBoolean
(
KEY_FLATTEN_PACKAGE
,
value
);
prefs
.
sync
();
}
catch
(
Exception
anyEx
)
{
/* do nothing, no preferences */
}
}
private
static
final
String
KEY_LAST_OPEN_FILE_PATH
=
"lastOpenFilePath"
;
private
static
final
String
KEY_LAST_SAVE_FILE_PATH
=
"lastSaveFilePath"
;
private
static
final
String
KEY_FLATTEN_PACKAGE
=
"flattenPackage"
;
private
static
Preferences
prefs
=
null
;
private
static
Preferences
getPreferences
()
{
if
(
prefs
==
null
)
{
prefs
=
Preferences
.
userRoot
();
}
return
prefs
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录