diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java b/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java index d11760d1f..a711aacc4 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java @@ -21,9 +21,8 @@ import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.FreeformFinSet; 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.LineInstanceable; import net.sf.openrocket.rocketcomponent.MassComponent; import net.sf.openrocket.rocketcomponent.MassObject; 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.ReferenceType; import net.sf.openrocket.rocketcomponent.RingComponent; -import net.sf.openrocket.rocketcomponent.RingInstanceable; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.ShockCord; @@ -143,6 +141,20 @@ class DocumentConfig { // BodyComponent setters.put("BodyComponent:length", new DoubleSetter( 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 setters.put("SymmetricComponent:thickness", new DoubleSetter( @@ -150,12 +162,18 @@ class DocumentConfig { "filled", Reflection.findMethod(SymmetricComponent.class, "setFilled", boolean.class))); - // BodyTube - setters.put("BodyTube:radius", new DoubleSetter( - Reflection.findMethod(BodyTube.class, "setOuterRadius", double.class), - "auto", - Reflection.findMethod(BodyTube.class, "setOuterRadiusAutomatic", boolean.class))); - + // LaunchButton + setters.put("LaunchButton:instancecount", new IntSetter( + Reflection.findMethod(LaunchButton.class, "setInstanceCount",int.class))); + setters.put("LaunchButton:instanceseparation", new DoubleSetter( + 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 setters.put("Transition:shape", new EnumSetter( Reflection.findMethod(Transition.class, "setType", Transition.Shape.class), @@ -305,6 +323,8 @@ class DocumentConfig { setters.put("InnerTube:clusterrotation", new DoubleSetter( Reflection.findMethod(InnerTube.class, "setClusterRotation", double.class), Math.PI / 180.0)); + setters.put("InnerTube:instancecount", new IntSetter( + Reflection.findMethod(InnerTube.class, "setInstanceCount",int.class))); // RadiusRingComponent @@ -325,7 +345,12 @@ class DocumentConfig { Reflection.findMethod(CenteringRing.class, "setOuterRadius", double.class), "auto", 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 setters.put("MassObject:packedlength", new DoubleSetter( @@ -387,6 +412,14 @@ class DocumentConfig { Reflection.findMethod(Parachute.class, "setLineMaterial", Material.class), 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 setters.put("Streamer:striplength", new DoubleSetter( Reflection.findMethod(Streamer.class, "setStripLength", double.class))); @@ -414,6 +447,10 @@ class DocumentConfig { Reflection.findMethod(AxialStage.class, "getSeparationConfigurations"), 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 element name. Setters are searched for in descending class order. @@ -424,18 +461,8 @@ class DocumentConfig { // 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("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))); - - } diff --git a/core/src/net/sf/openrocket/rocketcomponent/CenteringRing.java b/core/src/net/sf/openrocket/rocketcomponent/CenteringRing.java index 3f95060f9..8f06bb778 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/CenteringRing.java +++ b/core/src/net/sf/openrocket/rocketcomponent/CenteringRing.java @@ -17,7 +17,11 @@ public class CenteringRing extends RadiusRingComponent implements LineInstanceab 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 public double getInnerRadius() { // Implement sibling inner radius automation @@ -77,5 +81,32 @@ public class CenteringRing extends RadiusRingComponent implements LineInstanceab public Type getPresetType() { 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"); + } + } diff --git a/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java index d96467a15..cbbc3524b 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java @@ -16,7 +16,7 @@ import net.sf.openrocket.util.MathUtil; * * @author Sampo Niskanen */ -public abstract class RingComponent extends StructuralComponent implements Coaxial, LineInstanceable { +public abstract class RingComponent extends StructuralComponent implements Coaxial { protected boolean outerRadiusAutomatic = false; protected boolean innerRadiusAutomatic = false; @@ -28,10 +28,6 @@ public abstract class RingComponent extends StructuralComponent implements Coaxi private double shiftY = 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 public abstract double getOuterRadius(); @@ -221,33 +217,4 @@ public abstract class RingComponent extends StructuralComponent implements Coaxi 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"); - } - } diff --git a/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java b/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java index 1fdc47568..889b367e4 100644 --- a/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java +++ b/swing/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java @@ -228,7 +228,7 @@ public class RocketFigure extends AbstractScaleFigure { public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; - + System.err.println(" paintingComponent... "); AffineTransform baseTransform = g2.getTransform();