Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
keyescgm
jadx
提交
a8febb24
J
jadx
项目概览
keyescgm
/
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,发现更多精彩内容 >>
提交
a8febb24
编写于
8月 28, 2018
作者:
J
javaeryang
提交者:
skylot
8月 28, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(gui): add a menu to copy class name (#351)
上级
1b0b5268
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
62 addition
and
13 deletion
+62
-13
jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java
jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java
+38
-8
jadx-gui/src/main/java/jadx/gui/utils/Utils.java
jadx-gui/src/main/java/jadx/gui/utils/Utils.java
+21
-5
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_zh_CN.properties
jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties
+1
-0
未找到文件。
jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java
浏览文件 @
a8febb24
package
jadx.gui.ui
;
import
javax.swing.*
;
import
javax.swing.plaf.basic.BasicButtonUI
;
import
javax.swing.text.BadLocationException
;
import
java.awt.*
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.awt.Component
;
import
java.awt.FlowLayout
;
import
java.awt.event.ActionEvent
;
import
java.awt.event.ActionListener
;
import
java.awt.event.MouseAdapter
;
...
...
@@ -15,13 +17,22 @@ import java.util.LinkedHashMap;
import
java.util.List
;
import
java.util.Map
;
import
jadx.gui.treemodel.JCertificate
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
javax.swing.BorderFactory
;
import
javax.swing.ImageIcon
;
import
javax.swing.JButton
;
import
javax.swing.JLabel
;
import
javax.swing.JMenuItem
;
import
javax.swing.JPanel
;
import
javax.swing.JPopupMenu
;
import
javax.swing.JTabbedPane
;
import
javax.swing.SwingUtilities
;
import
javax.swing.plaf.basic.BasicButtonUI
;
import
javax.swing.text.BadLocationException
;
import
jadx.api.ResourceFile
;
import
jadx.api.ResourceType
;
import
jadx.gui.treemodel.JCertificate
;
import
jadx.gui.treemodel.JClass
;
import
jadx.gui.treemodel.JNode
;
import
jadx.gui.treemodel.JResource
;
import
jadx.gui.utils.JumpManager
;
...
...
@@ -252,6 +263,15 @@ class TabbedPane extends JTabbedPane {
private
JPopupMenu
createTabPopupMenu
(
final
ContentPanel
contentPanel
)
{
JPopupMenu
menu
=
new
JPopupMenu
();
JMenuItem
copyRootClassName
=
new
JMenuItem
(
NLS
.
str
(
"tabs.copy_class_name"
));
copyRootClassName
.
addActionListener
(
new
ActionListener
()
{
@Override
public
void
actionPerformed
(
ActionEvent
actionEvent
)
{
copyRootClassName
();
}
});
menu
.
add
(
copyRootClassName
);
JMenuItem
closeTab
=
new
JMenuItem
(
NLS
.
str
(
"tabs.close"
));
closeTab
.
addActionListener
(
new
ActionListener
()
{
@Override
...
...
@@ -315,6 +335,16 @@ class TabbedPane extends JTabbedPane {
}
}
public
void
copyRootClassName
(){
ContentPanel
selectedPanel
=
getSelectedCodePanel
();
JNode
node
=
selectedPanel
.
getNode
();
JClass
jClass
=
node
.
getRootClass
();
if
(
jClass
!=
null
){
String
name
=
jClass
.
getFullName
();
Utils
.
setClipboardString
(
name
);
}
}
public
void
loadSettings
()
{
for
(
ContentPanel
panel
:
openTabs
.
values
())
{
panel
.
loadSettings
();
...
...
jadx-gui/src/main/java/jadx/gui/utils/Utils.java
浏览文件 @
a8febb24
package
jadx.gui.utils
;
import
java.awt.*
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.awt.Font
;
import
java.awt.Toolkit
;
import
java.awt.datatransfer.Clipboard
;
import
java.awt.datatransfer.StringSelection
;
import
java.awt.datatransfer.Transferable
;
import
java.io.InputStream
;
import
java.net.URL
;
import
javax.swing.*
;
import
javax.swing.Action
;
import
javax.swing.Icon
;
import
javax.swing.ImageIcon
;
import
javax.swing.JComponent
;
import
javax.swing.KeyStroke
;
import
jadx.core.dex.info.AccessInfo
;
import
jadx.core.dex.instructions.args.ArgType
;
import
jadx.core.utils.exceptions.JadxRuntimeException
;
import
org.jetbrains.annotations.Nullable
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
Utils
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
Utils
.
class
);
...
...
@@ -136,4 +146,10 @@ public class Utils {
public
static
char
caseChar
(
char
ch
,
boolean
toLower
)
{
return
toLower
?
Character
.
toLowerCase
(
ch
)
:
ch
;
}
public
static
void
setClipboardString
(
String
text
){
Clipboard
clipboard
=
Toolkit
.
getDefaultToolkit
().
getSystemClipboard
();
Transferable
transferable
=
new
StringSelection
(
text
);
clipboard
.
setContents
(
transferable
,
null
);
}
}
jadx-gui/src/main/resources/i18n/Messages_en_US.properties
浏览文件 @
a8febb24
...
...
@@ -38,6 +38,7 @@ search.match_case=Match Case
search.whole_word
=
Whole word
search.find
=
Find
tabs.copy_class_name
=
Copy Name
tabs.close
=
Close
tabs.closeOthers
=
Close Others
tabs.closeAll
=
Close All
...
...
jadx-gui/src/main/resources/i18n/Messages_es_ES.properties
浏览文件 @
a8febb24
...
...
@@ -38,6 +38,7 @@ search.match_case=Sensible a minúsculas/mayúsculas
search.whole_word
=
Palabra entera
search.find
=
Buscar
tabs.copy_class_name
=
Copy Name
tabs.close
=
Cerrar
tabs.closeOthers
=
Cerrar otros
tabs.closeAll
=
Cerrar todo
...
...
jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties
浏览文件 @
a8febb24
...
...
@@ -38,6 +38,7 @@ search.match_case=区分大小写
search.whole_word
=
整个词语
search.find
=
查询
tabs.copy_class_name
=
复制类名
tabs.close
=
关闭
tabs.closeOthers
=
关闭其他文件
tabs.closeAll
=
全部关闭
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录