[fixes #987] Use warning dialog for thrust curve import issues

This commit is contained in:
Sibo Van Gool 2021-09-12 21:13:31 +02:00
parent 46b974cae7
commit e38907122b
3 changed files with 24 additions and 4 deletions

View File

@ -792,6 +792,12 @@ FinSetConfig.lbl.relativeto = relative to
!FinMarkingGuide !FinMarkingGuide
FinMarkingGuide.lbl.Front = Front 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 ! MotorDatabaseLoadingDialog
MotorDbLoadDlg.title = Loading motors MotorDbLoadDlg.title = Loading motors
MotorDbLoadDlg.Loadingmotors = Loading motors... MotorDbLoadDlg.Loadingmotors = Loading motors...

View File

@ -8,6 +8,7 @@ import java.io.InputStream;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.util.List; import java.util.List;
import net.sf.openrocket.l10n.Translator;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; 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.BugException;
import net.sf.openrocket.util.Pair; import net.sf.openrocket.util.Pair;
import javax.swing.JOptionPane;
/** /**
* An asynchronous database loader that loads the internal thrust curves * An asynchronous database loader that loads the internal thrust curves
* and external user-supplied thrust curves to a ThrustCurveMotorSetDatabase. * and external user-supplied thrust curves to a ThrustCurveMotorSetDatabase.
@ -32,7 +35,7 @@ import net.sf.openrocket.util.Pair;
public class MotorDatabaseLoader extends AsynchronousDatabaseLoader { public class MotorDatabaseLoader extends AsynchronousDatabaseLoader {
private final static Logger log = LoggerFactory.getLogger(MotorDatabaseLoader.class); private final static Logger log = LoggerFactory.getLogger(MotorDatabaseLoader.class);
private static final String THRUSTCURVE_DIRECTORY = "datafiles/thrustcurves/"; private static final String THRUSTCURVE_DIRECTORY = "datafiles/thrustcurves/";
private static final long STARTUP_DELAY = 0; private static final long STARTUP_DELAY = 0;
@ -135,7 +138,18 @@ public class MotorDatabaseLoader extends AsynchronousDatabaseLoader {
private void loadFile(GeneralMotorLoader loader, Pair<String, InputStream> f) { private void loadFile(GeneralMotorLoader loader, Pair<String, InputStream> f) {
try { try {
List<ThrustCurveMotor.Builder> motors = loader.load(f.getV(), f.getU()); List<ThrustCurveMotor.Builder> motors = loader.load(f.getV(), f.getU());
addMotorsFromBuilders(motors); try {
addMotorsFromBuilders(motors);
}
catch (IllegalArgumentException e) {
Translator trans = Application.getTranslator();
String message = "<html><body><p style='width: 400px;'><i>" + e.getMessage() +
"</i>.<br><br>" + trans.get("MotorDbLoaderDlg.message1") + " '<b>" + f.getU() + "</b>' " +
trans.get("MotorDbLoaderDlg.message2")
+ "<br>" + trans.get("MotorDbLoaderDlg.message3") + "</p></body></html>";
JOptionPane.showMessageDialog(null,
message, trans.get("MotorDbLoaderDlg.title"), JOptionPane.WARNING_MESSAGE);
}
f.getV().close(); f.getV().close();
} catch (IOException e) { } catch (IOException e) {
log.warn("IOException while loading file " + f.getU() + ": " + e, e); log.warn("IOException while loading file " + f.getU() + ": " + e, e);

View File

@ -34,7 +34,7 @@ import com.google.inject.Provider;
public class BlockingMotorDatabaseProvider implements Provider<ThrustCurveMotorSetDatabase> { public class BlockingMotorDatabaseProvider implements Provider<ThrustCurveMotorSetDatabase> {
private static final Logger log = LoggerFactory.getLogger(BlockingMotorDatabaseProvider.class); private static final Logger log = LoggerFactory.getLogger(BlockingMotorDatabaseProvider.class);
@Inject @Inject
private Translator trans; private Translator trans;
@ -99,7 +99,7 @@ public class BlockingMotorDatabaseProvider implements Provider<ThrustCurveMotorS
private class LoadingDialog extends JDialog { private class LoadingDialog extends JDialog {
private LoadingDialog() { private LoadingDialog() {
super(null, trans.get("MotorDbLoadDlg.title"), ModalityType.APPLICATION_MODAL); super(null, trans.get("MotorDbLoadDlg.title"), ModalityType.DOCUMENT_MODAL);
JPanel panel = new JPanel(new MigLayout("fill")); JPanel panel = new JPanel(new MigLayout("fill"));
panel.add(new JLabel(trans.get("MotorDbLoadDlg.Loadingmotors")), "wrap para"); panel.add(new JLabel(trans.get("MotorDbLoadDlg.Loadingmotors")), "wrap para");