From 076d7caf5c47cffa230983b199d076becc4e8294 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 15 Jun 2022 22:00:14 +0200 Subject: [PATCH 1/2] Initialize OSX OpenFileHandler in invokeAndWait --- .../net/sf/openrocket/startup/OSXSetup.java | 18 +++++++++++++++++- .../sf/openrocket/startup/SwingStartup.java | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/swing/src/net/sf/openrocket/startup/OSXSetup.java b/swing/src/net/sf/openrocket/startup/OSXSetup.java index 8e4a0a038..378c5afda 100644 --- a/swing/src/net/sf/openrocket/startup/OSXSetup.java +++ b/swing/src/net/sf/openrocket/startup/OSXSetup.java @@ -6,6 +6,7 @@ import java.awt.desktop.OpenFilesEvent; import java.awt.desktop.OpenFilesHandler; import java.awt.desktop.PreferencesHandler; import java.awt.desktop.QuitHandler; +import java.lang.reflect.InvocationTargetException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -92,7 +93,6 @@ final class OSXSetup { // Set handlers osxDesktop.setAboutHandler(ABOUT_HANDLER); - osxDesktop.setOpenFileHandler(OPEN_FILE_HANDLER); osxDesktop.setPreferencesHandler(PREFERENCES_HANDLER); osxDesktop.setQuitHandler(QUIT_HANDLER); @@ -115,4 +115,20 @@ final class OSXSetup { } } + /** + * Sets up the open file handler, which handles file association on macOS. + */ + public static void setupOSXOpenFileHandler() { + if (SystemInfo.getPlatform() != Platform.MAC_OS) { + log.warn("Attempting to set up OSX file handler on non-MAC_OS"); + } + final Desktop osxDesktop = Desktop.getDesktop(); + if (osxDesktop == null) { + // Application is null: Something is wrong, give up on OS setup + throw new NullPointerException("com.apple.eawt.Application.getApplication() returned NULL. " + + "Aborting OSX UI Setup."); + } + osxDesktop.setOpenFileHandler(OPEN_FILE_HANDLER); + } + } diff --git a/swing/src/net/sf/openrocket/startup/SwingStartup.java b/swing/src/net/sf/openrocket/startup/SwingStartup.java index c95860878..5a125e702 100644 --- a/swing/src/net/sf/openrocket/startup/SwingStartup.java +++ b/swing/src/net/sf/openrocket/startup/SwingStartup.java @@ -85,6 +85,8 @@ public class SwingStartup { SwingUtilities.invokeAndWait(new Runnable() { @Override public void run() { + // Set up the OSX file open handler here so that it can handle files that are opened when OR is not yet running. + OSXSetup.setupOSXOpenFileHandler(); runner.runInEDT(args); } }); From e32b8d09cebb08f08774da16802307a4d7fad58a Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 15 Jun 2022 22:02:05 +0200 Subject: [PATCH 2/2] Remove redundant imports --- swing/src/net/sf/openrocket/startup/OSXSetup.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/swing/src/net/sf/openrocket/startup/OSXSetup.java b/swing/src/net/sf/openrocket/startup/OSXSetup.java index 378c5afda..3dae2435b 100644 --- a/swing/src/net/sf/openrocket/startup/OSXSetup.java +++ b/swing/src/net/sf/openrocket/startup/OSXSetup.java @@ -2,11 +2,9 @@ package net.sf.openrocket.startup; import java.awt.*; import java.awt.desktop.AboutHandler; -import java.awt.desktop.OpenFilesEvent; import java.awt.desktop.OpenFilesHandler; import java.awt.desktop.PreferencesHandler; import java.awt.desktop.QuitHandler; -import java.lang.reflect.InvocationTargetException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,7 +14,6 @@ import net.sf.openrocket.arch.SystemInfo.Platform; import net.sf.openrocket.gui.dialogs.AboutDialog; import net.sf.openrocket.gui.dialogs.preferences.PreferencesDialog; import net.sf.openrocket.gui.main.BasicFrame; -import net.sf.openrocket.gui.main.MRUDesignFile; import javax.swing.*;