From 214866fcb962c4ed672a55079ad725f9daf85758 Mon Sep 17 00:00:00 2001 From: Jan Peter Stotz Date: Sat, 16 Mar 2019 18:12:39 +0100 Subject: [PATCH] chore: About box and logos --- .../main/java/jadx/gui/ui/AboutDialog.java | 28 ++++++++++++++++-- .../src/main/java/jadx/gui/ui/MainWindow.java | 14 ++------- .../src/main/java/jadx/gui/utils/Utils.java | 11 +++++++ .../src/main/resources/icons-16/jadx-logo.png | Bin 0 -> 814 bytes .../src/main/resources/logos/jadx-logo.ico | Bin 9662 -> 15086 bytes .../src/main/resources/logos/jadx-logo.svg | 1 + 6 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 jadx-gui/src/main/resources/icons-16/jadx-logo.png create mode 100644 jadx-gui/src/main/resources/logos/jadx-logo.svg diff --git a/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java index 9be61b539..4659aab39 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java @@ -2,9 +2,11 @@ package jadx.gui.ui; import javax.swing.*; import java.awt.*; +import java.net.URL; import jadx.api.JadxDecompiler; import jadx.gui.utils.NLS; +import jadx.gui.utils.Utils; class AboutDialog extends JDialog { private static final long serialVersionUID = 5763493590584039096L; @@ -16,7 +18,10 @@ class AboutDialog extends JDialog { public final void initUI() { Font font = new Font("Serif", Font.BOLD, 13); - JLabel name = new JLabel("jadx"); + URL logoURL = getClass().getResource("/logos/jadx-logo-48px.png"); + Icon logo = new ImageIcon(logoURL, "jadx logo"); + + JLabel name = new JLabel("jadx", logo, SwingConstants.CENTER); name.setFont(font); name.setAlignmentX(0.5f); @@ -24,10 +29,24 @@ class AboutDialog extends JDialog { desc.setFont(font); desc.setAlignmentX(0.5f); - JLabel version = new JLabel("version: " + JadxDecompiler.getVersion()); + JLabel version = new JLabel("jadx version: " + JadxDecompiler.getVersion()); version.setFont(font); version.setAlignmentX(0.5f); + String javaVm = System.getProperty("java.vm.name"); + String javaVer = System.getProperty("java.vm.version"); + + javaVm = javaVm == null ? "" : javaVm; + + JLabel javaVmLabel = new JLabel("Java VM: " + javaVm); + javaVmLabel.setFont(font); + javaVmLabel.setAlignmentX(0.5f); + + javaVer = javaVer == null ? "" : javaVer; + JLabel javaVerLabel = new JLabel("Java version: " + javaVer); + javaVerLabel.setFont(font); + javaVerLabel.setAlignmentX(0.5f); + JPanel textPane = new JPanel(); textPane.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15)); textPane.setLayout(new BoxLayout(textPane, BoxLayout.PAGE_AXIS)); @@ -38,6 +57,9 @@ class AboutDialog extends JDialog { textPane.add(Box.createRigidArea(new Dimension(0, 10))); textPane.add(version); textPane.add(Box.createRigidArea(new Dimension(0, 20))); + textPane.add(javaVmLabel); + textPane.add(javaVerLabel); + textPane.add(Box.createRigidArea(new Dimension(0, 20))); JButton close = new JButton(NLS.str("tabs.close")); close.addActionListener(event -> dispose()); @@ -47,6 +69,8 @@ class AboutDialog extends JDialog { contentPane.add(textPane, BorderLayout.CENTER); contentPane.add(close, BorderLayout.PAGE_END); + Utils.setWindowIcons(this); + setModalityType(ModalityType.APPLICATION_MODAL); setTitle(NLS.str("about_dialog.title")); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index 4885eb93e..4783e984f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -82,6 +82,7 @@ public class MainWindow extends JFrame { private static final ImageIcon ICON_PREF = Utils.openIcon("wrench"); private static final ImageIcon ICON_DEOBF = Utils.openIcon("lock_edit"); private static final ImageIcon ICON_LOG = Utils.openIcon("report"); + private static final ImageIcon ICON_JADX = Utils.openIcon("jadx-logo"); private final transient JadxWrapper wrapper; private final transient JadxSettings settings; @@ -116,16 +117,7 @@ public class MainWindow extends JFrame { registerBundledFonts(); initUI(); initMenuAndToolbar(); - setWindowIcons(); - } - - private void setWindowIcons() { - List icons = new ArrayList<>(); - icons.add(Utils.openImage("/logos/jadx-logo-16px.png")); - icons.add(Utils.openImage("/logos/jadx-logo-32px.png")); - icons.add(Utils.openImage("/logos/jadx-logo-48px.png")); - icons.add(Utils.openImage("/logos/jadx-logo.png")); - setIconImages(icons); + Utils.setWindowIcons(this); loadSettings(); checkForUpdate(); } @@ -462,7 +454,7 @@ public class MainWindow extends JFrame { logAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK)); - Action aboutAction = new AbstractAction(NLS.str("menu.about")) { + Action aboutAction = new AbstractAction(NLS.str("menu.about"), ICON_JADX) { @Override public void actionPerformed(ActionEvent e) { new AboutDialog().setVisible(true); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java index f6f724273..8ca0bb926 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java @@ -7,6 +7,8 @@ import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.io.InputStream; import java.net.URL; +import java.util.ArrayList; +import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -191,4 +193,13 @@ public class Utils { } return sb.toString().trim(); } + + public static void setWindowIcons(Window window) { + List icons = new ArrayList<>(); + icons.add(Utils.openImage("/logos/jadx-logo-16px.png")); + icons.add(Utils.openImage("/logos/jadx-logo-32px.png")); + icons.add(Utils.openImage("/logos/jadx-logo-48px.png")); + icons.add(Utils.openImage("/logos/jadx-logo.png")); + window.setIconImages(icons); + } } diff --git a/jadx-gui/src/main/resources/icons-16/jadx-logo.png b/jadx-gui/src/main/resources/icons-16/jadx-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a2d08566be02ca93b41eb6d9a24255ed28e18e GIT binary patch literal 814 zcmV+}1JV46P)LQ+-I&K^T6VTj^}m+0vGdtvStENM&WgqEbS%tYKd2tslqx!1{ zj^Dj^@AKSy_j}#|LI@@!PrGgJdX1*c;c!F=g+jLD^Z6i^O5e4ZOeZcjT&|g%?-w|j zTbi;|lWMZLor1H5T1J`-Dwda@4~b;vhpLLo#c%93JKLrL6$QH%58GXY!XPUkdf7&D z_eu+kmn}&qF*3P-tWD1#-Cf<|F*3QFaye8)ox1Y2^WJm+dD74bq-_RbULoS`e-+eIrPpR*I?L3_mE#8u_T>+$ISgm&@4dgcr;1^lELSNfCL6I zk%58tV#?*v2Wv81^^+&KpP<^R#)R7eZvTA*$HrlP@>lf6d+~f*2CR8muxT~WJI%<< z&f3GJudUs=1GDDEwp1y>6$k)<08=vyndmJAAE)^dzYdwg!}}>b*u5SJcX@0y z=BiZSMMmRu<1z43a`4Ue5@Y*vSaNq#5zH}ah`jxHyQ>myRtu^hw&QVODLP;GA>eKE zB_cK+#oy36B!Q~Zhy}~Tv8e7Ok|a?$w`K#ZUJuK@{h$M!R=XEB+~5A7cYF!Qh2C-; zD*5qu(xQ~8ebR}Z0Vfoqa1`Hc!tmHAIMiXsTtUByv<>sI!q5&5g8ggLoiiW`3Wh>7 zoyBUY91&vi2#4B}I!tHzf*RX6dWH!ciRTa^;Ih(pSF0Go+DvdhZ3COrN^~n$<4)Hj z6LaFV#>PSFFr`dMQl<5z?y!Zqkiy*SBZrEgk%~=ESX|V4oy@O2PVAl!6O_w(K`Eat zZ!{V$XZBmU&KEyQ{1^DEo??4;?D*c@WpT70{LK_6Pf#4u*Ypg!JYfy>CXDz-f71{M sr$JkwfjBbMTUAxM@MkmqUpoW%4nfsj#JY?JumAu607*qoM6N<$f=D)juK)l5 literal 0 HcmV?d00001 diff --git a/jadx-gui/src/main/resources/logos/jadx-logo.ico b/jadx-gui/src/main/resources/logos/jadx-logo.ico index 1f02bd689dfd128eea9db30c8a7103fd5a77153b..85786cd6b2b65f29e8097d6fa88bc570dc1a396e 100644 GIT binary patch delta 5019 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 \ No newline at end of file