From afa331e8fc5c826d13f70d602c88c71b41056cda Mon Sep 17 00:00:00 2001 From: chaos <71205599+chaos-cn@users.noreply.github.com> Date: Wed, 21 Jun 2023 01:36:37 +0800 Subject: [PATCH] feat(gui): register macOS specific open file handler (#1922)(PR #1923) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feature:支持双击文件后直接打开jadx-gui * additional checks --------- Co-authored-by: Skylot --- jadx-gui/src/main/java/jadx/gui/JadxGUI.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/jadx-gui/src/main/java/jadx/gui/JadxGUI.java b/jadx-gui/src/main/java/jadx/gui/JadxGUI.java index 526bcb611..3a9327bd6 100644 --- a/jadx-gui/src/main/java/jadx/gui/JadxGUI.java +++ b/jadx-gui/src/main/java/jadx/gui/JadxGUI.java @@ -1,11 +1,14 @@ package jadx.gui; +import java.awt.Desktop; + import javax.swing.SwingUtilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jadx.cli.LogHelper; +import jadx.core.utils.files.FileUtils; import jadx.gui.logs.LogCollector; import jadx.gui.settings.JadxSettings; import jadx.gui.settings.JadxSettingsAdapter; @@ -37,6 +40,7 @@ public class JadxGUI { SwingUtilities.invokeLater(() -> { MainWindow mw = new MainWindow(settings); mw.init(); + registerOpenFileHandler(mw); }); } catch (Exception e) { LOG.error("Error: {}", e.getMessage(), e); @@ -44,6 +48,19 @@ public class JadxGUI { } } + private static void registerOpenFileHandler(MainWindow mw) { + try { + if (Desktop.isDesktopSupported()) { + Desktop desktop = Desktop.getDesktop(); + if (desktop.isSupported(Desktop.Action.APP_OPEN_FILE)) { + desktop.setOpenFileHandler(e -> mw.open(FileUtils.toPaths(e.getFiles()))); + } + } + } catch (Throwable e) { + LOG.error("Failed to register open file handler", e); + } + } + private static void printSystemInfo() { if (LOG.isDebugEnabled()) { LOG.debug("Starting jadx-gui. Version: '{}'. JVM: {} {}. OS: {} {}",