diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 438d2ae72..c4fd95d30 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -795,6 +795,11 @@ FinSetConfig.lbl.relativeto = relative to !FinMarkingGuide FinMarkingGuide.lbl.Front = Front +! MotorDatabaseLoaderDialog +MotorDbLoaderDlg.title = Error upon thrust curve import +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 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..18b7e16ed 100644 --- a/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java +++ b/swing/src/net/sf/openrocket/database/MotorDatabaseLoader.java @@ -6,8 +6,10 @@ 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; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,6 +24,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 +36,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 +139,17 @@ 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() + + ".

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

"; + 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/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); 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