[Bugfix] Fixed UI issues related to 'Instanceable' implementation.
- RingComponent is no longer Instanceable. - Fixed setter settings for file loading: - Fixed methods references for Innstanceable-implementing classes - BoosterSet - PodSet - InnerTube - CenteringRing - LaunchButton - LaunchLug
This commit is contained in:
parent
80c4ef5254
commit
dac67b0f71
@ -21,9 +21,8 @@ import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish;
|
|||||||
import net.sf.openrocket.rocketcomponent.FinSet;
|
import net.sf.openrocket.rocketcomponent.FinSet;
|
||||||
import net.sf.openrocket.rocketcomponent.FreeformFinSet;
|
import net.sf.openrocket.rocketcomponent.FreeformFinSet;
|
||||||
import net.sf.openrocket.rocketcomponent.InnerTube;
|
import net.sf.openrocket.rocketcomponent.InnerTube;
|
||||||
import net.sf.openrocket.rocketcomponent.Instanceable;
|
import net.sf.openrocket.rocketcomponent.LaunchButton;
|
||||||
import net.sf.openrocket.rocketcomponent.LaunchLug;
|
import net.sf.openrocket.rocketcomponent.LaunchLug;
|
||||||
import net.sf.openrocket.rocketcomponent.LineInstanceable;
|
|
||||||
import net.sf.openrocket.rocketcomponent.MassComponent;
|
import net.sf.openrocket.rocketcomponent.MassComponent;
|
||||||
import net.sf.openrocket.rocketcomponent.MassObject;
|
import net.sf.openrocket.rocketcomponent.MassObject;
|
||||||
import net.sf.openrocket.rocketcomponent.NoseCone;
|
import net.sf.openrocket.rocketcomponent.NoseCone;
|
||||||
@ -33,7 +32,6 @@ import net.sf.openrocket.rocketcomponent.RadiusRingComponent;
|
|||||||
import net.sf.openrocket.rocketcomponent.RecoveryDevice;
|
import net.sf.openrocket.rocketcomponent.RecoveryDevice;
|
||||||
import net.sf.openrocket.rocketcomponent.ReferenceType;
|
import net.sf.openrocket.rocketcomponent.ReferenceType;
|
||||||
import net.sf.openrocket.rocketcomponent.RingComponent;
|
import net.sf.openrocket.rocketcomponent.RingComponent;
|
||||||
import net.sf.openrocket.rocketcomponent.RingInstanceable;
|
|
||||||
import net.sf.openrocket.rocketcomponent.Rocket;
|
import net.sf.openrocket.rocketcomponent.Rocket;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
import net.sf.openrocket.rocketcomponent.ShockCord;
|
import net.sf.openrocket.rocketcomponent.ShockCord;
|
||||||
@ -144,17 +142,37 @@ class DocumentConfig {
|
|||||||
setters.put("BodyComponent:length", new DoubleSetter(
|
setters.put("BodyComponent:length", new DoubleSetter(
|
||||||
Reflection.findMethod(BodyComponent.class, "setLength", double.class)));
|
Reflection.findMethod(BodyComponent.class, "setLength", double.class)));
|
||||||
|
|
||||||
|
// BodyTube
|
||||||
|
setters.put("BodyTube:radius", new DoubleSetter(
|
||||||
|
Reflection.findMethod(BodyTube.class, "setOuterRadius", double.class),
|
||||||
|
"auto",
|
||||||
|
Reflection.findMethod(BodyTube.class, "setOuterRadiusAutomatic", boolean.class)));
|
||||||
|
|
||||||
|
// BoosterSet
|
||||||
|
setters.put("BoosterSet:instancecount", new IntSetter(
|
||||||
|
Reflection.findMethod(BoosterSet.class, "setInstanceCount",int.class)));
|
||||||
|
setters.put("BoosterSet:radialoffset", new DoubleSetter(
|
||||||
|
Reflection.findMethod(BoosterSet.class, "setRadialOffset", double.class)));
|
||||||
|
setters.put("BoosterSet:angleoffset", new DoubleSetter(
|
||||||
|
Reflection.findMethod(BoosterSet.class, "setAngularOffset", double.class)));
|
||||||
|
|
||||||
// SymmetricComponent
|
// SymmetricComponent
|
||||||
setters.put("SymmetricComponent:thickness", new DoubleSetter(
|
setters.put("SymmetricComponent:thickness", new DoubleSetter(
|
||||||
Reflection.findMethod(SymmetricComponent.class, "setThickness", double.class),
|
Reflection.findMethod(SymmetricComponent.class, "setThickness", double.class),
|
||||||
"filled",
|
"filled",
|
||||||
Reflection.findMethod(SymmetricComponent.class, "setFilled", boolean.class)));
|
Reflection.findMethod(SymmetricComponent.class, "setFilled", boolean.class)));
|
||||||
|
|
||||||
// BodyTube
|
// LaunchButton
|
||||||
setters.put("BodyTube:radius", new DoubleSetter(
|
setters.put("LaunchButton:instancecount", new IntSetter(
|
||||||
Reflection.findMethod(BodyTube.class, "setOuterRadius", double.class),
|
Reflection.findMethod(LaunchButton.class, "setInstanceCount",int.class)));
|
||||||
"auto",
|
setters.put("LaunchButton:instanceseparation", new DoubleSetter(
|
||||||
Reflection.findMethod(BodyTube.class, "setOuterRadiusAutomatic", boolean.class)));
|
Reflection.findMethod( LaunchButton.class, "setInstanceSeparation", double.class)));
|
||||||
|
|
||||||
|
// LaunchLug
|
||||||
|
setters.put("LaunchLug:instancecount", new IntSetter(
|
||||||
|
Reflection.findMethod(LaunchLug.class, "setInstanceCount",int.class)));
|
||||||
|
setters.put("LaunchLug:instanceseparation", new DoubleSetter(
|
||||||
|
Reflection.findMethod( LaunchLug.class, "setInstanceSeparation", double.class)));
|
||||||
|
|
||||||
// Transition
|
// Transition
|
||||||
setters.put("Transition:shape", new EnumSetter<Transition.Shape>(
|
setters.put("Transition:shape", new EnumSetter<Transition.Shape>(
|
||||||
@ -305,6 +323,8 @@ class DocumentConfig {
|
|||||||
setters.put("InnerTube:clusterrotation", new DoubleSetter(
|
setters.put("InnerTube:clusterrotation", new DoubleSetter(
|
||||||
Reflection.findMethod(InnerTube.class, "setClusterRotation", double.class),
|
Reflection.findMethod(InnerTube.class, "setClusterRotation", double.class),
|
||||||
Math.PI / 180.0));
|
Math.PI / 180.0));
|
||||||
|
setters.put("InnerTube:instancecount", new IntSetter(
|
||||||
|
Reflection.findMethod(InnerTube.class, "setInstanceCount",int.class)));
|
||||||
|
|
||||||
// RadiusRingComponent
|
// RadiusRingComponent
|
||||||
|
|
||||||
@ -325,6 +345,11 @@ class DocumentConfig {
|
|||||||
Reflection.findMethod(CenteringRing.class, "setOuterRadius", double.class),
|
Reflection.findMethod(CenteringRing.class, "setOuterRadius", double.class),
|
||||||
"auto",
|
"auto",
|
||||||
Reflection.findMethod(CenteringRing.class, "setOuterRadiusAutomatic", boolean.class)));
|
Reflection.findMethod(CenteringRing.class, "setOuterRadiusAutomatic", boolean.class)));
|
||||||
|
setters.put("CenteringRing:instancecount", new IntSetter(
|
||||||
|
Reflection.findMethod(CenteringRing.class, "setInstanceCount",int.class)));
|
||||||
|
setters.put("CenteringRing:instanceseparation", new DoubleSetter(
|
||||||
|
Reflection.findMethod( CenteringRing.class, "setInstanceSeparation", double.class)));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// MassObject
|
// MassObject
|
||||||
@ -387,6 +412,14 @@ class DocumentConfig {
|
|||||||
Reflection.findMethod(Parachute.class, "setLineMaterial", Material.class),
|
Reflection.findMethod(Parachute.class, "setLineMaterial", Material.class),
|
||||||
Material.Type.LINE));
|
Material.Type.LINE));
|
||||||
|
|
||||||
|
// PodSet
|
||||||
|
setters.put("PodSet:instancecount", new IntSetter(
|
||||||
|
Reflection.findMethod(PodSet.class, "setInstanceCount",int.class)));
|
||||||
|
setters.put("PodSet:radialoffset", new DoubleSetter(
|
||||||
|
Reflection.findMethod(PodSet.class, "setRadialOffset", double.class)));
|
||||||
|
setters.put("PodSet:angleoffset", new DoubleSetter(
|
||||||
|
Reflection.findMethod(PodSet.class, "setAngularOffset", double.class)));
|
||||||
|
|
||||||
// Streamer
|
// Streamer
|
||||||
setters.put("Streamer:striplength", new DoubleSetter(
|
setters.put("Streamer:striplength", new DoubleSetter(
|
||||||
Reflection.findMethod(Streamer.class, "setStripLength", double.class)));
|
Reflection.findMethod(Streamer.class, "setStripLength", double.class)));
|
||||||
@ -414,6 +447,10 @@ class DocumentConfig {
|
|||||||
Reflection.findMethod(AxialStage.class, "getSeparationConfigurations"),
|
Reflection.findMethod(AxialStage.class, "getSeparationConfigurations"),
|
||||||
Reflection.findMethod(StageSeparationConfiguration.class, "setSeparationDelay", double.class)));
|
Reflection.findMethod(StageSeparationConfiguration.class, "setSeparationDelay", double.class)));
|
||||||
|
|
||||||
|
// to place...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The keys are of the form Class:param, where Class is the class name and param
|
* The keys are of the form Class:param, where Class is the class name and param
|
||||||
* the element name. Setters are searched for in descending class order.
|
* the element name. Setters are searched for in descending class order.
|
||||||
@ -424,16 +461,6 @@ class DocumentConfig {
|
|||||||
// setters.put("ComponentAssembly:radialoffset", new DoubleSetter(Reflection.findMethod(AxialStage.class, "setRadialOffset", double.class)));
|
// setters.put("ComponentAssembly:radialoffset", new DoubleSetter(Reflection.findMethod(AxialStage.class, "setRadialOffset", double.class)));
|
||||||
// setters.put("ComponentAssembly:angleoffset", new DoubleSetter(Reflection.findMethod(AxialStage.class, "setAngularOffset", double.class)));
|
// setters.put("ComponentAssembly:angleoffset", new DoubleSetter(Reflection.findMethod(AxialStage.class, "setAngularOffset", double.class)));
|
||||||
|
|
||||||
setters.put("Instanceable:instancecount", new IntSetter(
|
|
||||||
Reflection.findMethod(Instanceable.class, "setInstanceCount",int.class)));
|
|
||||||
setters.put("RingInstanceable:radialoffset", new DoubleSetter(
|
|
||||||
Reflection.findMethod(RingInstanceable.class, "setRadialOffset", double.class)));
|
|
||||||
setters.put("RingInstance:angleoffset", new DoubleSetter(
|
|
||||||
Reflection.findMethod(RingInstanceable.class, "setAngularOffset", double.class)));
|
|
||||||
|
|
||||||
setters.put("LineInstanceable:instanceseparation", new DoubleSetter(
|
|
||||||
Reflection.findMethod( LineInstanceable.class, "setInstanceSeparation", double.class)));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ public class CenteringRing extends RadiusRingComponent implements LineInstanceab
|
|||||||
|
|
||||||
private static final Translator trans = Application.getTranslator();
|
private static final Translator trans = Application.getTranslator();
|
||||||
|
|
||||||
|
protected int instanceCount = 1;
|
||||||
|
// front-front along the positive rocket axis. i.e. [1,0,0];
|
||||||
|
protected double instanceSeparation = 0;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getInnerRadius() {
|
public double getInnerRadius() {
|
||||||
@ -78,4 +82,31 @@ public class CenteringRing extends RadiusRingComponent implements LineInstanceab
|
|||||||
return ComponentPreset.Type.CENTERING_RING;
|
return ComponentPreset.Type.CENTERING_RING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getInstanceSeparation(){
|
||||||
|
return this.instanceSeparation;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInstanceSeparation(final double _separation){
|
||||||
|
this.instanceSeparation = _separation;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInstanceCount( final int newCount ){
|
||||||
|
if( 0 < newCount ){
|
||||||
|
this.instanceCount = newCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getInstanceCount(){
|
||||||
|
return this.instanceCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPatternName(){
|
||||||
|
return (this.getInstanceCount() + "-Line");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ import net.sf.openrocket.util.MathUtil;
|
|||||||
*
|
*
|
||||||
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
||||||
*/
|
*/
|
||||||
public abstract class RingComponent extends StructuralComponent implements Coaxial, LineInstanceable {
|
public abstract class RingComponent extends StructuralComponent implements Coaxial {
|
||||||
|
|
||||||
protected boolean outerRadiusAutomatic = false;
|
protected boolean outerRadiusAutomatic = false;
|
||||||
protected boolean innerRadiusAutomatic = false;
|
protected boolean innerRadiusAutomatic = false;
|
||||||
@ -28,10 +28,6 @@ public abstract class RingComponent extends StructuralComponent implements Coaxi
|
|||||||
private double shiftY = 0;
|
private double shiftY = 0;
|
||||||
private double shiftZ = 0;
|
private double shiftZ = 0;
|
||||||
|
|
||||||
protected int instanceCount = 1;
|
|
||||||
// front-front along the positive rocket axis. i.e. [1,0,0];
|
|
||||||
protected double instanceSeparation = 0;
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract double getOuterRadius();
|
public abstract double getOuterRadius();
|
||||||
@ -221,33 +217,4 @@ public abstract class RingComponent extends StructuralComponent implements Coaxi
|
|||||||
return ringRotationalUnitInertia(getOuterRadius(), getInnerRadius());
|
return ringRotationalUnitInertia(getOuterRadius(), getInnerRadius());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getInstanceSeparation(){
|
|
||||||
return this.instanceSeparation;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInstanceSeparation(final double _separation){
|
|
||||||
this.instanceSeparation = _separation;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInstanceCount( final int newCount ){
|
|
||||||
if( 0 < newCount ){
|
|
||||||
this.instanceCount = newCount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInstanceCount(){
|
|
||||||
return this.instanceCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getPatternName(){
|
|
||||||
return (this.getInstanceCount() + "-Line");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -228,7 +228,7 @@ public class RocketFigure extends AbstractScaleFigure {
|
|||||||
public void paintComponent(Graphics g) {
|
public void paintComponent(Graphics g) {
|
||||||
super.paintComponent(g);
|
super.paintComponent(g);
|
||||||
Graphics2D g2 = (Graphics2D) g;
|
Graphics2D g2 = (Graphics2D) g;
|
||||||
|
System.err.println(" paintingComponent... ");
|
||||||
|
|
||||||
AffineTransform baseTransform = g2.getTransform();
|
AffineTransform baseTransform = g2.getTransform();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user