[#2090] Add plugged option to charge delay if it wasn't present yet

This commit is contained in:
SiboVG 2023-03-01 03:36:22 +01:00
parent 022a986130
commit 7ab943e824

View File

@ -179,8 +179,11 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
delayBox.addActionListener(new ActionListener() { delayBox.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
String sel = (String) delayBox.getSelectedItem(); String sel = (String) delayBox.getSelectedItem();
if (sel == null) {
log.debug("Selected charge delay is null");
return;
}
//// None //// None
if (sel.equalsIgnoreCase(trans.get("TCMotorSelPan.equalsIgnoreCase.None"))) { if (sel.equalsIgnoreCase(trans.get("TCMotorSelPan.equalsIgnoreCase.None"))) {
selectedDelay = Motor.PLUGGED_DELAY; selectedDelay = Motor.PLUGGED_DELAY;
@ -663,47 +666,46 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
*/ */
private void setDelays(boolean reset) { private void setDelays(boolean reset) {
if (selectedMotor == null) { if (selectedMotor == null) {
//// None //// None
delayBox.setModel(new DefaultComboBoxModel<String>(new String[] { trans.get("TCMotorSelPan.delayBox.None") })); delayBox.setModel(new DefaultComboBoxModel<String>(new String[] { trans.get("TCMotorSelPan.delayBox.None") }));
delayBox.setSelectedIndex(0); delayBox.setSelectedIndex(0);
} else { } else {
List<Double> delays = selectedMotorSet.getDelays(); List<Double> delays = selectedMotorSet.getDelays();
String[] delayStrings = new String[delays.size()]; boolean containsPlugged = delays.contains(Motor.PLUGGED_DELAY);
int size = delays.size() + (containsPlugged ? 0 : 1);
String[] delayStrings = new String[size];
double currentDelay = selectedDelay; // Store current setting locally double currentDelay = selectedDelay; // Store current setting locally
for (int i = 0; i < delays.size(); i++) { for (int i = 0; i < delays.size(); i++) {
//// None //// None
delayStrings[i] = ThrustCurveMotor.getDelayString(delays.get(i), trans.get("TCMotorSelPan.delayBox.None")); delayStrings[i] = ThrustCurveMotor.getDelayString(delays.get(i), trans.get("TCMotorSelPan.delayBox.None"));
} }
// We always want the plugged option in the combobox, even if the motor doesn't have it
if (!containsPlugged) {
delayStrings[delayStrings.length - 1] = trans.get("TCMotorSelPan.delayBox.None");
}
delayBox.setModel(new DefaultComboBoxModel<String>(delayStrings)); delayBox.setModel(new DefaultComboBoxModel<String>(delayStrings));
if (reset) { if (reset) {
// Find and set the closest value // Find and set the closest value
double closest = Double.NaN; double closest = Double.NaN;
for (int i = 0; i < delays.size(); i++) { for (Double delay : delays) {
// if-condition to always become true for NaN // if-condition to always become true for NaN
if (!(Math.abs(delays.get(i) - currentDelay) > Math.abs(closest - currentDelay))) { if (!(Math.abs(delay - currentDelay) > Math.abs(closest - currentDelay))) {
closest = delays.get(i); closest = delay;
} }
} }
if (!Double.isNaN(closest)) { if (!Double.isNaN(closest)) {
selectedDelay = closest; selectedDelay = closest;
//// None
delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(closest, trans.get("TCMotorSelPan.delayBox.None"))); delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(closest, trans.get("TCMotorSelPan.delayBox.None")));
} else { } else {
delayBox.setSelectedItem("None"); //// None
delayBox.setSelectedItem(trans.get("TCMotorSelPan.delayBox.None"));
} }
} else { } else {
selectedDelay = currentDelay; selectedDelay = currentDelay;
//// None
delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, trans.get("TCMotorSelPan.delayBox.None"))); delayBox.setSelectedItem(ThrustCurveMotor.getDelayString(currentDelay, trans.get("TCMotorSelPan.delayBox.None")));
} }
} }