From 837187671811bffeaa4cfba8b8d0210b2dd8263f Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Mon, 8 Jun 2015 18:19:23 -0400 Subject: [PATCH] ACTUAL bugfix commit: Stage Config dialog fixed. --- core/resources/l10n/messages.properties | 9 +++--- .../rocketcomponent/ExternalComponent.java | 24 +++++++-------- .../rocketcomponent/OutsideComponent.java | 10 +++---- .../sf/openrocket/rocketcomponent/Stage.java | 21 +++++++------- .../configdialog/RocketComponentConfig.java | 29 ++++++++++++------- .../gui/configdialog/StageConfig.java | 19 +++++++----- 6 files changed, 64 insertions(+), 48 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index f1ac5016f..708ba5629 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -827,10 +827,11 @@ RocketCompCfg.tab.Pod = Pod RocketCompCfg.tab.PodComment = Options for locating ExteriorComponents outside the Rocket RocketCompCfg.tab.Parallel = Parallel RocketCompCfg.tab.ParallelComment = Options for locating Stages parallel to other stages -RocketCompCfg.parallel.inline = Make this Stage Parallel -RocketCompCfg.parallel.radius = Radial Distance (meters) -RocketCompCfg.parallel.angle = Angle (Radians) -RocketCompCfg.parallel.rotation = Rotation (Radians) +RocketCompCfg.outside.stage = Make this Stage Parallel +RocketCompCfg.outside.pod = Move this Component Outside +RocketCompCfg.outside.radius = Radial Distance (meters) +RocketCompCfg.outside.angle = Angle (Radians) +RocketCompCfg.outside.rotation = Rotation (Radians) RocketCompCfg.tab.Figure = Figure RocketCompCfg.tab.Figstyleopt = Figure style options RocketCompCfg.tab.Comment = Comment diff --git a/core/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java b/core/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java index 622302737..11eb8dd9a 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/ExternalComponent.java @@ -18,7 +18,7 @@ import net.sf.openrocket.unit.UnitGroup; public abstract class ExternalComponent extends RocketComponent implements OutsideComponent { - private boolean axial = true; + private boolean outside = false; private double position_angular_rad = 0; private double position_radial_m = 0; private double rotation_rad = 0; @@ -131,23 +131,23 @@ public abstract class ExternalComponent extends RocketComponent implements Outsi fireComponentChangeEvent(ComponentChangeEvent.AERODYNAMIC_CHANGE); } + @Override + public boolean getOutside() { + return this.outside; + } + public boolean isInline() { - return this.axial; + return !this.outside; } @Override - public boolean getParallel() { - return !this.axial; - } - - @Override - public void setParallel(final boolean parallel) { - this.axial = !parallel; + public void setOutside(final boolean _outside) { + this.outside = _outside; } @Override public double getAngularPosition() { - if (axial) { + if (outside) { return 0.; } return this.position_angular_rad; @@ -160,7 +160,7 @@ public abstract class ExternalComponent extends RocketComponent implements Outsi @Override public double getRadialPosition() { - if (axial) { + if (outside) { return 0.; } return this.position_radial_m; @@ -173,7 +173,7 @@ public abstract class ExternalComponent extends RocketComponent implements Outsi @Override public double getRotation() { - if (axial) { + if (outside) { return 0.; } return this.rotation_rad; diff --git a/core/src/net/sf/openrocket/rocketcomponent/OutsideComponent.java b/core/src/net/sf/openrocket/rocketcomponent/OutsideComponent.java index 808c57145..2b7bd2130 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/OutsideComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/OutsideComponent.java @@ -6,17 +6,17 @@ public interface OutsideComponent { /** * Indicates whether this component is located inside or outside of the rest of the rocket. (Specifically, inside or outside its parent.) * - * @return True This component is aligned with its parent - * False This component is offset from its parent -- like an external pod, or strap-on stage + * @return False This component is aligned with its parent + * True This component is offset from its parent -- like an external pod, or strap-on stage */ - public boolean getParallel(); + public boolean getOutside(); /** * Change whether this component is located inside or outside of the rest of the rocket. (Specifically, inside or outside its parent.) * - * @param inline True indicates that this component axially aligned with its parent. False indicates an off-center component. + * @param inline False indicates that this component axially aligned with its parent. True indicates an off-center component. */ - public void setParallel(final boolean inline); + public void setOutside(final boolean inline); /** * Get the position of this component in polar coordinates diff --git a/core/src/net/sf/openrocket/rocketcomponent/Stage.java b/core/src/net/sf/openrocket/rocketcomponent/Stage.java index be87bcce2..6fc9ca3e1 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Stage.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Stage.java @@ -9,7 +9,7 @@ public class Stage extends ComponentAssembly implements FlightConfigurableCompon private FlightConfigurationImpl separationConfigurations; - private boolean axial = true; + private boolean outside = false; private double position_angular_rad = 0; private double position_radial_m = 0; private double rotation_rad = 0; @@ -70,22 +70,23 @@ public class Stage extends ComponentAssembly implements FlightConfigurableCompon } @Override - public boolean getParallel() { - return !this.axial; + public boolean getOutside() { + return this.outside; } - public boolean getInline() { - return this.axial; + + public boolean isInline() { + return !this.outside; } @Override - public void setParallel(final boolean parallel) { - this.axial = !parallel; + public void setOutside(final boolean _outside) { + this.outside = _outside; } @Override public double getAngularPosition() { - if (axial) { + if (this.isInline()) { return 0.; } return this.position_angular_rad; @@ -98,7 +99,7 @@ public class Stage extends ComponentAssembly implements FlightConfigurableCompon @Override public double getRadialPosition() { - if (axial) { + if (this.isInline()) { return 0.; } return this.position_radial_m; @@ -111,7 +112,7 @@ public class Stage extends ComponentAssembly implements FlightConfigurableCompon @Override public double getRotation() { - if (axial) { + if (this.isInline()) { return 0.; } return this.rotation_rad; diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index 45d222d0f..48c8bec58 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -126,6 +126,9 @@ public class RocketComponentConfig extends JPanel { tabbedPane.addTab(trans.get("RocketCompCfg.tab.Comment"), null, commentTab(), trans.get("RocketCompCfg.tab.Specifyacomment")); + if( component instanceof ExternalComponent ){ + tabbedPane.insertTab( trans.get("RocketCompCfg.tab.Pod"), null, podTab( (ExternalComponent) component ), trans.get("RocketCompCfg.tab.PodComment"), 2); + } addButtons(); @@ -159,10 +162,6 @@ public class RocketComponentConfig extends JPanel { }); buttonPanel.add(closeButton, "right, gap 30lp"); - if( component instanceof ExternalComponent ){ - tabbedPane.insertTab( trans.get("RocketCompCfg.tab.Pod"), null, podTab( (ExternalComponent) component ), trans.get("RocketCompCfg.tab.PodComment"), 2); - } - updateFields(); this.add(buttonPanel, "spanx, growx"); @@ -288,10 +287,10 @@ public class RocketComponentConfig extends JPanel { private JPanel podTab( final ExternalComponent pod ){ // enable parallel staging JPanel motherPanel = new JPanel( new MigLayout("fill")); - podsEnabledModel = new BooleanModel( component, "Parallel"); - podsEnabledModel.setValue(false); + podsEnabledModel = new BooleanModel( component, "Outside"); + podsEnabledModel.setValue( pod.getOutside()); JCheckBox parallelEnabled = new JCheckBox( podsEnabledModel); - parallelEnabled.setText(trans.get("RocketCompCfg.parallel.inline")); + parallelEnabled.setText(trans.get("RocketCompCfg.outside.pod")); motherPanel.add(parallelEnabled, "wrap"); JPanel enabledPanel = new JPanel( new MigLayout("fill")); @@ -300,25 +299,35 @@ public class RocketComponentConfig extends JPanel { enabledPanel.add(new JSeparator(SwingConstants.HORIZONTAL), "growx,wrap"); // set radial distance - enabledPanel.add(new JLabel(trans.get("RocketCompCfg.parallel.radius")), "align left"); + enabledPanel.add(new JLabel(trans.get("RocketCompCfg.outside.radius")), "align left"); DoubleModel radiusModel = new DoubleModel( pod, "RadialPosition", 0.); + radiusModel.setCurrentUnit( UnitGroup.UNITS_DISTANCE.getSIUnit() ); JSpinner radiusSpinner = new JSpinner( radiusModel.getSpinnerModel()); radiusSpinner.setEditor(new SpinnerEditor(radiusSpinner )); enabledPanel.add(radiusSpinner , "growx, wrap, align right"); // set angle around the primary stage - enabledPanel.add(new JLabel(trans.get("RocketCompCfg.parallel.angle")), "align left"); + enabledPanel.add(new JLabel(trans.get("RocketCompCfg.outside.angle")), "align left"); DoubleModel angleModel = new DoubleModel( pod, "AngularPosition", 0., Math.PI*2); + angleModel.setCurrentUnit( UnitGroup.UNITS_ANGLE.getUnit("rad") ); JSpinner angleSpinner = new JSpinner(angleModel.getSpinnerModel()); angleSpinner.setEditor(new SpinnerEditor(angleSpinner)); enabledPanel.add(angleSpinner, "growx, wrap"); - enabledPanel.add(new JLabel(trans.get("RocketCompCfg.parallel.rotation")), "align left"); + enabledPanel.add(new JLabel(trans.get("RocketCompCfg.outside.rotation")), "align left"); DoubleModel rotationModel = new DoubleModel( pod, "Rotation", 0.0, Math.PI*2); + rotationModel.setCurrentUnit( UnitGroup.UNITS_ANGLE.getUnit("rad") ); JSpinner rotationSpinner = new JSpinner(rotationModel.getSpinnerModel()); rotationSpinner.setEditor(new SpinnerEditor(rotationSpinner)); enabledPanel.add(rotationSpinner, "growx, wrap"); + // TODO: add multiplicity +// enabledPanel.add(new JLabel(trans.get("RocketCompCfg.parallel.rotation")), "align left"); +// DoubleModel rotationModel = new DoubleModel( pod, "Rotation", 0.0, Math.PI*2); +// JSpinner rotationSpinner = new JSpinner(rotationModel.getSpinnerModel()); +// rotationSpinner.setEditor(new SpinnerEditor(rotationSpinner)); +// enabledPanel.add(rotationSpinner, "growx, wrap"); +// setDeepEnabled( enabledPanel, podsEnabledModel.getValue()); parallelEnabled.addChangeListener(new ChangeListener() { @Override diff --git a/swing/src/net/sf/openrocket/gui/configdialog/StageConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/StageConfig.java index 92c6bfa4e..50840ab96 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/StageConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/StageConfig.java @@ -27,6 +27,7 @@ import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Stage; import net.sf.openrocket.rocketcomponent.StageSeparationConfiguration; import net.sf.openrocket.startup.Application; +import net.sf.openrocket.unit.UnitGroup; public class StageConfig extends RocketComponentConfig { private static final Translator trans = Application.getTranslator(); @@ -53,10 +54,10 @@ public class StageConfig extends RocketComponentConfig { private JPanel parallelTab( final Stage stage ){ // enable parallel staging JPanel motherPanel = new JPanel( new MigLayout("fill")); - parallelEnabledModel = new BooleanModel( component, "Parallel"); - parallelEnabledModel.setValue( stage.getInline()); + parallelEnabledModel = new BooleanModel( component, "Outside"); + parallelEnabledModel.setValue( stage.getOutside()); JCheckBox parallelEnabled = new JCheckBox( parallelEnabledModel); - parallelEnabled.setText(trans.get("RocketCompCfg.parallel.inline")); + parallelEnabled.setText(trans.get("RocketCompCfg.outside.stage")); motherPanel.add(parallelEnabled, "wrap"); JPanel enabledPanel = new JPanel( new MigLayout("fill")); @@ -65,32 +66,36 @@ public class StageConfig extends RocketComponentConfig { enabledPanel.add(new JSeparator(SwingConstants.HORIZONTAL), "growx,wrap"); // set radial distance - enabledPanel.add(new JLabel(trans.get("RocketCompCfg.parallel.radius")), "align left"); + enabledPanel.add(new JLabel(trans.get("RocketCompCfg.outside.radius")), "align left"); DoubleModel radiusModel = new DoubleModel( stage, "RadialPosition", 0.0); + radiusModel.setCurrentUnit( UnitGroup.UNITS_DISTANCE.getSIUnit() ); JSpinner radiusSpinner = new JSpinner( radiusModel.getSpinnerModel()); radiusSpinner.setEditor(new SpinnerEditor(radiusSpinner )); enabledPanel.add(radiusSpinner , "growx, wrap, align right"); // set angle around the primary stage - enabledPanel.add(new JLabel(trans.get("RocketCompCfg.parallel.angle")), "align left"); + enabledPanel.add(new JLabel(trans.get("RocketCompCfg.outside.angle")), "align left"); DoubleModel angleModel = new DoubleModel( stage, "AngularPosition", 0.0, Math.PI*2); + angleModel.setCurrentUnit( UnitGroup.UNITS_ANGLE.getUnit("rad")); JSpinner angleSpinner = new JSpinner(angleModel.getSpinnerModel()); angleSpinner.setEditor(new SpinnerEditor(angleSpinner)); enabledPanel.add(angleSpinner, "growx, wrap"); - enabledPanel.add(new JLabel(trans.get("RocketCompCfg.parallel.rotation")), "align left"); + enabledPanel.add(new JLabel(trans.get("RocketCompCfg.outside.rotation")), "align left"); DoubleModel rotationModel = new DoubleModel( stage, "Rotation", 0.0, Math.PI*2); + rotationModel.setCurrentUnit( UnitGroup.UNITS_ANGLE.getUnit("rad") ); JSpinner rotationSpinner = new JSpinner(rotationModel.getSpinnerModel()); rotationSpinner.setEditor(new SpinnerEditor(rotationSpinner)); enabledPanel.add(rotationSpinner, "growx, wrap"); - setDeepEnabled( enabledPanel, parallelEnabledModel.getValue()); + parallelEnabled.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { setDeepEnabled( parallelEnabledPanel, parallelEnabledModel.getValue()); } }); + setDeepEnabled( parallelEnabledPanel, parallelEnabledModel.getValue()); motherPanel.add( enabledPanel , "growx, wrap");