Refactor component analysis data classes to core module
This commit is contained in:
parent
73981839e6
commit
1840bd4c0e
@ -1,4 +1,4 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
package info.openrocket.core.componentanalysis;
|
||||
|
||||
import info.openrocket.core.rocketcomponent.RocketComponent;
|
||||
import info.openrocket.core.simulation.DataBranch;
|
@ -1,4 +1,4 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
package info.openrocket.core.componentanalysis;
|
||||
|
||||
import info.openrocket.core.l10n.Translator;
|
||||
import info.openrocket.core.rocketcomponent.FinSet;
|
@ -1,4 +1,4 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
package info.openrocket.core.componentanalysis;
|
||||
|
||||
import info.openrocket.core.l10n.Translator;
|
||||
import info.openrocket.core.startup.Application;
|
@ -1,4 +1,4 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
package info.openrocket.core.componentanalysis;
|
||||
|
||||
import info.openrocket.core.l10n.Translator;
|
||||
import info.openrocket.core.startup.Application;
|
@ -1,4 +1,4 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
package info.openrocket.core.componentanalysis;
|
||||
|
||||
import info.openrocket.core.aerodynamics.AerodynamicCalculator;
|
||||
import info.openrocket.core.aerodynamics.AerodynamicForces;
|
@ -1,16 +1,18 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
package info.openrocket.core.componentanalysis;
|
||||
|
||||
import info.openrocket.core.rocketcomponent.FlightConfiguration;
|
||||
import info.openrocket.core.rocketcomponent.Rocket;
|
||||
import info.openrocket.core.startup.Application;
|
||||
import info.openrocket.core.util.Mutable;
|
||||
import info.openrocket.swing.gui.scalefigure.RocketPanel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CAParameters implements Cloneable {
|
||||
private final Mutable mutable = new Mutable();
|
||||
|
||||
private final Rocket rocket;
|
||||
private final RocketPanel rocketPanel;
|
||||
private final List<CAParametersListener> listeners = new ArrayList<>();
|
||||
|
||||
private double theta;
|
||||
private final double initialTheta;
|
||||
@ -18,17 +20,24 @@ public class CAParameters implements Cloneable {
|
||||
private double mach;
|
||||
private double rollRate;
|
||||
|
||||
public CAParameters(Rocket rocket, RocketPanel rocketPanel) {
|
||||
public CAParameters(Rocket rocket, double initialTheta) {
|
||||
this.rocket = rocket;
|
||||
this.rocketPanel = rocketPanel;
|
||||
|
||||
setTheta(rocketPanel.getFigure().getRotation());
|
||||
setTheta(initialTheta);
|
||||
this.initialTheta = this.theta;
|
||||
setAOA(0);
|
||||
setMach(Application.getPreferences().getDefaultMach());
|
||||
setRollRate(0);
|
||||
}
|
||||
|
||||
public void addListener(CAParametersListener listener) {
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
public void removeListener(CAParametersListener listener) {
|
||||
listeners.remove(listener);
|
||||
}
|
||||
|
||||
public double getTheta() {
|
||||
return theta;
|
||||
}
|
||||
@ -36,7 +45,9 @@ public class CAParameters implements Cloneable {
|
||||
public void setTheta(double theta) {
|
||||
mutable.check();
|
||||
this.theta = theta;
|
||||
this.rocketPanel.setCPTheta(theta);
|
||||
for (CAParametersListener listener : listeners) {
|
||||
listener.onThetaChanged(theta);
|
||||
}
|
||||
}
|
||||
|
||||
public double getInitialTheta() {
|
||||
@ -50,7 +61,9 @@ public class CAParameters implements Cloneable {
|
||||
public void setAOA(double aoa) {
|
||||
mutable.check();
|
||||
this.aoa = aoa;
|
||||
this.rocketPanel.setCPAOA(aoa);
|
||||
for (CAParametersListener listener : listeners) {
|
||||
listener.onAOAChanged(aoa);
|
||||
}
|
||||
}
|
||||
|
||||
public double getMach() {
|
||||
@ -60,7 +73,9 @@ public class CAParameters implements Cloneable {
|
||||
public void setMach(double mach) {
|
||||
mutable.check();
|
||||
this.mach = mach;
|
||||
this.rocketPanel.setCPMach(mach);
|
||||
for (CAParametersListener listener : listeners) {
|
||||
listener.onMachChanged(mach);
|
||||
}
|
||||
}
|
||||
|
||||
public double getRollRate() {
|
||||
@ -70,7 +85,9 @@ public class CAParameters implements Cloneable {
|
||||
public void setRollRate(double rollRate) {
|
||||
mutable.check();
|
||||
this.rollRate = rollRate;
|
||||
this.rocketPanel.setCPRoll(rollRate);
|
||||
for (CAParametersListener listener : listeners) {
|
||||
listener.onRollRateChanged(rollRate);
|
||||
}
|
||||
}
|
||||
|
||||
public FlightConfiguration getSelectedConfiguration() {
|
||||
@ -93,4 +110,11 @@ public class CAParameters implements Cloneable {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public interface CAParametersListener {
|
||||
void onThetaChanged(double theta);
|
||||
void onAOAChanged(double aoa);
|
||||
void onMachChanged(double mach);
|
||||
void onRollRateChanged(double rollRate);
|
||||
}
|
||||
}
|
@ -34,6 +34,7 @@ open module info.openrocket.core {
|
||||
exports info.openrocket.core.appearance.defaults;
|
||||
exports info.openrocket.core.arch;
|
||||
exports info.openrocket.core.communication;
|
||||
exports info.openrocket.core.componentanalysis;
|
||||
exports info.openrocket.core.database;
|
||||
exports info.openrocket.core.database.motor;
|
||||
exports info.openrocket.core.document;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.core.l10n.Translator;
|
||||
import info.openrocket.core.rocketcomponent.RocketComponent;
|
||||
import info.openrocket.core.startup.Application;
|
||||
|
@ -1,5 +1,7 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
|
||||
import info.openrocket.core.componentanalysis.CADataBranch;
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.core.unit.Unit;
|
||||
import info.openrocket.swing.gui.plot.Plot;
|
||||
import org.jfree.data.xy.XYSeries;
|
||||
|
@ -1,5 +1,8 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
|
||||
import info.openrocket.core.componentanalysis.CADataBranch;
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.core.componentanalysis.CADomainDataType;
|
||||
import info.openrocket.core.l10n.Translator;
|
||||
import info.openrocket.core.rocketcomponent.RocketComponent;
|
||||
import info.openrocket.core.startup.Application;
|
||||
|
@ -1,5 +1,7 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
|
||||
import info.openrocket.core.componentanalysis.CADataBranch;
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.core.preferences.ApplicationPreferences;
|
||||
import info.openrocket.core.startup.Application;
|
||||
import info.openrocket.swing.gui.plot.PlotDialog;
|
||||
|
@ -1,5 +1,9 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
|
||||
import info.openrocket.core.componentanalysis.CADataBranch;
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.core.componentanalysis.CADataTypeGroup;
|
||||
import info.openrocket.core.componentanalysis.CADomainDataType;
|
||||
import info.openrocket.core.rocketcomponent.RocketComponent;
|
||||
import info.openrocket.core.unit.Unit;
|
||||
import info.openrocket.swing.gui.plot.PlotPanel;
|
||||
|
@ -1,5 +1,7 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.core.componentanalysis.CADataTypeGroup;
|
||||
import info.openrocket.core.rocketcomponent.RocketComponent;
|
||||
import info.openrocket.core.unit.Unit;
|
||||
import info.openrocket.swing.gui.plot.PlotTypeSelector;
|
||||
|
@ -3,6 +3,7 @@ package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
import info.openrocket.core.aerodynamics.AerodynamicCalculator;
|
||||
import info.openrocket.core.aerodynamics.AerodynamicForces;
|
||||
import info.openrocket.core.aerodynamics.FlightConditions;
|
||||
import info.openrocket.core.componentanalysis.CAParameters;
|
||||
import info.openrocket.core.l10n.Translator;
|
||||
import info.openrocket.core.logging.WarningSet;
|
||||
import info.openrocket.core.masscalc.CMAnalysisEntry;
|
||||
@ -103,7 +104,8 @@ public class ComponentAnalysisGeneralPanel extends JPanel implements StateChange
|
||||
this.conditions = new FlightConditions(rocket.getSelectedConfiguration());
|
||||
|
||||
// Create CAParameters
|
||||
this.parameters = new CAParameters(rocket, rocketPanel);
|
||||
this.parameters = new CAParameters(rocket, rocketPanel.getFigure().getRotation());
|
||||
this.parameters.addListener(rocketPanel);
|
||||
|
||||
this.aoa = new DoubleModel(parameters, "AOA", UnitGroup.UNITS_ANGLE, 0, Math.PI);
|
||||
this.mach = new DoubleModel(parameters, "Mach", UnitGroup.UNITS_COEFFICIENT, 0);
|
||||
|
@ -1,6 +1,11 @@
|
||||
package info.openrocket.swing.gui.dialogs.componentanalysis;
|
||||
|
||||
import info.openrocket.core.aerodynamics.AerodynamicCalculator;
|
||||
import info.openrocket.core.componentanalysis.CADataBranch;
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.core.componentanalysis.CADomainDataType;
|
||||
import info.openrocket.core.componentanalysis.CAParameterSweep;
|
||||
import info.openrocket.core.componentanalysis.CAParameters;
|
||||
import info.openrocket.core.l10n.Translator;
|
||||
import info.openrocket.core.rocketcomponent.Rocket;
|
||||
import info.openrocket.core.rocketcomponent.RocketComponent;
|
||||
|
@ -76,6 +76,7 @@ import info.openrocket.core.util.ModID;
|
||||
import info.openrocket.core.util.StateChangeListener;
|
||||
|
||||
import info.openrocket.swing.gui.components.StyledLabel;
|
||||
import info.openrocket.core.componentanalysis.CAParameters;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import info.openrocket.swing.gui.adaptors.DoubleModel;
|
||||
import info.openrocket.swing.gui.components.BasicSlider;
|
||||
@ -104,7 +105,7 @@ import org.slf4j.LoggerFactory;
|
||||
* @author Bill Kuker <bkuker@billkuker.com>
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class RocketPanel extends JPanel implements TreeSelectionListener, ChangeSource {
|
||||
public class RocketPanel extends JPanel implements TreeSelectionListener, ChangeSource, CAParameters.CAParametersListener {
|
||||
|
||||
private static final Translator trans = Application.getTranslator();
|
||||
private static final Logger log = LoggerFactory.getLogger(RocketPanel.class);
|
||||
@ -1171,6 +1172,26 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
||||
figure3d.setSelection(components);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onThetaChanged(double theta) {
|
||||
setCPTheta(theta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAOAChanged(double aoa) {
|
||||
setCPAOA(aoa);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMachChanged(double mach) {
|
||||
setCPMach(mach);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRollRateChanged(double rollRate) {
|
||||
setCPRoll(rollRate);
|
||||
}
|
||||
|
||||
private static class ViewTypeComboBoxModel extends DefaultComboBoxModel<VIEW_TYPE> {
|
||||
public ViewTypeComboBoxModel(VIEW_TYPE[] items, VIEW_TYPE initialItem) {
|
||||
super(items);
|
||||
|
@ -24,7 +24,7 @@ import java.util.prefs.Preferences;
|
||||
import info.openrocket.core.database.Databases;
|
||||
import info.openrocket.core.preferences.ApplicationPreferences;
|
||||
import info.openrocket.core.rocketcomponent.NoseCone;
|
||||
import info.openrocket.swing.gui.dialogs.componentanalysis.CADataType;
|
||||
import info.openrocket.core.componentanalysis.CADataType;
|
||||
import info.openrocket.swing.gui.theme.UITheme;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
Loading…
x
Reference in New Issue
Block a user