From 5f664dcc5d64635521eb127b991c521991b1d787 Mon Sep 17 00:00:00 2001 From: Herman Torjussen Date: Mon, 7 Sep 2020 00:44:28 +0200 Subject: [PATCH] use open file event for opening files on macos --- .../src/org/diylc/DIYLCStarter.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java index ed26839b..febab7cd 100644 --- a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java +++ b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java @@ -23,10 +23,12 @@ import java.awt.GraphicsEnvironment; import java.io.File; import java.io.IOException; import java.net.URL; +import java.util.List; import java.util.Properties; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.SwingUtilities; import javax.swing.UIManager; import org.apache.log4j.Logger; @@ -42,6 +44,9 @@ import org.diylc.swing.gui.TemplateDialog; import org.diylc.swingframework.FontChooserComboBox; import org.diylc.utils.ResourceLoader; +import com.apple.eawt.AppEvent; +import com.apple.eawt.Application; + /** * Main class that runs DIYLC. * @@ -147,6 +152,7 @@ public class DIYLCStarter { } MainFrame mainFrame = new MainFrame(); + Presenter presenter = mainFrame.getPresenter(); // mainFrame.setLocationRelativeTo(null); if (splash == null) { @@ -158,8 +164,20 @@ public class DIYLCStarter { mainFrame.setVisible(true); + SwingUtilities.invokeLater(() -> { + Application.getApplication().setOpenFileHandler((AppEvent.OpenFilesEvent ofe) -> { + List files = ofe.getFiles(); + if (files != null && files.size() > 0) { + String filePath = files.get(0).getAbsolutePath(); + if (presenter.allowFileAction()) { + presenter.loadProjectFromFile(filePath); + } + } + }); + }); + if (args.length > 0) { - mainFrame.getPresenter().loadProjectFromFile(args[0]); + presenter.loadProjectFromFile(args[0]); } else { boolean showTemplates = ConfigurationManager.getInstance().readBoolean(TemplateDialog.SHOW_TEMPLATES_KEY, false); if (showTemplates) {