From cbbd6ad88ffb81f1a3df3fbef24adb23f68626b1 Mon Sep 17 00:00:00 2001 From: Bane Stojkovic Date: Sat, 8 Mar 2025 22:42:22 +0100 Subject: [PATCH] Fixed the issue with opening DIY files on Mac OS - updated the logic to use java.desktop --- .../src/org/diylc/presenter/Presenter.java | 12 ++-- .../src/org/diylc/presenter/update.xml | 52 ++++++++++-------- diylc/diylc-library/lib/diylc-core.jar | Bin 433118 -> 435530 bytes diylc/diylc-swing/lib/diylc-core.jar | Bin 433118 -> 435530 bytes .../src/org/diylc/DIYLCStarter.java | 16 +----- .../src/org/diylc/OpenDIYFilesHandler.java | 35 ++++++++++++ 6 files changed, 70 insertions(+), 45 deletions(-) create mode 100644 diylc/diylc-swing/src/org/diylc/OpenDIYFilesHandler.java diff --git a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java index 7e6786ad..7af5f64e 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/Presenter.java +++ b/diylc/diylc-core/src/org/diylc/presenter/Presenter.java @@ -143,14 +143,10 @@ public class Presenter implements IPlugInPort, IConfigListener { List allVersions = (List) xStream.fromXML(in); CURRENT_VERSION = allVersions.get(allVersions.size() - 1).getVersionNumber(); LOG.info("Current DIYLC version: " + CURRENT_VERSION); - RECENT_VERSIONS = allVersions.subList(allVersions.size() - 10, allVersions.size()); - Collections.sort(RECENT_VERSIONS, new Comparator() { - - @Override - public int compare(Version o1, Version o2) { - return -o1.getVersionNumber().compareTo(o2.getVersionNumber()); - } - }); + RECENT_VERSIONS = allVersions.stream() + .sorted(Comparator.comparing(x -> ((Version)x).getVersionNumber()).reversed()) + .limit(10) + .collect(Collectors.toList()); in.close(); } } catch (Exception e) { diff --git a/diylc/diylc-core/src/org/diylc/presenter/update.xml b/diylc/diylc-core/src/org/diylc/presenter/update.xml index 6e9f28dd..c4586cc3 100644 --- a/diylc/diylc-core/src/org/diylc/presenter/update.xml +++ b/diylc/diylc-core/src/org/diylc/presenter/update.xml @@ -1,5 +1,33 @@ + + + 5 + 0 + 0 + + 2025-03-08 00:00:00.000 CET + + + + NEW_FEATURE + Switched to AppImage distribution for Linux system, abandoning Flatpak as a means of distribution. DIYLC AppImage will be available alongside with other executables on the official DIYLC GitHub page. + + + IMPROVEMENT + Upgraded Windows installer version and Windows EXE launcher version + + + BUG_FIX + Fixed alignment issues of round elements (e.g. solder pads and holes) in exported Gerber files + + + BUG_FIX + Fixed the issue with opening DIY files on Mac OS + + + https://github.com/bancika/diy-layout-creator/releases + 4 @@ -212,29 +240,5 @@ https://github.com/bancika/diy-layout-creator/releases > - - - 5 - 0 - 0 - - 2025-03-08 00:00:00.000 CET - - - - NEW_FEATURE - Switched to AppImage distribution for Linux system, abandoning Flatpak as a means of distribution. DIYLC AppImage will be available alongside with other executables on the official DIYLC GitHub page. - - - IMPROVEMENT - Upgraded Windows installer version and Windows EXE launcher version - - - BUG_FIX - Fixed alignment issues of round elements (e.g. solder pads and holes) in exported Gerber files - - - https://github.com/bancika/diy-layout-creator/releases - diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index 5c7f51a19acde57734c9ac7dd491982a698a5a4b..d27309b5665588638676e02b445b7bf676e17f81 100644 GIT binary patch delta 19131 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 { - 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); - } - } - LOG.info("Finished setting up open file handler for Mac."); - }); + // On macOS this function is called when a new file is opened. + Desktop.getDesktop().setOpenFileHandler(new OpenDIYFilesHandler(presenter)); }); } diff --git a/diylc/diylc-swing/src/org/diylc/OpenDIYFilesHandler.java b/diylc/diylc-swing/src/org/diylc/OpenDIYFilesHandler.java new file mode 100644 index 00000000..0695b640 --- /dev/null +++ b/diylc/diylc-swing/src/org/diylc/OpenDIYFilesHandler.java @@ -0,0 +1,35 @@ +package org.diylc; + +import java.awt.desktop.OpenFilesEvent; +import java.awt.desktop.OpenFilesHandler; +import java.io.File; +import java.util.List; + +import org.apache.log4j.Logger; +import org.diylc.common.IPlugInPort; + +public class OpenDIYFilesHandler implements OpenFilesHandler { + + private static final Logger LOG = Logger.getLogger(DIYLCStarter.class); + + private final IPlugInPort presenter; + + public OpenDIYFilesHandler(IPlugInPort presenter) { + super(); + this.presenter = presenter; + } + + @Override + public void openFiles(OpenFilesEvent e) { + + List files = e.getFiles(); + if (files != null && files.size() > 0) { + String filePath = files.get(0).getAbsolutePath(); + if (presenter.allowFileAction()) { + presenter.loadProjectFromFile(filePath); + } + } + LOG.info("Finished setting up open file handler for Mac."); + } + +}