From bcc5d6bcf898cfd22e5a506e3e6cc46fabb8766f Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sat, 9 May 2020 11:47:39 -0400 Subject: [PATCH] [fix] Scale Rocket now scales the radial distance of pods & p-stages --- .../openrocket/gui/dialogs/ScaleDialog.java | 36 ++++++------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java index 4fc60db93..0893ff55e 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java @@ -4,7 +4,6 @@ import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -31,27 +30,7 @@ import net.sf.openrocket.gui.components.UnitSelector; import net.sf.openrocket.gui.util.GUIUtil; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.Markers; -import net.sf.openrocket.rocketcomponent.BodyComponent; -import net.sf.openrocket.rocketcomponent.BodyTube; -import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; -import net.sf.openrocket.rocketcomponent.EllipticalFinSet; -import net.sf.openrocket.rocketcomponent.FinSet; -import net.sf.openrocket.rocketcomponent.FreeformFinSet; -import net.sf.openrocket.rocketcomponent.IllegalFinPointException; -import net.sf.openrocket.rocketcomponent.InnerTube; -import net.sf.openrocket.rocketcomponent.LaunchLug; -import net.sf.openrocket.rocketcomponent.MassComponent; -import net.sf.openrocket.rocketcomponent.MassObject; -import net.sf.openrocket.rocketcomponent.Parachute; -import net.sf.openrocket.rocketcomponent.RadiusRingComponent; -import net.sf.openrocket.rocketcomponent.RingComponent; -import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.ShockCord; -import net.sf.openrocket.rocketcomponent.Streamer; -import net.sf.openrocket.rocketcomponent.SymmetricComponent; -import net.sf.openrocket.rocketcomponent.ThicknessRingComponent; -import net.sf.openrocket.rocketcomponent.Transition; -import net.sf.openrocket.rocketcomponent.TrapezoidFinSet; +import net.sf.openrocket.rocketcomponent.*; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.Unit; import net.sf.openrocket.unit.UnitGroup; @@ -81,11 +60,15 @@ public class ScaleDialog extends JDialog { new HashMap, List>(); static { List list; - + // RocketComponent addScaler(RocketComponent.class, "AxialOffset"); SCALERS.get(RocketComponent.class).add(new OverrideScaler()); - + + // ComponentAssembly + addScaler(ParallelStage.class, "RadiusOffset"); + addScaler(PodSet.class, "RadiusOffset"); + // BodyComponent addScaler(BodyComponent.class, "Length"); @@ -258,13 +241,14 @@ public class ScaleDialog extends JDialog { * If a component is selected, either its diameter (for SymmetricComponents) or length is selected. * Otherwise the maximum body diameter is selected. As a fallback DEFAULT_INITIAL_SIZE is used. */ - // double initialSize = 0; if (selection != null) { if (selection instanceof SymmetricComponent) { SymmetricComponent s = (SymmetricComponent) selection; initialSize = s.getForeRadius() * 2; initialSize = MathUtil.max(initialSize, s.getAftRadius() * 2); + }else if ((selection instanceof ParallelStage) || (selection instanceof PodSet )) { + initialSize = selection.getRadiusOffset(); } else { initialSize = selection.getLength(); } @@ -274,6 +258,8 @@ public class ScaleDialog extends JDialog { SymmetricComponent s = (SymmetricComponent) c; initialSize = s.getForeRadius() * 2; initialSize = MathUtil.max(initialSize, s.getAftRadius() * 2); + } else if ((selection instanceof ParallelStage) || (selection instanceof PodSet )) { + initialSize = selection.getRadiusOffset(); } } }