From e38907122ba239403c49f11a1380c166a0cf1bfc Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Sun, 12 Sep 2021 21:13:31 +0200 Subject: [PATCH 1/3] =?UTF-8?q?[fixes=20#987]=C2=A0Use=20warning=20dialog?= =?UTF-8?q?=20for=20thrust=20curve=20import=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/resources/l10n/messages.properties | 6 ++++++ .../database/MotorDatabaseLoader.java | 18 ++++++++++++++++-- .../BlockingMotorDatabaseProvider.java | 4 ++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index c770f3471..b1d326afa 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -792,6 +792,12 @@ FinSetConfig.lbl.relativeto = relative to !FinMarkingGuide FinMarkingGuide.lbl.Front = Front +! MotorDatabaseLoaderDialog +MotorDbLoaderDlg.title = Error upon thrust curve import +MotorDbLoaderDlg.message1 = Thrust curve +MotorDbLoaderDlg.message2 = will be ignored during import. +MotorDbLoaderDlg.message3 = You can try replacing, deleting or manually editing the thrust curve file to fix this issue. + ! MotorDatabaseLoadingDialog MotorDbLoadDlg.title = Loading motors MotorDbLoadDlg.Loadingmotors = Loading motors... diff --git a/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java b/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java index 47b1f3f28..6d610e299 100644 --- a/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java +++ b/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java @@ -8,6 +8,7 @@ import java.io.InputStream; import java.io.ObjectInputStream; import java.util.List; +import net.sf.openrocket.l10n.Translator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,6 +23,8 @@ import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.Pair; +import javax.swing.JOptionPane; + /** * An asynchronous database loader that loads the internal thrust curves * and external user-supplied thrust curves to a ThrustCurveMotorSetDatabase. @@ -32,7 +35,7 @@ import net.sf.openrocket.util.Pair; public class MotorDatabaseLoader extends AsynchronousDatabaseLoader { private final static Logger log = LoggerFactory.getLogger(MotorDatabaseLoader.class); - + private static final String THRUSTCURVE_DIRECTORY = "datafiles/thrustcurves/"; private static final long STARTUP_DELAY = 0; @@ -135,7 +138,18 @@ public class MotorDatabaseLoader extends AsynchronousDatabaseLoader { private void loadFile(GeneralMotorLoader loader, Pair f) { try { List motors = loader.load(f.getV(), f.getU()); - addMotorsFromBuilders(motors); + try { + addMotorsFromBuilders(motors); + } + catch (IllegalArgumentException e) { + Translator trans = Application.getTranslator(); + String message = "

" + e.getMessage() + + ".

" + trans.get("MotorDbLoaderDlg.message1") + " '" + f.getU() + "' " + + trans.get("MotorDbLoaderDlg.message2") + + "
" + trans.get("MotorDbLoaderDlg.message3") + "

"; + JOptionPane.showMessageDialog(null, + message, trans.get("MotorDbLoaderDlg.title"), JOptionPane.WARNING_MESSAGE); + } f.getV().close(); } catch (IOException e) { log.warn("IOException while loading file " + f.getU() + ": " + e, e); diff --git a/swing/src/net/sf/openrocket/startup/providers/BlockingMotorDatabaseProvider.java b/swing/src/net/sf/openrocket/startup/providers/BlockingMotorDatabaseProvider.java index f5d30f981..8697c083e 100644 --- a/swing/src/net/sf/openrocket/startup/providers/BlockingMotorDatabaseProvider.java +++ b/swing/src/net/sf/openrocket/startup/providers/BlockingMotorDatabaseProvider.java @@ -34,7 +34,7 @@ import com.google.inject.Provider; public class BlockingMotorDatabaseProvider implements Provider { private static final Logger log = LoggerFactory.getLogger(BlockingMotorDatabaseProvider.class); - + @Inject private Translator trans; @@ -99,7 +99,7 @@ public class BlockingMotorDatabaseProvider implements Provider Date: Tue, 14 Sep 2021 11:55:12 +0200 Subject: [PATCH 2/3] [fixes #987] Cleaner popup dialog message formatting --- core/resources/l10n/messages.properties | 5 ++--- .../src/net/sf/openrocket/database/MotorDatabaseLoader.java | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index b1d326afa..f9ed86b9d 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -794,9 +794,8 @@ FinMarkingGuide.lbl.Front = Front ! MotorDatabaseLoaderDialog MotorDbLoaderDlg.title = Error upon thrust curve import -MotorDbLoaderDlg.message1 = Thrust curve -MotorDbLoaderDlg.message2 = will be ignored during import. -MotorDbLoaderDlg.message3 = You can try replacing, deleting or manually editing the thrust curve file to fix this issue. +MotorDbLoaderDlg.message1 = Thrust curve ''{0}'' will be ignored during import. +MotorDbLoaderDlg.message2 = You can try replacing, deleting or manually editing the thrust curve file to fix this issue. ! MotorDatabaseLoadingDialog MotorDbLoadDlg.title = Loading motors diff --git a/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java b/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java index 6d610e299..18b7e16ed 100644 --- a/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java +++ b/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java @@ -6,6 +6,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; +import java.text.MessageFormat; import java.util.List; import net.sf.openrocket.l10n.Translator; @@ -144,9 +145,8 @@ public class MotorDatabaseLoader extends AsynchronousDatabaseLoader { catch (IllegalArgumentException e) { Translator trans = Application.getTranslator(); String message = "

" + e.getMessage() + - ".

" + trans.get("MotorDbLoaderDlg.message1") + " '" + f.getU() + "' " + - trans.get("MotorDbLoaderDlg.message2") - + "
" + trans.get("MotorDbLoaderDlg.message3") + "

"; + ".

" + MessageFormat.format( trans.get("MotorDbLoaderDlg.message1"), f.getU()) + + "
" + trans.get("MotorDbLoaderDlg.message2") + "

"; JOptionPane.showMessageDialog(null, message, trans.get("MotorDbLoaderDlg.title"), JOptionPane.WARNING_MESSAGE); } From 19b07f6c7319009d8fc1c06d55c6ca25cd74952e Mon Sep 17 00:00:00 2001 From: JoePfeiffer Date: Thu, 21 Oct 2021 14:44:58 -0600 Subject: [PATCH 3/3] Set rocket file loading dialog modality to DOCUMENT_MODAL so it won't interfere with closing the bad thrustcurve message. --- swing/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java index c2ed358e7..c92bfb6c7 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/SwingWorkerDialog.java @@ -57,7 +57,7 @@ public class SwingWorkerDialog extends JDialog implements PropertyChangeListener private SwingWorkerDialog(Window parent, String title, String label, SwingWorker w) { - super(parent, title, ModalityType.APPLICATION_MODAL); + super(parent, title, ModalityType.DOCUMENT_MODAL); this.worker = w; w.addPropertyChangeListener(this);