Merge pull request #255 from kruland2607/master

Work on Motor Instance.
This commit is contained in:
kruland2607 2015-12-14 22:48:20 -06:00
commit 8fb7d16a66
43 changed files with 150 additions and 228 deletions

View File

@ -13,7 +13,7 @@ import net.sf.openrocket.aerodynamics.BarrowmanCalculator;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.formatting.RocketDescriptor;
import net.sf.openrocket.masscalc.MassCalculator;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.Rocket;

View File

@ -12,7 +12,7 @@ import net.sf.openrocket.file.simplesax.ElementHandler;
import net.sf.openrocket.file.simplesax.PlainTextHandler;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.ParameterSet;
import net.sf.openrocket.rocketcomponent.FlightConfigurableParameterSet;
import net.sf.openrocket.rocketcomponent.Rocket;
class MotorConfigurationHandler extends AbstractElementHandler {
@ -64,7 +64,7 @@ class MotorConfigurationHandler extends AbstractElementHandler {
if ("true".equals(attributes.remove("default"))) {
// associate this configuration with both this FCID and the default.
ParameterSet<FlightConfiguration> fcs = rocket.getConfigSet();
FlightConfigurableParameterSet<FlightConfiguration> fcs = rocket.getConfigSet();
FlightConfiguration fc = fcs.get(fcid);
fcs.setDefault(fc);
}

View File

@ -11,7 +11,7 @@ import net.sf.openrocket.file.simplesax.AbstractElementHandler;
import net.sf.openrocket.file.simplesax.ElementHandler;
import net.sf.openrocket.file.simplesax.PlainTextHandler;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.MotorInstanceId;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.IgnitionEvent;
@ -73,7 +73,7 @@ class MotorMountHandler extends AbstractElementHandler {
}
Motor motor = motorHandler.getMotor(warnings);
MotorInstance motorInstance = new MotorInstance();
MotorConfiguration motorInstance = new MotorConfiguration();
motorInstance.setMotor(motor);
RocketComponent mountComponent = (RocketComponent)mount;
motorInstance.setMount(mount);
@ -95,7 +95,7 @@ class MotorMountHandler extends AbstractElementHandler {
return;
}
MotorInstance inst = mount.getMotorInstance(fcid);
MotorConfiguration inst = mount.getMotorInstance(fcid);
inst.setIgnitionDelay(ignitionConfigHandler.ignitionDelay);
inst.setIgnitionEvent(ignitionConfigHandler.ignitionEvent);
return;

View File

@ -7,7 +7,7 @@ import java.util.Locale;
import net.sf.openrocket.rocketcomponent.DeploymentConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.ParameterSet;
import net.sf.openrocket.rocketcomponent.FlightConfigurableParameterSet;
import net.sf.openrocket.rocketcomponent.RecoveryDevice;
import net.sf.openrocket.rocketcomponent.Rocket;
@ -37,7 +37,7 @@ public class RecoveryDeviceSaver extends MassObjectSaver {
//dev.getDeploymentConfigurations().printDebug();
// DEBUG
ParameterSet<FlightConfiguration> configList = rocket.getConfigSet();
FlightConfigurableParameterSet<FlightConfiguration> configList = rocket.getConfigSet();
for (FlightConfigurationID fcid : configList.getSortedConfigurationIDs()) {
//System.err.println("checking FlightConfiguration:"+fcid.getShortKey()+ " save?");

View File

@ -11,7 +11,7 @@ import net.sf.openrocket.appearance.Decal.EdgeMode;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.rocketcomponent.Clusterable;
@ -179,7 +179,7 @@ public class RocketComponentSaver {
List<String> elements = new ArrayList<String>();
MotorInstance defaultInstance = mount.getDefaultMotorInstance();
MotorConfiguration defaultInstance = mount.getDefaultMotorInstance();
elements.add("<motormount>");
@ -192,7 +192,7 @@ public class RocketComponentSaver {
for( FlightConfigurationID fcid : rkt.getSortedConfigurationIDs()){
MotorInstance motorInstance = mount.getMotorInstance(fcid);
MotorConfiguration motorInstance = mount.getMotorInstance(fcid);
// Nothing is stored if no motor loaded
if( motorInstance.isEmpty()){
continue;

View File

@ -6,7 +6,7 @@ import java.util.Locale;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.ParameterSet;
import net.sf.openrocket.rocketcomponent.FlightConfigurableParameterSet;
import net.sf.openrocket.rocketcomponent.ReferenceType;
import net.sf.openrocket.rocketcomponent.Rocket;
@ -43,7 +43,7 @@ public class RocketSaver extends RocketComponentSaver {
// Motor configurations
ParameterSet<FlightConfiguration> allConfigs = rocket.getConfigSet();
FlightConfigurableParameterSet<FlightConfiguration> allConfigs = rocket.getConfigSet();
for (FlightConfigurationID fcid : allConfigs.getSortedConfigurationIDs()) {
FlightConfiguration flightConfig = allConfigs.get(fcid);
if (fcid == null)

View File

@ -10,7 +10,7 @@ import com.google.inject.Inject;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.plugin.Plugin;
import net.sf.openrocket.rocketcomponent.AxialStage;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
@ -69,7 +69,7 @@ public class MotorDescriptionSubstitutor implements RocketSubstitutor {
} else if (c instanceof MotorMount) {
MotorMount mount = (MotorMount) c;
MotorInstance inst = mount.getMotorInstance(fcid);
MotorConfiguration inst = mount.getMotorInstance(fcid);
Motor motor = inst.getMotor();
if (mount.isMotorMount() && motor != null) {

View File

@ -7,7 +7,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.AxialStage;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.Instanceable;
@ -143,7 +143,7 @@ public class MassCalculator implements Monitorable {
// ^^^^ DEVEL ^^^^
// int motorCount = 0;
for (MotorInstance inst : config.getActiveMotors() ) {
for (MotorConfiguration inst : config.getActiveMotors() ) {
//ThrustCurveMotor motor = (ThrustCurveMotor) inst.getMotor();
Coordinate position = inst.getPosition();
@ -254,7 +254,7 @@ public class MassCalculator implements Monitorable {
//throw new BugException("getPropellantMass is not yet implemented.... ");
// add up the masses of all motors in the rocket
if ( MassCalcType.NO_MOTORS != calcType ){
for (MotorInstance curInstance : configuration.getActiveMotors()) {
for (MotorConfiguration curInstance : configuration.getActiveMotors()) {
mass = mass + curInstance.getPropellantMass();
mass = curInstance.getMotor().getLaunchCG().weight - curInstance.getMotor().getEmptyCG().weight;
}

View File

@ -17,7 +17,7 @@ import net.sf.openrocket.util.StateChangeListener;
* A single motor configuration. This includes the selected motor
* and the ejection charge delay.
*/
public class MotorInstance implements FlightConfigurableParameter<MotorInstance> {
public class MotorConfiguration implements FlightConfigurableParameter<MotorConfiguration> {
protected MotorMount mount = null;
protected Motor motor = null;
@ -34,12 +34,12 @@ public class MotorInstance implements FlightConfigurableParameter<MotorInstance>
protected int modID = 0;
private final List<StateChangeListener> listeners = new ArrayList<StateChangeListener>();
public MotorInstance( Motor motor ) {
public MotorConfiguration( Motor motor ) {
this();
this.motor = motor;
}
public MotorInstance() {
public MotorConfiguration() {
this.id = MotorInstanceId.EMPTY_ID;
ejectionDelay = 0.0;
ignitionEvent = IgnitionEvent.LAUNCH;
@ -55,7 +55,7 @@ public class MotorInstance implements FlightConfigurableParameter<MotorInstance>
state.setIgnitionDelay( this.ignitionDelay );
state.setEjectionDelay( this.ejectionDelay );
} else {
MotorInstance defInstance = mount.getDefaultMotorInstance();
MotorConfiguration defInstance = mount.getDefaultMotorInstance();
state.setIgnitionTime( defInstance.ignitionTime );
state.setIgnitionEvent( defInstance.ignitionEvent );
state.setIgnitionDelay( defInstance.ignitionDelay );
@ -198,8 +198,8 @@ public class MotorInstance implements FlightConfigurableParameter<MotorInstance>
public boolean equals( Object other ){
if( null == other ){
return false;
}else if( other instanceof MotorInstance ){
MotorInstance omi = (MotorInstance)other;
}else if( other instanceof MotorConfiguration ){
MotorConfiguration omi = (MotorConfiguration)other;
if( this.id.equals( omi.id)){
return true;
}
@ -217,8 +217,8 @@ public class MotorInstance implements FlightConfigurableParameter<MotorInstance>
* identical to this instance and can be used independently from this one.
*/
@Override
public MotorInstance clone( ) {
MotorInstance clone = new MotorInstance();
public MotorConfiguration clone( ) {
MotorConfiguration clone = new MotorConfiguration();
clone.motor = this.motor;
clone.mount = this.mount;
clone.ejectionDelay = this.ejectionDelay;

View File

@ -2,18 +2,18 @@ package net.sf.openrocket.motor;
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.ParameterSet;
import net.sf.openrocket.rocketcomponent.FlightConfigurableParameterSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
/**
* FlightConfigurationSet for motors.
* This is used for motors, where the default value is always no motor.
*/
public class MotorSet extends ParameterSet<MotorInstance> {
public class MotorConfigurationSet extends FlightConfigurableParameterSet<MotorConfiguration> {
public static final int DEFAULT_MOTOR_EVENT_TYPE = ComponentChangeEvent.MOTOR_CHANGE | ComponentChangeEvent.EVENT_CHANGE;
public MotorSet(RocketComponent component ) {
super(component, DEFAULT_MOTOR_EVENT_TYPE, new MotorInstance());
public MotorConfigurationSet(RocketComponent component ) {
super(component, DEFAULT_MOTOR_EVENT_TYPE, new MotorConfiguration());
}
/**
@ -23,12 +23,12 @@ public class MotorSet extends ParameterSet<MotorInstance> {
* @param component the rocket component on which events are fired when the parameter values are changed
* @param eventType the event type that will be fired on changes
*/
public MotorSet(ParameterSet<MotorInstance> flightConfiguration, RocketComponent component) {
public MotorConfigurationSet(FlightConfigurableParameterSet<MotorConfiguration> flightConfiguration, RocketComponent component) {
super(flightConfiguration, component, DEFAULT_MOTOR_EVENT_TYPE);
}
@Override
public void setDefault( MotorInstance value) {
public void setDefault( MotorConfiguration value) {
throw new UnsupportedOperationException("Cannot change default value of motor configuration");
}
@ -37,13 +37,13 @@ public class MotorSet extends ParameterSet<MotorInstance> {
StringBuilder buffer = new StringBuilder();
buffer.append("====== Dumping MotorConfigurationSet for mount '"+this.component.toDebugName()+" ======\n");
buffer.append(" >> motorSet ("+this.size()+ " motors)\n");
MotorInstance emptyInstance = this.getDefault();
MotorConfiguration emptyInstance = this.getDefault();
buffer.append(" >> (["+emptyInstance.toString()+"]= @ "+ emptyInstance.getIgnitionEvent().name +" +"+emptyInstance.getIgnitionDelay()+"sec )\n");
for( FlightConfigurationID loopFCID : this.map.keySet()){
String shortKey = loopFCID.toShortKey();
MotorInstance curInstance = this.map.get(loopFCID);
MotorConfiguration curInstance = this.map.get(loopFCID);
String designation;
if( null == curInstance.getMotor() ){
designation = "EMPTY_INSTANCE";

View File

@ -250,8 +250,8 @@ public class ThrustCurveMotor implements Motor, Comparable<ThrustCurveMotor>, Se
@Override
public ThrustCurveMotorInstance getNewInstance() {
return new ThrustCurveMotorInstance(this);
public ThrustCurveMotorState getNewInstance() {
return new ThrustCurveMotorState(this);
}

View File

@ -3,13 +3,12 @@ package net.sf.openrocket.motor;
import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
import net.sf.openrocket.rocketcomponent.IgnitionEvent;
import net.sf.openrocket.rocketcomponent.MotorMount;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.simulation.MotorState;
import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.Inertia;
import net.sf.openrocket.util.MathUtil;
public class ThrustCurveMotorInstance implements MotorState {
public class ThrustCurveMotorState implements MotorState {
// private static final Logger log = LoggerFactory.getLogger(ThrustCurveMotorInstance.class);
private int timeIndex = -1;
@ -47,7 +46,7 @@ public class ThrustCurveMotorInstance implements MotorState {
// unitLongitudinalInertia = Double.NaN;
// }
public ThrustCurveMotorInstance(final ThrustCurveMotor source) {
public ThrustCurveMotorState(final ThrustCurveMotor source) {
//log.debug( Creating motor instance of " + ThrustCurveMotor.this);
this.motor = source;
this.reset();

View File

@ -12,12 +12,12 @@ public class AxialStage extends ComponentAssembly implements FlightConfigurableC
private static final Translator trans = Application.getTranslator();
//private static final Logger log = LoggerFactory.getLogger(AxialStage.class);
protected ParameterSet<StageSeparationConfiguration> separations;
protected FlightConfigurableParameterSet<StageSeparationConfiguration> separations;
protected int stageNumber;
public AxialStage(){
this.separations = new ParameterSet<StageSeparationConfiguration>(
this.separations = new FlightConfigurableParameterSet<StageSeparationConfiguration>(
this, ComponentChangeEvent.EVENT_CHANGE, new StageSeparationConfiguration());
this.relativePosition = Position.AFTER;
this.stageNumber = 0;
@ -34,7 +34,7 @@ public class AxialStage extends ComponentAssembly implements FlightConfigurableC
return trans.get("Stage.Stage");
}
public ParameterSet<StageSeparationConfiguration> getSeparationConfigurations() {
public FlightConfigurableParameterSet<StageSeparationConfiguration> getSeparationConfigurations() {
return separations;
}
@ -80,7 +80,7 @@ public class AxialStage extends ComponentAssembly implements FlightConfigurableC
@Override
protected RocketComponent copyWithOriginalID() {
AxialStage copy = (AxialStage) super.copyWithOriginalID();
copy.separations = new ParameterSet<StageSeparationConfiguration>(separations,
copy.separations = new FlightConfigurableParameterSet<StageSeparationConfiguration>(separations,
copy, ComponentChangeEvent.EVENT_CHANGE);
return copy;
}

View File

@ -6,9 +6,9 @@ import java.util.Iterator;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.MotorInstanceId;
import net.sf.openrocket.motor.MotorSet;
import net.sf.openrocket.motor.MotorConfigurationSet;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.BugException;
@ -32,7 +32,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
private double overhang = 0;
private boolean isActingMount = false;
private MotorSet motors;
private MotorConfigurationSet motors;
public BodyTube() {
this(8 * DEFAULT_RADIUS, DEFAULT_RADIUS);
@ -44,7 +44,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
super();
this.outerRadius = Math.max(radius, 0);
this.length = Math.max(length, 0);
motors = new MotorSet(this);
motors = new MotorConfigurationSet(this);
}
public BodyTube(double length, double radius, boolean filled) {
@ -364,17 +364,17 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
//////////////// Motor mount /////////////////
@Override
public MotorInstance getDefaultMotorInstance(){
public MotorConfiguration getDefaultMotorInstance(){
return this.motors.getDefault();
}
@Override
public MotorInstance getMotorInstance( final FlightConfigurationID fcid){
public MotorConfiguration getMotorInstance( final FlightConfigurationID fcid){
return this.motors.get(fcid);
}
@Override
public void setMotorInstance(final FlightConfigurationID fcid, final MotorInstance newMotorInstance){
public void setMotorInstance(final FlightConfigurationID fcid, final MotorConfiguration newMotorInstance){
if((null == newMotorInstance)){
this.motors.set( fcid, null);
}else{
@ -395,7 +395,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
@Override
public Iterator<MotorInstance> getMotorIterator(){
public Iterator<MotorConfiguration> getMotorIterator(){
return this.motors.iterator();
}
@ -468,7 +468,7 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
protected RocketComponent copyWithOriginalID() {
BodyTube copy = (BodyTube) super.copyWithOriginalID();
copy.motors = new MotorSet( this.motors, copy );
copy.motors = new MotorConfigurationSet( this.motors, copy );
return copy;
}
}

View File

@ -7,9 +7,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.openrocket.util.ArrayList;
import net.sf.openrocket.util.StateChangeListener;
import net.sf.openrocket.util.Utils;
@ -20,7 +17,7 @@ import net.sf.openrocket.util.Utils;
*
* @param <E> the parameter type
*/
public class ParameterSet<E extends FlightConfigurableParameter<E>> implements FlightConfigurable<E> {
public class FlightConfigurableParameterSet<E extends FlightConfigurableParameter<E>> implements FlightConfigurable<E> {
//private static final Logger log = LoggerFactory.getLogger(ParameterSet.class);
protected final HashMap<FlightConfigurationID, E> map = new HashMap<FlightConfigurationID, E>();
@ -38,7 +35,7 @@ public class ParameterSet<E extends FlightConfigurableParameter<E>> implements F
* @param component the rocket component on which events are fired when the parameter values are changed
* @param eventType the event type that will be fired on changes
*/
public ParameterSet(RocketComponent component, int eventType, E _defaultValue) {
public FlightConfigurableParameterSet(RocketComponent component, int eventType, E _defaultValue) {
this.component = component;
this.eventType = eventType;
@ -54,7 +51,7 @@ public class ParameterSet<E extends FlightConfigurableParameter<E>> implements F
* @param component the rocket component on which events are fired when the parameter values are changed
* @param eventType the event type that will be fired on changes
*/
public ParameterSet(ParameterSet<E> configSet, RocketComponent component, int eventType) {
public FlightConfigurableParameterSet(FlightConfigurableParameterSet<E> configSet, RocketComponent component, int eventType) {
this.component = component;
this.eventType = eventType;

View File

@ -6,15 +6,13 @@ import java.util.EventListener;
import java.util.EventObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.MotorInstanceId;
import net.sf.openrocket.util.ArrayList;
import net.sf.openrocket.util.ChangeSource;
@ -70,7 +68,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
/* Cached data */
final protected HashMap<Integer, StageFlags> stages = new HashMap<Integer, StageFlags>();
protected final HashMap<MotorInstanceId, MotorInstance> motors = new HashMap<MotorInstanceId, MotorInstance>();
protected final HashMap<MotorInstanceId, MotorConfiguration> motors = new HashMap<MotorInstanceId, MotorConfiguration>();
private int boundsModID = -1;
private ArrayList<Coordinate> cachedBounds = new ArrayList<Coordinate>();
@ -364,7 +362,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
for ( RocketComponent comp : getActiveComponents() ){
if (( comp instanceof MotorMount )&&( ((MotorMount)comp).isMotorMount())){
MotorMount mount = (MotorMount)comp;
MotorInstance inst = mount.getMotorInstance( fcid);
MotorConfiguration inst = mount.getMotorInstance( fcid);
if( first ){
first = false;
@ -433,7 +431,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
* @param motor the motor instance.
* @throws IllegalArgumentException if a motor with the specified ID already exists.
*/
public void addMotor(MotorInstance motor) {
public void addMotor(MotorConfiguration motor) {
if( motor.isEmpty() ){
throw new IllegalArgumentException("MotorInstance is empty.");
}
@ -447,7 +445,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
modID++;
}
public Collection<MotorInstance> getAllMotors() {
public Collection<MotorConfiguration> getAllMotors() {
return motors.values();
}
@ -463,7 +461,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
return motors.keySet();
}
public MotorInstance getMotorInstance(MotorInstanceId id) {
public MotorConfiguration getMotorInstance(MotorInstanceId id) {
return motors.get(id);
}
@ -471,9 +469,9 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
return (0 < motors.size());
}
public Collection<MotorInstance> getActiveMotors() {
List<MotorInstance> activeList = new ArrayList<MotorInstance>();
for( MotorInstance inst : this.motors.values() ){
public Collection<MotorConfiguration> getActiveMotors() {
List<MotorConfiguration> activeList = new ArrayList<MotorConfiguration>();
for( MotorConfiguration inst : this.motors.values() ){
if( inst.isActive() ){
activeList.add( inst );
}
@ -488,7 +486,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
for ( RocketComponent compMount : getActiveComponents() ){
if (( compMount instanceof MotorMount )&&( ((MotorMount)compMount).isMotorMount())){
MotorMount mount = (MotorMount)compMount;
MotorInstance sourceInstance = mount.getMotorInstance( fcid);
MotorConfiguration sourceInstance = mount.getMotorInstance( fcid);
if( sourceInstance.isEmpty()){
continue;
}
@ -565,7 +563,7 @@ public class FlightConfiguration implements FlightConfigurableParameter<FlightCo
for( StageFlags flags : this.stages.values()){
clone.stages.put( flags.stage.getStageNumber(), flags.clone());
}
for( MotorInstance mi : this.motors.values()){
for( MotorConfiguration mi : this.motors.values()){
clone.motors.put( mi.getID(), mi.clone());
}
clone.cachedBounds = this.cachedBounds.clone();

View File

@ -24,7 +24,7 @@ public final class FlightConfigurationID implements Comparable<FlightConfigurati
public FlightConfigurationID(final String _str) {
UUID candidate;
if("".equals(_str)){
if(_str == null || "".equals(_str)){
candidate = UUID.randomUUID();
}else{
try{
@ -61,7 +61,7 @@ public final class FlightConfigurationID implements Comparable<FlightConfigurati
return ERROR_KEY_NAME;
}
}
public String getFullKeyText(){
return this.key.toString();
}
@ -86,7 +86,7 @@ public final class FlightConfigurationID implements Comparable<FlightConfigurati
public String toString() {
return this.key.toString();
}
@Override
public int compareTo(FlightConfigurationID other) {
return (this.key.compareTo( other.key));

View File

@ -6,7 +6,7 @@ package net.sf.openrocket.rocketcomponent;
*
* @param <E> the parameter type
*/
public class FlightConfigurationSet extends ParameterSet<FlightConfiguration> {
public class FlightConfigurationSet extends FlightConfigurableParameterSet<FlightConfiguration> {
/**
* Construct a FlightConfiguration that has no overrides.

View File

@ -9,9 +9,9 @@ import org.slf4j.LoggerFactory;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.MotorInstanceId;
import net.sf.openrocket.motor.MotorSet;
import net.sf.openrocket.motor.MotorConfigurationSet;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.BugException;
@ -35,7 +35,7 @@ public class InnerTube extends ThicknessRingComponent implements Clusterable, Ra
private double overhang = 0;
private boolean isActingMount;
private MotorSet motors;
private MotorConfigurationSet motors;
/**
* Main constructor.
@ -46,7 +46,7 @@ public class InnerTube extends ThicknessRingComponent implements Clusterable, Ra
this.setInnerRadius(0.018 / 2);
this.setLength(0.070);
motors = new MotorSet(this);
motors = new MotorConfigurationSet(this);
}
@ -272,17 +272,17 @@ public class InnerTube extends ThicknessRingComponent implements Clusterable, Ra
//////////////// Motor mount /////////////////
@Override
public MotorInstance getDefaultMotorInstance(){
public MotorConfiguration getDefaultMotorInstance(){
return this.motors.getDefault();
}
@Override
public MotorInstance getMotorInstance( final FlightConfigurationID fcid){
public MotorConfiguration getMotorInstance( final FlightConfigurationID fcid){
return this.motors.get(fcid);
}
@Override
public void setMotorInstance(final FlightConfigurationID fcid, final MotorInstance newMotorInstance){
public void setMotorInstance(final FlightConfigurationID fcid, final MotorConfiguration newMotorInstance){
if((null == newMotorInstance)){
this.motors.set( fcid, null);
}else{
@ -302,7 +302,7 @@ public class InnerTube extends ThicknessRingComponent implements Clusterable, Ra
}
@Override
public Iterator<MotorInstance> getMotorIterator(){
public Iterator<MotorConfiguration> getMotorIterator(){
return this.motors.iterator();
}
@ -374,7 +374,7 @@ public class InnerTube extends ThicknessRingComponent implements Clusterable, Ra
new IllegalArgumentException(" copyWithOriginalID should produce different motorSet instances! ");
}
copy.motors = new MotorSet( this.motors, copy );
copy.motors = new MotorConfigurationSet( this.motors, copy );
return copy;
}
@ -414,7 +414,7 @@ public class InnerTube extends ThicknessRingComponent implements Clusterable, Ra
Coordinate[] absCoords = this.getLocations();
FlightConfigurationID curId = this.getRocket().getDefaultConfiguration().getFlightConfigurationID();
final int intanceCount = this.getInstanceCount();
MotorInstance curInstance = this.motors.get(curId);
MotorConfiguration curInstance = this.motors.get(curId);
if( curInstance.isEmpty() ){
// print just the tube locations
buffer.append(prefix+" [X] This Instance doesn't have any motors... showing mount tubes only\n");

View File

@ -1,72 +0,0 @@
package net.sf.openrocket.rocketcomponent;
import java.util.EventObject;
import java.util.List;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.util.ArrayList;
import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.StateChangeListener;
public class MotorConfiguration implements FlightConfigurableParameter<MotorConfiguration> {
protected Coordinate position = Coordinate.ZERO;
protected double ejectionDelay = 0.0;
protected Motor motor = null;
private final List<StateChangeListener> listeners = new ArrayList<StateChangeListener>();
public Coordinate getPosition() {
return position;
}
public void setPosition(Coordinate position) {
this.position = position;
fireChangeEvent();
}
public double getEjectionDelay() {
return ejectionDelay;
}
public void setEjectionDelay(double ejectionDelay) {
this.ejectionDelay = ejectionDelay;
fireChangeEvent();
}
public Motor getMotor() {
return motor;
}
public void setMotor(Motor motor) {
this.motor = motor;
fireChangeEvent();
}
@Override
public MotorConfiguration clone() {
MotorConfiguration clone = new MotorConfiguration();
clone.position = this.position;
clone.ejectionDelay = this.ejectionDelay;
return clone;
}
@Override
public void addChangeListener(StateChangeListener listener) {
listeners.add(listener);
}
@Override
public void removeChangeListener(StateChangeListener listener) {
listeners.remove(listener);
}
private void fireChangeEvent() {
EventObject event = new EventObject(this);
Object[] list = listeners.toArray();
for (Object l : list) {
((StateChangeListener) l).stateChanged(event);
}
}
}

View File

@ -2,7 +2,7 @@ package net.sf.openrocket.rocketcomponent;
import java.util.Iterator;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.util.ChangeSource;
import net.sf.openrocket.util.Coordinate;
@ -38,14 +38,14 @@ public interface MotorMount extends ChangeSource, FlightConfigurableComponent {
*
* @return an iterator to all motors configured for this component
*/
public Iterator<MotorInstance> getMotorIterator();
public Iterator<MotorConfiguration> getMotorIterator();
/**
* Returns the Default Motor Instance for this mount.
*
* @return The default MotorInstance
*/
public MotorInstance getDefaultMotorInstance();
public MotorConfiguration getDefaultMotorInstance();
/**
* Default implementatino supplied by RocketComponent (returns 1);
@ -59,14 +59,14 @@ public interface MotorMount extends ChangeSource, FlightConfigurableComponent {
* @param fcid id for which to return the motor (null retrieves the default)
* @return requested motorInstance (which may also be the default motor instance)
*/
public MotorInstance getMotorInstance( final FlightConfigurationID fcid);
public MotorConfiguration getMotorInstance( final FlightConfigurationID fcid);
/**
*
* @param fcid index the supplied motor against this flight configuration
* @param newMotorInstance motor instance to store
*/
public void setMotorInstance(final FlightConfigurationID fcid, final MotorInstance newMotorInstance);
public void setMotorInstance(final FlightConfigurationID fcid, final MotorConfiguration newMotorInstance);
/**
* Get the number of motors available for all flight configurations

View File

@ -25,10 +25,10 @@ public abstract class RecoveryDevice extends MassObject implements FlightConfigu
private Material.Surface material;
private ParameterSet<DeploymentConfiguration> deploymentConfigurations;
private FlightConfigurableParameterSet<DeploymentConfiguration> deploymentConfigurations;
public RecoveryDevice() {
this.deploymentConfigurations = new ParameterSet<DeploymentConfiguration>(this, ComponentChangeEvent.EVENT_CHANGE, new DeploymentConfiguration());
this.deploymentConfigurations = new FlightConfigurableParameterSet<DeploymentConfiguration>(this, ComponentChangeEvent.EVENT_CHANGE, new DeploymentConfiguration());
setMaterial(Application.getPreferences().getDefaultComponentMaterial(RecoveryDevice.class, Material.Type.SURFACE));
}
@ -85,7 +85,7 @@ public abstract class RecoveryDevice extends MassObject implements FlightConfigu
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
public ParameterSet<DeploymentConfiguration> getDeploymentConfigurations() {
public FlightConfigurableParameterSet<DeploymentConfiguration> getDeploymentConfigurations() {
return deploymentConfigurations;
}
@ -113,7 +113,7 @@ public abstract class RecoveryDevice extends MassObject implements FlightConfigu
@Override
protected RocketComponent copyWithOriginalID() {
RecoveryDevice copy = (RecoveryDevice) super.copyWithOriginalID();
copy.deploymentConfigurations = new ParameterSet<DeploymentConfiguration>(deploymentConfigurations,
copy.deploymentConfigurations = new FlightConfigurableParameterSet<DeploymentConfiguration>(deploymentConfigurations,
copy, ComponentChangeEvent.EVENT_CHANGE);
return copy;
}

View File

@ -553,7 +553,7 @@ public class Rocket extends RocketComponent {
return this.configSet.size();
}
public ParameterSet<FlightConfiguration> getConfigSet(){
public FlightConfigurableParameterSet<FlightConfiguration> getConfigSet(){
checkState();
return this.configSet;
}

View File

@ -6,7 +6,7 @@ import net.sf.openrocket.masscalc.MassCalculator;
import net.sf.openrocket.masscalc.MassCalculator.MassCalcType;
import net.sf.openrocket.masscalc.MassData;
import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.simulation.exception.SimulationException;
import net.sf.openrocket.simulation.listeners.SimulationListenerHelper;

View File

@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory;
import net.sf.openrocket.aerodynamics.Warning;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.MotorInstanceId;
import net.sf.openrocket.rocketcomponent.AxialStage;
import net.sf.openrocket.rocketcomponent.DeploymentConfiguration;
@ -427,8 +427,8 @@ public class BasicEventSimulationEngine implements SimulationEngine {
// TODO: HIGH: Check stage activeness for other events as well?
// Check whether any motor in the active stages is active anymore
Collection<MotorInstance> activeMotors = currentStatus.getConfiguration().getActiveMotors();
for (MotorInstance curMotor : activeMotors) {
Collection<MotorConfiguration> activeMotors = currentStatus.getConfiguration().getActiveMotors();
for (MotorConfiguration curMotor : activeMotors) {
RocketComponent comp = ((RocketComponent) curMotor.getMount());
int stageNumber = comp.getStageNumber();
if (!currentStatus.getConfiguration().isStageActive(stageNumber))

View File

@ -51,7 +51,7 @@ public class SimulationOptions implements ChangeSource, Cloneable {
protected final Preferences preferences = Application.getPreferences();
private final Rocket rocket;
private FlightConfigurationID configId = FlightConfigurationID.ERROR_CONFIGURATION_FCID;
private FlightConfigurationID configId = new FlightConfigurationID();
/*
* NOTE: When adding/modifying parameters, they must also be added to the

View File

@ -10,7 +10,7 @@ import java.util.Set;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.aerodynamics.WarningSet;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.MotorInstanceId;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.LaunchLug;
@ -148,7 +148,7 @@ public class SimulationStatus implements Monitorable {
this.launchRodCleared = false;
this.apogeeReached = false;
for( MotorInstance motorInstance : this.configuration.getActiveMotors() ) {
for( MotorConfiguration motorInstance : this.configuration.getActiveMotors() ) {
this.motorState.add( motorInstance.getSimulationState() );
}
this.warnings = new WarningSet();

View File

@ -6,7 +6,7 @@ import java.util.Map;
import net.sf.openrocket.aerodynamics.AerodynamicCalculator;
import net.sf.openrocket.aerodynamics.AerodynamicForces;
import net.sf.openrocket.aerodynamics.FlightConditions;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.simulation.FlightDataBranch;
@ -69,7 +69,7 @@ public class DampingMoment extends AbstractSimulationListener {
// find the maximum distance from nose to nozzle.
double nozzleDistance = 0;
FlightConfiguration config = status.getConfiguration();
for (MotorInstance inst : config.getActiveMotors()) {
for (MotorConfiguration inst : config.getActiveMotors()) {
Coordinate position = inst.getPosition();
double x = position.x + inst.getMotor().getLength();

View File

@ -11,7 +11,7 @@ import net.sf.openrocket.material.Material;
import net.sf.openrocket.material.Material.Type;
import net.sf.openrocket.motor.Manufacturer;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.MotorInstanceId;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.preset.ComponentPreset;
@ -89,7 +89,7 @@ public class TestRockets {
}
// This function is used for unit, integration tests, DO NOT CHANGE (without updating tests).
private static MotorInstance generateMotorInstance_M1350_75mm(){
private static MotorConfiguration generateMotorInstance_M1350_75mm(){
// public ThrustCurveMotor(Manufacturer manufacturer, String designation, String description,
// Motor.Type type, double[] delays, double diameter, double length,
// double[] time, double[] thrust,
@ -101,11 +101,11 @@ public class TestRockets {
new Coordinate[] {
new Coordinate(.311, 0, 0, 4.808),new Coordinate(.311, 0, 0, 3.389),new Coordinate(.311, 0, 0, 1.970)},
"digest M1350 test");
return new MotorInstance(mtr);
return new MotorConfiguration(mtr);
}
// This function is used for unit, integration tests, DO NOT CHANGE (without updating tests).
private static MotorInstance generateMotorInstance_G77_29mm(){
private static MotorConfiguration generateMotorInstance_G77_29mm(){
// public ThrustCurveMotor(Manufacturer manufacturer, String designation, String description,
// Motor.Type type, double[] delays, double diameter, double length,
// double[] time, double[] thrust,
@ -117,7 +117,7 @@ public class TestRockets {
new Coordinate[] {
new Coordinate(.062, 0, 0, 0.123),new Coordinate(.062, 0, 0, .0935),new Coordinate(.062, 0, 0, 0.064)},
"digest G77 test");
return new MotorInstance(mtr);
return new MotorConfiguration(mtr);
}
//
@ -409,7 +409,7 @@ public class TestRockets {
}
// This function is used for unit, integration tests, DO NOT CHANGE (without updating tests).
public static final MotorInstance getTestD12Motor() {
public static final MotorConfiguration getTestD12Motor() {
// Estes D12:
// http://nar.org/SandT/pdf/Estes/D12.pdf
ThrustCurveMotor motor = new ThrustCurveMotor(
@ -420,7 +420,7 @@ public class TestRockets {
new Coordinate(0.0035,0,0,30.0),
new Coordinate(0.0035,0,0,21.0)},
"digest_D12");
MotorInstance inst = new MotorInstance(motor);
MotorConfiguration inst = new MotorConfiguration(motor);
inst.setEjectionDelay(5);
return inst;
}
@ -466,7 +466,7 @@ public class TestRockets {
FlightConfigurationID fcid = config.getFlightConfigurationID();
ThrustCurveMotor motor = getTestMotor();
MotorInstance instance = new MotorInstance(motor);
MotorConfiguration instance = new MotorConfiguration(motor);
instance.setEjectionDelay(5);
bodytube.setMotorInstance(fcid, instance);
@ -805,7 +805,7 @@ public class TestRockets {
coreBody.setMotorMount(true);
coreStage.addChild( coreBody);
{
MotorInstance motorInstance = TestRockets.generateMotorInstance_M1350_75mm();
MotorConfiguration motorInstance = TestRockets.generateMotorInstance_M1350_75mm();
motorInstance.setID( new MotorInstanceId( coreBody.getName(), 1) );
coreBody.setMotorMount( true);
FlightConfigurationID motorConfigId = config.getFlightConfigurationID();
@ -867,7 +867,7 @@ public class TestRockets {
boosterBody.addChild( boosterMotorTubes);
FlightConfigurationID motorConfigId = config.getFlightConfigurationID();
MotorInstance motorInstance = TestRockets.generateMotorInstance_G77_29mm();
MotorConfiguration motorInstance = TestRockets.generateMotorInstance_G77_29mm();
motorInstance.setID( new MotorInstanceId( boosterMotorTubes.getName(), 1) );
boosterMotorTubes.setMotorInstance( motorConfigId, motorInstance);
boosterMotorTubes.setMotorOverhang(0.01234);
@ -980,7 +980,7 @@ public class TestRockets {
// create motor config and add a motor to it
ThrustCurveMotor motor = getTestMotor();
MotorInstance motorInst = new MotorInstance(motor);
MotorConfiguration motorInst = new MotorConfiguration(motor);
motorInst.setEjectionDelay(5);
// add motor config to inner tube (motor mount)
@ -1015,7 +1015,7 @@ public class TestRockets {
// create motor config and add a motor to it
ThrustCurveMotor motor = getTestMotor();
MotorInstance motorConfig = new MotorInstance(motor);
MotorConfiguration motorConfig = new MotorConfiguration(motor);
motorConfig.setEjectionDelay(5);
// add motor config to inner tube (motor mount)
@ -1156,7 +1156,7 @@ public class TestRockets {
public static OpenRocketDocument makeTestRocket_v106_withMotorMountIgnitionConfig() {
Rocket rocket = new Rocket();
rocket.setName("v106_withwithMotorMountIgnitionConfig");
FlightConfigurationID fcid = new FlightConfigurationID("2SecondDelay");
FlightConfigurationID fcid = new FlightConfigurationID();
// make stage
AxialStage stage = new AxialStage();
@ -1172,7 +1172,7 @@ public class TestRockets {
bodyTube.addChild(innerTube);
// make inner tube with motor mount flag set
MotorInstance inst = new MotorInstance(getTestMotor());
MotorConfiguration inst = new MotorConfiguration(getTestMotor());
innerTube.setMotorInstance(fcid, inst);
// set ignition parameters for motor mount

View File

@ -11,7 +11,7 @@ import com.google.inject.Injector;
import com.google.inject.Module;
import net.sf.openrocket.ServicesForTesting;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.plugin.PluginModule;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
@ -69,7 +69,7 @@ public class BarrowmanCalculatorTest {
FlightConditions conditions = new FlightConditions(config);
WarningSet warnings = new WarningSet();
MotorInstance inst = TestRockets.getTestD12Motor();
MotorConfiguration inst = TestRockets.getTestD12Motor();
InnerTube motorTube = (InnerTube)rkt.getChild(0).getChild(1).getChild(1);
motorTube.setMotorInstance(fcid, inst);
motorTube.setMotorMount(true);

View File

@ -7,7 +7,7 @@ import static org.junit.Assert.assertTrue;
import org.junit.Test;
import net.sf.openrocket.masscalc.MassCalculator.MassCalcType;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.ParallelStage;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;

View File

@ -42,7 +42,7 @@ public class ThrustCurveMotorTest {
@Test
public void testInstance() {
ThrustCurveMotorInstance instance = motor.getNewInstance();
ThrustCurveMotorState instance = motor.getNewInstance();
verify(instance, 0, 0.05, 0.02);
instance.step(0.0, 0, null);
@ -64,7 +64,7 @@ public class ThrustCurveMotorTest {
verify(instance, 0, 0.03, 0.03);
}
private void verify(ThrustCurveMotorInstance instance, double thrust, double mass, double cgx) {
private void verify(ThrustCurveMotorState instance, double thrust, double mass, double cgx) {
assertEquals("Testing thrust", thrust, instance.getThrust(), EPS);
assertEquals("Testing mass", mass, instance.getCG().weight, EPS);
assertEquals("Testing cg x", cgx, instance.getCG().x, EPS);

View File

@ -11,7 +11,7 @@ import org.junit.Test;
import net.sf.openrocket.motor.Manufacturer;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.rocketcomponent.RocketComponent.Position;
import net.sf.openrocket.util.Coordinate;
@ -560,7 +560,7 @@ public class ConfigurationTest extends BaseTestCase {
InnerTube sustainerMount = (InnerTube) rocket.getChild(0).getChild(1).getChild(3);
sustainerMount.setMotorMount(true);
sustainerMount.setMotorInstance(fcid, new MotorInstance(sustainerMotor));
sustainerMount.setMotorInstance(fcid, new MotorConfiguration(sustainerMotor));
}
{
@ -577,7 +577,7 @@ public class ConfigurationTest extends BaseTestCase {
"digest D21 test");
InnerTube boosterMount = (InnerTube) rocket.getChild(1).getChild(0).getChild(2);
boosterMount.setMotorMount(true);
boosterMount.setMotorInstance(fcid, new MotorInstance(boosterMotor));
boosterMount.setMotorInstance(fcid, new MotorConfiguration(boosterMotor));
boosterMount.setClusterConfiguration( ClusterConfiguration.CONFIGURATIONS[1]); // double-mount
}
return rocket;

View File

@ -13,7 +13,7 @@ import javax.swing.event.ListDataListener;
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
import net.sf.openrocket.rocketcomponent.FlightConfigurableParameter;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.ParameterSet;
import net.sf.openrocket.rocketcomponent.FlightConfigurableParameterSet;
import net.sf.openrocket.util.StateChangeListener;
/**
@ -28,10 +28,10 @@ public class ParameterSetModel<T extends FlightConfigurableParameter<T>> impleme
private EventListenerList listenerList = new EventListenerList();
private Object selected;
private final ParameterSet<T> sourceSet;
private final FlightConfigurableParameterSet<T> sourceSet;
List<FlightConfigurationID> idList= new Vector<FlightConfigurationID>();
public ParameterSetModel(ParameterSet<T> set ) {
public ParameterSetModel(FlightConfigurableParameterSet<T> set ) {
this.sourceSet = set;
this.selected = this.sourceSet.getDefault();
}

View File

@ -21,7 +21,7 @@ import net.sf.openrocket.gui.components.BasicSlider;
import net.sf.openrocket.gui.components.StyledLabel;
import net.sf.openrocket.gui.components.UnitSelector;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.IgnitionEvent;
import net.sf.openrocket.rocketcomponent.MotorMount;
import net.sf.openrocket.rocketcomponent.RocketComponent;
@ -69,7 +69,7 @@ public class MotorConfig extends JPanel {
//// Ignition at:
panel.add(new JLabel(trans.get("MotorCfg.lbl.Ignitionat") + " " + CommonStrings.dagger), "");
MotorInstance motorInstance = mount.getDefaultMotorInstance();
MotorConfiguration motorInstance = mount.getDefaultMotorInstance();
final EnumModel<IgnitionEvent> igEvModel = new EnumModel<IgnitionEvent>(motorInstance, "IgnitionEvent", IgnitionEvent.values());
final JComboBox<IgnitionEvent> eventBox = new JComboBox<IgnitionEvent>( igEvModel);

View File

@ -22,7 +22,7 @@ import net.sf.openrocket.gui.adaptors.DoubleModel;
import net.sf.openrocket.gui.adaptors.EnumModel;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.IgnitionEvent;
import net.sf.openrocket.rocketcomponent.MotorMount;
@ -39,7 +39,7 @@ public class IgnitionSelectionDialog extends JDialog {
private RocketDescriptor descriptor = Application.getInjector().getInstance(RocketDescriptor.class);
private MotorMount curMount;
private MotorInstance curMotorInstance;
private MotorConfiguration curMotorInstance;
private IgnitionEvent startIgnitionEvent;
private double startIgnitionDelay;
@ -106,15 +106,15 @@ public class IgnitionSelectionDialog extends JDialog {
IgnitionEvent cie = curMotorInstance.getIgnitionEvent();
// update the default instance
final MotorInstance defaultMotorInstance = curMount.getDefaultMotorInstance();
final MotorConfiguration defaultMotorInstance = curMount.getDefaultMotorInstance();
defaultMotorInstance.setIgnitionDelay( cid);
defaultMotorInstance.setIgnitionEvent( cie);
// and change all remaining configs
// this seems like odd behavior to me, but it matches the text on the UI dialog popup. -teyrana (equipoise@gmail.com)
Iterator<MotorInstance> iter = curMount.getMotorIterator();
Iterator<MotorConfiguration> iter = curMount.getMotorIterator();
while( iter.hasNext() ){
MotorInstance next = iter.next();
MotorConfiguration next = iter.next();
next.setIgnitionDelay( cid);
next.setIgnitionEvent( cie);
}

View File

@ -23,7 +23,7 @@ import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.rocketcomponent.AxialStage;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.ParameterSet;
import net.sf.openrocket.rocketcomponent.FlightConfigurableParameterSet;
import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketcomponent.StageSeparationConfiguration;
import net.sf.openrocket.rocketcomponent.StageSeparationConfiguration.SeparationEvent;

View File

@ -12,7 +12,7 @@ import javax.swing.table.TableModel;
import net.sf.openrocket.database.motor.ThrustCurveMotorSet;
import net.sf.openrocket.motor.Manufacturer;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.rocketcomponent.MotorMount;
import net.sf.openrocket.util.AbstractChangeSource;
@ -64,9 +64,9 @@ public class MotorRowFilter extends RowFilter<TableModel, Integer> implements Ch
public void setMotorMount( MotorMount mount ) {
if (mount != null) {
Iterator<MotorInstance> iter = mount.getMotorIterator();
Iterator<MotorConfiguration> iter = mount.getMotorIterator();
while( iter.hasNext()){
MotorInstance mi = iter.next();
MotorConfiguration mi = iter.next();
if( !mi.isEmpty()){
this.usedMotors.add((ThrustCurveMotor) mi.getMotor());
}

View File

@ -54,7 +54,7 @@ import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.logging.Markers;
import net.sf.openrocket.motor.Manufacturer;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.motor.ThrustCurveMotor;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.MotorMount;
@ -319,7 +319,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
}
motorFilterPanel.setMotorMount(mountToEdit);
MotorInstance curMotorInstance = mountToEdit.getMotorInstance(_fcid);
MotorConfiguration curMotorInstance = mountToEdit.getMotorInstance(_fcid);
selectedMotor = null;
selectedMotorSet = null;
selectedDelay = 0;

View File

@ -18,7 +18,7 @@ import net.sf.openrocket.gui.figure3d.geometry.ComponentRenderer;
import net.sf.openrocket.gui.figure3d.geometry.DisplayListComponentRenderer;
import net.sf.openrocket.gui.figure3d.geometry.Geometry.Surface;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.MotorMount;
@ -188,7 +188,7 @@ public abstract class RocketRenderer {
// }
// }
for( MotorInstance curMotor : configuration.getActiveMotors()){
for( MotorConfiguration curMotor : configuration.getActiveMotors()){
MotorMount mount = curMotor.getMount();
Motor motor = curMotor.getMotor();

View File

@ -26,7 +26,7 @@ import net.sf.openrocket.gui.dialogs.flightconfiguration.IgnitionSelectionDialog
import net.sf.openrocket.gui.dialogs.flightconfiguration.MotorMountConfigurationPanel;
import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfigurationID;
import net.sf.openrocket.rocketcomponent.IgnitionEvent;
import net.sf.openrocket.rocketcomponent.MotorMount;
@ -215,7 +215,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
Motor mtr = motorChooserDialog.getSelectedMotor();
double d = motorChooserDialog.getSelectedDelay();
if (mtr != null) {
MotorInstance curInstance = new MotorInstance(mtr);
MotorConfiguration curInstance = new MotorConfiguration(mtr);
curInstance.setEjectionDelay(d);
curInstance.setIgnitionEvent( IgnitionEvent.NEVER);
curMount.setMotorInstance( fcid, curInstance);
@ -260,7 +260,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
if ( (null == fcid )||( null == curMount )){
return;
}
MotorInstance curInstance = curMount.getMotorInstance(fcid);
MotorConfiguration curInstance = curMount.getMotorInstance(fcid);
curInstance.useDefaultIgnition();
@ -276,7 +276,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
JLabel label = new JLabel();
label.setLayout(new BoxLayout(label, BoxLayout.X_AXIS));
MotorInstance curMotor = mount.getMotorInstance( configId);
MotorConfiguration curMotor = mount.getMotorInstance( configId);
String motorString = getMotorSpecification( curMotor );
JLabel motorDescriptionLabel = new JLabel(motorString);
@ -288,7 +288,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
return label;
}
private String getMotorSpecification(MotorInstance curMotorInstance ) {
private String getMotorSpecification(MotorConfiguration curMotorInstance ) {
if( curMotorInstance.isEmpty()){
return NONE;
}
@ -308,8 +308,8 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
}
private JLabel getIgnitionEventString(FlightConfigurationID id, MotorMount mount) {
MotorInstance defInstance = mount.getDefaultMotorInstance();
MotorInstance curInstance = mount.getMotorInstance(id);
MotorConfiguration defInstance = mount.getDefaultMotorInstance();
MotorConfiguration curInstance = mount.getMotorInstance(id);
IgnitionEvent ignitionEvent = curInstance.getIgnitionEvent();
Double ignitionDelay = curInstance.getIgnitionDelay();

View File

@ -26,7 +26,7 @@ import net.sf.openrocket.gui.rocketfigure.RocketComponentShape;
import net.sf.openrocket.gui.util.ColorConversion;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.AxialStage;
import net.sf.openrocket.rocketcomponent.ComponentAssembly;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
@ -338,7 +338,7 @@ public class RocketFigure extends AbstractScaleFigure {
Color borderColor = ((SwingPreferences)Application.getPreferences()).getMotorBorderColor();
FlightConfiguration config = rocket.getDefaultConfiguration();
for( MotorInstance curInstance : config.getActiveMotors()){
for( MotorConfiguration curInstance : config.getActiveMotors()){
MotorMount mount = curInstance.getMount();
Motor motor = curInstance.getMotor();
double motorLength = motor.getLength();

View File

@ -33,7 +33,7 @@ import net.sf.openrocket.gui.dialogs.DetailDialog;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.motor.MotorInstance;
import net.sf.openrocket.motor.MotorConfiguration;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import net.sf.openrocket.rocketcomponent.IgnitionEvent;
import net.sf.openrocket.simulation.FlightEvent;
@ -293,9 +293,9 @@ public class SimulationRunDialog extends JDialog {
FlightConfiguration config = simulation.getRocket().getDefaultConfiguration();
Collection<MotorInstance> activeMotors = config.getActiveMotors();
Collection<MotorConfiguration> activeMotors = config.getActiveMotors();
for (MotorInstance curInstance : activeMotors) {
for (MotorConfiguration curInstance : activeMotors) {
if (curInstance.getIgnitionEvent() == IgnitionEvent.LAUNCH)
launchBurn = MathUtil.max(launchBurn, curInstance.getMotor().getBurnTimeEstimate());
else