Merge pull request #1752 from SiboVG/issue-1746
[#1746] Fix "Seek value of" unit selector in rocket optimizer
This commit is contained in:
commit
ea71c20fbb
@ -580,7 +580,7 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat
|
||||
|
||||
private final ArrayList<EventListener> listeners = new ArrayList<EventListener>();
|
||||
|
||||
private final UnitGroup units;
|
||||
private UnitGroup units;
|
||||
private Unit currentUnit;
|
||||
|
||||
private final double minValue;
|
||||
@ -877,6 +877,13 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat
|
||||
currentUnit = u;
|
||||
fireStateChanged();
|
||||
}
|
||||
|
||||
public void setUnitGroup(UnitGroup unitGroup) {
|
||||
this.units = unitGroup;
|
||||
this.currentUnit = units.getDefaultUnit();
|
||||
this.lastValue = this.currentUnit.toUnit(this.lastValue);
|
||||
fireStateChanged();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -380,6 +380,12 @@ public class GeneralOptimizationDialog extends JDialog {
|
||||
optimizationParameterCombo.setToolTipText(tip);
|
||||
populateParameters();
|
||||
optimizationParameterCombo.addActionListener(clearHistoryActionListener);
|
||||
optimizationParameterCombo.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
updateSeekValueUnits();
|
||||
}
|
||||
});
|
||||
disableComponents.add(optimizationParameterCombo);
|
||||
sub.add(optimizationParameterCombo, "growx, wrap unrel");
|
||||
|
||||
@ -404,7 +410,7 @@ public class GeneralOptimizationDialog extends JDialog {
|
||||
optimizationGoalSpinner = new JSpinner(optimizationSeekValue.getSpinnerModel());
|
||||
tip = trans.get("lbl.optimizeGoalValue.ttip");
|
||||
optimizationGoalSpinner.setToolTipText(tip);
|
||||
optimizationGoalSpinner.setEditor(new SpinnerEditor(optimizationGoalSpinner));
|
||||
optimizationGoalSpinner.setEditor(new SpinnerEditor(optimizationGoalSpinner, 4));
|
||||
disableComponents.add(optimizationGoalSpinner);
|
||||
sub.add(optimizationGoalSpinner, "width 30lp");
|
||||
|
||||
@ -554,6 +560,7 @@ public class GeneralOptimizationDialog extends JDialog {
|
||||
Collections.unmodifiableMap(evaluationHistory),
|
||||
Collections.unmodifiableList(selectedModifiers),
|
||||
getSelectedParameter(),
|
||||
optimizationGoalUnitSelector.getSelectedUnit(),
|
||||
UnitGroup.stabilityUnits(getSelectedSimulation().getRocket()),
|
||||
GeneralOptimizationDialog.this);
|
||||
dialog.setVisible(true);
|
||||
@ -606,6 +613,7 @@ public class GeneralOptimizationDialog extends JDialog {
|
||||
this.add(new JScrollPane(panel));
|
||||
clearHistory();
|
||||
updateComponents();
|
||||
updateSeekValueUnits();
|
||||
GUIUtil.setDisposableDialogOptions(this, null);
|
||||
|
||||
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
|
||||
@ -834,13 +842,22 @@ public class GeneralOptimizationDialog extends JDialog {
|
||||
evaluationHistory.clear();
|
||||
optimizationPath.clear();
|
||||
bestValue = Double.NaN;
|
||||
bestValueUnit = getSelectedParameter().getUnitGroup().getDefaultUnit();
|
||||
bestValueUnit = optimizationGoalUnitSelector.getSelectedUnit();
|
||||
stepCount = 0;
|
||||
evaluationCount = 0;
|
||||
stepSize = 0.5;
|
||||
updateCounters();
|
||||
updateComponents();
|
||||
}
|
||||
|
||||
private void updateSeekValueUnits() {
|
||||
if (optimizationSeekValue != null && optimizationGoalUnitSelector != null) {
|
||||
optimizationSeekValue.setUnitGroup(getSelectedParameter().getUnitGroup());
|
||||
optimizationSeekValue.setValue(0);
|
||||
optimizationGoalUnitSelector.setModel(optimizationSeekValue);
|
||||
optimizationGoalUnitSelector.revalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void applyDesign() {
|
||||
// TODO: MEDIUM: Apply also potential changes to simulations
|
||||
@ -1168,7 +1185,7 @@ public class GeneralOptimizationDialog extends JDialog {
|
||||
writer.write(fieldSeparator);
|
||||
}
|
||||
writer.write(getSelectedParameter().getName() + " / " +
|
||||
getSelectedParameter().getUnitGroup().getDefaultUnit().getUnit());
|
||||
optimizationGoalUnitSelector.getSelectedUnit().getUnit());
|
||||
|
||||
writer.write("\n");
|
||||
}
|
||||
@ -1187,7 +1204,7 @@ public class GeneralOptimizationDialog extends JDialog {
|
||||
}
|
||||
|
||||
if (data.getParameterValue() != null) {
|
||||
writer.write(TextUtil.doubleToString(data.getParameterValue().getUnitValue()));
|
||||
writer.write(TextUtil.doubleToString(optimizationGoalUnitSelector.getSelectedUnit().toUnit(data.getParameterValue().getValue())));
|
||||
} else {
|
||||
writer.write("N/A");
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ public class OptimizationPlotDialog extends JDialog {
|
||||
|
||||
|
||||
public OptimizationPlotDialog(List<Point> path, Map<Point, FunctionEvaluationData> evaluations,
|
||||
List<SimulationModifier> modifiers, OptimizableParameter parameter, UnitGroup stabilityUnit, Window parent) {
|
||||
List<SimulationModifier> modifiers, OptimizableParameter parameter, Unit parameterUnit, UnitGroup stabilityUnit, Window parent) {
|
||||
super(parent, trans.get("title"), ModalityType.APPLICATION_MODAL);
|
||||
|
||||
|
||||
@ -88,9 +88,9 @@ public class OptimizationPlotDialog extends JDialog {
|
||||
|
||||
ChartPanel chart;
|
||||
if (modifiers.size() == 1) {
|
||||
chart = create1DPlot(path, evaluations, modifiers, parameter, stabilityUnit);
|
||||
chart = create1DPlot(path, evaluations, modifiers, parameter, parameterUnit, stabilityUnit);
|
||||
} else if (modifiers.size() == 2) {
|
||||
chart = create2DPlot(path, evaluations, modifiers, parameter, stabilityUnit);
|
||||
chart = create2DPlot(path, evaluations, modifiers, parameter, parameterUnit, stabilityUnit);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Invalid dimensionality, dim=" + modifiers.size());
|
||||
}
|
||||
@ -134,11 +134,11 @@ public class OptimizationPlotDialog extends JDialog {
|
||||
* Create a 1D plot of the optimization path.
|
||||
*/
|
||||
private ChartPanel create1DPlot(List<Point> path, Map<Point, FunctionEvaluationData> evaluations,
|
||||
List<SimulationModifier> modifiers, OptimizableParameter parameter, UnitGroup stabilityUnit) {
|
||||
List<SimulationModifier> modifiers, OptimizableParameter parameter, Unit parameterUnit, UnitGroup stabilityUnit) {
|
||||
|
||||
SimulationModifier modX = modifiers.get(0);
|
||||
Unit xUnit = modX.getUnitGroup().getDefaultUnit();
|
||||
Unit yUnit = parameter.getUnitGroup().getDefaultUnit();
|
||||
Unit yUnit = parameterUnit;
|
||||
|
||||
// Create the optimization path (with autosort)
|
||||
XYSeries series = new XYSeries(trans.get("plot1d.series"), true, true);
|
||||
@ -232,10 +232,7 @@ public class OptimizationPlotDialog extends JDialog {
|
||||
* Create a 2D plot of the optimization path.
|
||||
*/
|
||||
private ChartPanel create2DPlot(List<Point> path, Map<Point, FunctionEvaluationData> evaluations,
|
||||
List<SimulationModifier> modifiers, OptimizableParameter parameter, UnitGroup stabilityUnit) {
|
||||
|
||||
Unit parameterUnit = parameter.getUnitGroup().getDefaultUnit();
|
||||
|
||||
List<SimulationModifier> modifiers, OptimizableParameter parameter, Unit parameterUnit, UnitGroup stabilityUnit) {
|
||||
SimulationModifier modX = modifiers.get(0);
|
||||
SimulationModifier modY = modifiers.get(1);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user