Merge branch 'openrocket:unstable' into inch-surface-roughness

This commit is contained in:
Joe Pfeiffer 2023-10-26 15:31:06 -06:00 committed by GitHub
commit 2e599f18e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 50 additions and 13 deletions

View File

@ -75,7 +75,7 @@ This is the first beta release of version 23.09.
* Show calculated values in override tab (fixes #1629) * Show calculated values in override tab (fixes #1629)
* Decrease minimum FoV to 10 degrees in Photo Studio * Decrease minimum FoV to 10 degrees in Photo Studio
* Increase resolution of launch temperature and pressure to 2 decimal places (fixes #2003) * Increase resolution of launch temperature and pressure to 2 decimal places (fixes #2003)
* Display Cd oerride with 3 decimal places * Display Cd override with 3 decimal places
* Add wiki button to help menu (fixes #2046) * Add wiki button to help menu (fixes #2046)
* Eliminate option to save "some" sim data (fixes #2024) * Eliminate option to save "some" sim data (fixes #2024)
* Add OK/Cancel buttons when editing simulations (fixes #2158) * Add OK/Cancel buttons when editing simulations (fixes #2158)

View File

@ -402,7 +402,10 @@ public class Transition extends SymmetricComponent implements InsideColorCompone
((Transition) listener).setForeShoulderRadius(foreShoulderRadius, doClamping); ((Transition) listener).setForeShoulderRadius(foreShoulderRadius, doClamping);
} }
} }
foreShoulderRadius = Math.min(foreShoulderRadius, getForeRadius());
if (doClamping) {
foreShoulderRadius = Math.min(foreShoulderRadius, getForeRadius());
}
if (MathUtil.equals(this.foreShoulderRadius, foreShoulderRadius)) if (MathUtil.equals(this.foreShoulderRadius, foreShoulderRadius))
return; return;
@ -486,7 +489,9 @@ public class Transition extends SymmetricComponent implements InsideColorCompone
} }
} }
aftShoulderRadius = Math.min(aftShoulderRadius, getAftRadius()); if (doClamping) {
aftShoulderRadius = Math.min(aftShoulderRadius, getAftRadius());
}
if (MathUtil.equals(this.aftShoulderRadius, aftShoulderRadius)) if (MathUtil.equals(this.aftShoulderRadius, aftShoulderRadius))
return; return;

View File

@ -303,14 +303,21 @@ public class RocketComponentConfig extends JPanel {
} }
// Yes/No dialog: Are you sure you want to discard your changes? // Yes/No dialog: Are you sure you want to discard your changes?
JPanel msg = createCancelOperationContent(); SwingUtilities.invokeLater(() -> {
int resultYesNo = JOptionPane.showConfirmDialog(RocketComponentConfig.this, msg, JPanel msg = createCancelOperationContent();
trans.get("RocketCompCfg.CancelOperation.title"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); int resultYesNo = JOptionPane.showConfirmDialog(RocketComponentConfig.this, msg,
if (resultYesNo == JOptionPane.YES_OPTION) { trans.get("RocketCompCfg.CancelOperation.title"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
ComponentConfigDialog.clearConfigListeners = false; // Undo action => config listeners of new component will be cleared
disposeDialog(); if (resultYesNo == JOptionPane.YES_OPTION) {
document.undo(); ComponentConfigDialog.clearConfigListeners = false;
}
// Need to execute after delay, otherwise the dialog will not be disposed
GUIUtil.executeAfterDelay(100, () -> {
disposeDialog();
document.undo();
});
}
});
} }
}); });
buttonPanel.add(cancelButton, "split 2, right, gapleft 30lp"); buttonPanel.add(cancelButton, "split 2, right, gapleft 30lp");

View File

@ -364,7 +364,11 @@ public class GeneralPreferencesPanel extends PreferencesPanel {
trans.get("generalprefs.ImportWarning.msg"), trans.get("generalprefs.ImportWarning.msg"),
trans.get("generalprefs.ImportWarning.title"), trans.get("generalprefs.ImportWarning.title"),
JOptionPane.WARNING_MESSAGE); JOptionPane.WARNING_MESSAGE);
PreferencesDialog.showPreferences(parent.getParentFrame()); // Refresh the preferences dialog
// Need to execute after delay, otherwise the dialog will not be disposed
GUIUtil.executeAfterDelay(100, () -> {
PreferencesDialog.showPreferences(parent.getParentFrame()); // Refresh the preferences dialog
});
} }
}); });
} }

View File

@ -86,7 +86,10 @@ public class ComponentPresetTable extends JTable {
ComponentPreset preset = ComponentPresetTable.this.presets.get(rowIndex); ComponentPreset preset = ComponentPresetTable.this.presets.get(rowIndex);
Application.getComponentPresetDao().setFavorite(preset, presetType, (Boolean) aValue); Application.getComponentPresetDao().setFavorite(preset, presetType, (Boolean) aValue);
ComponentPresetTable.this.updateFavorites(); ComponentPresetTable.this.updateFavorites();
ComponentPresetTable.this.setRowSelectionInterval(rowIndex, rowIndex); int viewIndex = ComponentPresetTable.this.convertRowIndexToView(rowIndex);
if (viewIndex != -1) {
ComponentPresetTable.this.setRowSelectionInterval(viewIndex, viewIndex);
}
} }
@Override @Override

View File

@ -51,6 +51,7 @@ import javax.swing.RootPaneContainer;
import javax.swing.SpinnerModel; import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel; import javax.swing.SpinnerNumberModel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.UIManager; import javax.swing.UIManager;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
@ -762,4 +763,21 @@ public class GUIUtil {
} }
/**
* Executes the given code after a specified delay.
*
* @param delayMillis the delay in milliseconds.
* @param runnable the code to be executed after the delay.
*/
public static void executeAfterDelay(int delayMillis, Runnable runnable) {
Timer timer = new Timer(delayMillis, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
runnable.run();
}
});
timer.setRepeats(false);
timer.start();
}
} }