Merge branch 'openrocket:unstable' into inch-surface-roughness
This commit is contained in:
commit
2e599f18e0
@ -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)
|
||||||
|
@ -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;
|
||||||
|
Binary file not shown.
@ -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");
|
||||||
|
@ -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
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user