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