diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 3366c7044..050ccfa1c 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -1025,6 +1025,8 @@ RailBtnCfg.tab.General = General RailBtnCfg.tab.GeneralProp = General properties ! MassComponentConfig +MassComponentCfg.lbl.Attributes = Attributes +MassComponentCfg.lbl.Placement = Placement MassComponentCfg.lbl.Mass = Mass: MassComponentCfg.lbl.Density = Approximate density: MassComponentCfg.lbl.Length = Length: @@ -1076,7 +1078,10 @@ NoseConeCfg.tab.ttip.Shoulder = Shoulder properties ! ParachuteConfig Parachute.Parachute = Parachute -ParachuteCfg.lbl.Canopy = Canopy: +ParachuteCfg.lbl.Canopy = Canopy +ParachuteCfg.lbl.Shroudlines = Shroud lines +ParachuteCfg.lbl.Placement = Placement +ParachuteCfg.lbl.Deployment = Deployment ParachuteCfg.lbl.CanopyShape = Canopy shape: ParachuteCfg.lbl.Diameter = Diameter: ParachuteCfg.lbl.SpillDia = Spill hole diameter: @@ -1086,7 +1091,6 @@ ParachuteCfg.lbl.longA1 = Drag coefficient CD: ParachuteCfg.lbl.longB1 = The drag coefficient relative to the total area of the parachute.
ParachuteCfg.lbl.longB2 = A larger drag coefficient yields a slowed descent rate. ParachuteCfg.lbl.longB3 = A typical value for parachutes is 0.8. -ParachuteCfg.lbl.Shroudlines = Shroud lines: ParachuteCfg.lbl.Numberoflines = Number of lines: ParachuteCfg.lbl.Linelength = Line length: ParachuteCfg.lbl.Material = Material: @@ -1107,6 +1111,8 @@ ParachuteCfg.but.Reset = Reset ParachuteCfg.lbl.plusdelay = plus ! ShockCordConfig +ShockCordCfg.lbl.ShockcordAttributes = Attributes +ShockCordCfg.lbl.ShockcordPlacement = Placement ShockCordCfg.lbl.Shockcordlength = Shock cord length: ShockCordCfg.lbl.Shockcordmaterial = Shock cord material: ShockCordCfg.lbl.Posrelativeto = Position relative to: @@ -1130,6 +1136,9 @@ SleeveCfg.tab.General = General SleeveCfg.tab.Generalproperties = General properties ! StreamerConfig +StreamerCfg.lbl.Attributes = Attributes +StreamerCfg.lbl.Placement = Placement +StreamerCfg.lbl.Deployment = Deployment StreamerCfg.lbl.Striplength = Strip length: StreamerCfg.lbl.Stripwidth = Strip width: StreamerCfg.lbl.Striparea = Strip area: diff --git a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java index 930e35993..5bd41ba4b 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java @@ -16,6 +16,7 @@ import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.EnumModel; 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.rocketcomponent.MassComponent; @@ -32,10 +33,13 @@ public class MassComponentConfig extends RocketComponentConfig { public MassComponentConfig(OpenRocketDocument d, RocketComponent component) { super(d, component); - - + + //// Left side JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); - + + //// Attributes + panel.add(new StyledLabel(trans.get("MassComponentCfg.lbl.Attributes"), StyledLabel.Style.BOLD), "wrap unrel"); + //// Mass component type panel.add(new JLabel(trans.get("MassComponentCfg.lbl.type"))); @@ -51,7 +55,7 @@ public class MassComponentConfig extends RocketComponentConfig { MassComponent.MassComponentType.RECOVERYHARDWARE, MassComponent.MassComponentType.BATTERY})); - panel.add(typecombo, "spanx, growx, wrap"); + panel.add(typecombo, "spanx, wrap"); //// Mass panel.add(new JLabel(trans.get("MassComponentCfg.lbl.Mass"))); @@ -112,24 +116,31 @@ public class MassComponentConfig extends RocketComponentConfig { checkAutoPackedRadius.setText(trans.get("TransitionCfg.checkbox.Automatic")); panel.add(checkAutoPackedRadius, "skip, span 2, wrap"); - - //// Position + + //// Right side + JPanel panel2 = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); + + //// Placement + panel2.add(new StyledLabel(trans.get("MassComponentCfg.lbl.Placement"), StyledLabel.Style.BOLD), "wrap unrel"); + //// Position relative to: - panel.add(new JLabel(trans.get("MassComponentCfg.lbl.PosRelativeto"))); + panel2.add(new JLabel(trans.get("MassComponentCfg.lbl.PosRelativeto"))); final EnumModel methodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); final JComboBox methodCombo = new JComboBox( methodModel ); - panel.add(methodCombo, "spanx, growx, wrap"); + panel2.add(methodCombo, "spanx, growx, wrap"); + //// plus - panel.add(new JLabel(trans.get("MassComponentCfg.lbl.plus")), "right"); + panel2.add(new JLabel(trans.get("MassComponentCfg.lbl.plus")), "right"); m = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); - panel.add(spin, "growx"); + panel2.add(spin, "growx"); - panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel( + panel2.add(new UnitSelector(m), "growx"); + panel2.add(new BasicSlider(m.getSliderModel( new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE), new DoubleModel(component.getParent(), "Length"))), "w 100lp, wrap"); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java index dcbcf9ad2..6abdc1fa0 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java @@ -31,7 +31,6 @@ import net.sf.openrocket.rocketcomponent.DeploymentConfiguration; import net.sf.openrocket.rocketcomponent.DeploymentConfiguration.DeployEvent; import net.sf.openrocket.rocketcomponent.Parachute; import net.sf.openrocket.rocketcomponent.RocketComponent; -import net.sf.openrocket.rocketcomponent.Transition; import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -44,12 +43,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig { public ParachuteConfig(OpenRocketDocument d, final RocketComponent component) { super(d, component); Parachute parachute = (Parachute) component; - + + // Left Side JPanel primary = new JPanel(new MigLayout()); - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); - - + //// Canopy panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Canopy"), Style.BOLD), "wrap unrel"); @@ -63,7 +61,30 @@ public class ParachuteConfig extends RecoveryDeviceConfig { panel.add(spin, "growx"); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)), "w 100lp, wrap"); - + + // TODO COMPLETE Spill hole development +/* panel.add(new JLabel(trans.get("ParachuteCfg.lbl.SpillDia") + CommonStrings.daggerDouble)); + + m = new DoubleModel(component, "SpillDia", UnitGroup.UNITS_LENGTH, 0, 0.08); + // The "max" value does not affect the slider maximum, and manual entry above that value is possible. + + spin = new JSpinner(m.getSpinnerModel()); + spin.setEditor(new SpinnerEditor(spin)); + panel.add(spin, "growx"); + panel.add(new UnitSelector(m), "growx"); + panel.add(new BasicSlider(m.getSliderModel(0, 0.01, .1)), "w 100lp, wrap"); + // The slider maximum value is "max", however, manual entry above that value is possible. +*/ + // TODO END Spill hole development + + //// Material: + panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material"))); + + JComboBox surfaceMaterialCombo = new JComboBox(new MaterialModel(panel, component, + Material.Type.SURFACE)); + surfaceMaterialCombo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel")); + panel.add( surfaceMaterialCombo, "spanx 3, growx, wrap 15lp"); + // CD JLabel label = new HtmlLabel(trans.get("ParachuteCfg.lbl.longA1")); String tip = trans.get("ParachuteCfg.lbl.longB1") + @@ -88,19 +109,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { p.setCD(Parachute.DEFAULT_CD); } }); - panel.add(button, "spanx, wrap para"); - - //// Material: - panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material"))); - - JComboBox surfaceMaterialCombo = new JComboBox(new MaterialModel(panel, component, - Material.Type.SURFACE)); - surfaceMaterialCombo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel")); - panel.add( surfaceMaterialCombo, "spanx 3, growx, wrap 30lp"); - - - - + panel.add(button, "spanx, wrap 32lp"); + //// Shroud lines panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Shroudlines"), Style.BOLD), "wrap unrel"); @@ -126,23 +136,23 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// Material: panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Material"))); - JComboBox shroudMaterialCombo = new JComboBox(new MaterialModel(panel, component, Material.Type.LINE, - "LineMaterial")); - panel.add( shroudMaterialCombo, "spanx 3, growx, wrap"); - - + JComboBox shroudMaterialCombo = + new JComboBox(new MaterialModel(panel, component, Material.Type.LINE, "LineMaterial")); + panel.add( shroudMaterialCombo, "spanx 3, growx, wrap 15lp"); + + // Right side primary.add(panel, "grow, gapright 20lp"); panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); - - - - - //// Position + + //// Placement + panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Placement"), Style.BOLD), "wrap unrel"); + //// Position relative to: panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Posrelativeto"))); - final EnumModel methodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); + final EnumModel methodModel = + new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); JComboBox positionCombo = new JComboBox( methodModel ); panel.add( positionCombo, "spanx, growx, wrap"); @@ -160,7 +170,6 @@ public class ParachuteConfig extends RecoveryDeviceConfig { new DoubleModel(component.getParent(), "Length"))), "w 100lp, wrap"); - //// Spatial length //// Packed length: panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Packedlength"))); @@ -192,17 +201,20 @@ public class ParachuteConfig extends RecoveryDeviceConfig { ////// Automatic JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); checkAutoPackedRadius.setText(trans.get("TransitionCfg.checkbox.Automatic")); - panel.add(checkAutoPackedRadius, "skip, span 2, wrap 30lp"); - - + panel.add(checkAutoPackedRadius, "skip, span 2, wrap 5lp"); + //// Deployment + panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Deployment"), Style.BOLD), "wrap unrel"); + //// Deploys at: panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Deploysat") + " " + CommonStrings.dagger), ""); DeploymentConfiguration deploymentConfig = parachute.getDeploymentConfigurations().getDefault(); // this issues a warning because EnumModel ipmlements ComboBoxModel without a parameter... - ComboBoxModel deployOptionsModel = new EnumModel(deploymentConfig, "DeployEvent"); - JComboBox eventCombo = new JComboBox( deployOptionsModel ); + ComboBoxModel deployOptionsModel = + new EnumModel(deploymentConfig, "DeployEvent"); + JComboBox eventCombo = + new JComboBox( deployOptionsModel ); if( (component.getStageNumber() + 1 ) == d.getRocket().getStageCount() ){ // This is the bottom stage: Restrict deployment options. eventCombo.removeItem( DeployEvent.LOWER_STAGE_SEPARATION ); @@ -221,7 +233,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { //// seconds panel.add(new JLabel(trans.get("ParachuteCfg.lbl.seconds")), "wrap paragraph"); - // Altitude: + //// Altitude: label = new JLabel(trans.get("ParachuteCfg.lbl.Altitude") + CommonStrings.dagger); altitudeComponents.add(label); panel.add(label); @@ -252,10 +264,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { trans.get("ParachuteCfg.tab.ttip.Radialpos"), 1); tabbedPane.setSelectedIndex(0); } - - - - + + protected JPanel positionTab() { JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java index d341b5d76..c970d3f4a 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java @@ -9,6 +9,7 @@ import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.EnumModel; 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.material.Material; @@ -28,14 +29,17 @@ public class ShockCordConfig extends RocketComponentConfig { public ShockCordConfig(OpenRocketDocument d, RocketComponent component) { super(d, component); - - JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + JLabel label; DoubleModel m; JSpinner spin; ////// Left side - + JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); + + //// Attributes + panel.add(new StyledLabel(trans.get("ShockCordCfg.lbl.ShockcordAttributes"), StyledLabel.Style.BOLD), "wrap unrel"); + // Cord length //// Shock cord length label = new JLabel(trans.get("ShockCordCfg.lbl.Shockcordlength")); @@ -49,7 +53,6 @@ public class ShockCordConfig extends RocketComponentConfig { panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 1, 10)), "w 100lp, wrap"); - // Material //// Shock cord material: @@ -61,8 +64,9 @@ public class ShockCordConfig extends RocketComponentConfig { JPanel panel2 = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); panel.add(panel2, "cell 4 0, gapleft paragraph, aligny 0%, spany"); + //// Placement + panel2.add(new StyledLabel(trans.get("ShockCordCfg.lbl.ShockcordPlacement"), StyledLabel.Style.BOLD), "wrap unrel"); - //// Position //// Position relative to: panel2.add(new JLabel(trans.get("ShockCordCfg.lbl.Posrelativeto"))); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java index c1ed1501e..2248c5aa4 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java @@ -39,12 +39,15 @@ public class StreamerConfig extends RecoveryDeviceConfig { public StreamerConfig(OpenRocketDocument d, final RocketComponent component) { super(d, component); Streamer streamer = (Streamer) component; - + + // Left side JPanel primary = new JPanel(new MigLayout()); JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); - + //// Attributes + panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.Attributes"), StyledLabel.Style.BOLD), "wrap unrel"); + //// Strip length: panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striplength"))); @@ -65,10 +68,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); panel.add(new UnitSelector(m), "growx"); - panel.add(new BasicSlider(m.getSliderModel(0, 0.2)), "w 100lp, wrap 20lp"); - - - + panel.add(new BasicSlider(m.getSliderModel(0, 0.2)), "w 100lp, wrap 10lp"); + //// Strip area: panel.add(new JLabel(trans.get("StreamerCfg.lbl.Striparea"))); @@ -89,9 +90,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); // panel.add(new UnitSelector(m),"growx"); - panel.add(new BasicSlider(m.getSliderModel(2, 15)), "skip, w 100lp, wrap 20lp"); - - + panel.add(new BasicSlider(m.getSliderModel(2, 15)), "skip, w 100lp, wrap 10lp"); + //// Material: panel.add(new JLabel(trans.get("StreamerCfg.lbl.Material"))); @@ -99,10 +99,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { Material.Type.SURFACE)); //// The component material affects the weight of the component. streamerMaterialCombo.setToolTipText(trans.get("StreamerCfg.combo.ttip.MaterialModel")); - panel.add(streamerMaterialCombo, "spanx 3, growx, wrap 20lp"); - - - + panel.add(streamerMaterialCombo, "spanx 3, growx, wrap 15lp"); + // CD //// Drag coefficient CD: JLabel label = new HtmlLabel(trans.get("StreamerCfg.lbl.longA1")); @@ -127,17 +125,16 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// The drag coefficient is relative to the area of the streamer. panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"), - -2), "span, wrap"); - - + -1), "span, wrap"); + + // Right side primary.add(panel, "grow, gapright 20lp"); panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", "")); - - - - //// Position + //// Placement + panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.Placement"), StyledLabel.Style.BOLD), "wrap unrel"); + //// Position relative to: panel.add(new JLabel(trans.get("StreamerCfg.lbl.Posrelativeto"))); @@ -190,10 +187,12 @@ public class StreamerConfig extends RecoveryDeviceConfig { ////// Automatic JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); checkAutoPackedRadius.setText(trans.get("TransitionCfg.checkbox.Automatic")); - panel.add(checkAutoPackedRadius, "skip, span 2, wrap 30lp"); + panel.add(checkAutoPackedRadius, "skip, span 2, wrap 5lp"); //// Deployment + panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.Deployment"), StyledLabel.Style.BOLD), "wrap unrel"); + //// Deploys at: panel.add(new JLabel(trans.get("StreamerCfg.lbl.Deploysat") + " " + CommonStrings.dagger), ""); @@ -234,8 +233,8 @@ public class StreamerConfig extends RecoveryDeviceConfig { BasicSlider slider = new BasicSlider(m.getSliderModel(100, 1000)); altitudeComponents.add(slider); panel.add(slider, "w 100lp, wrap"); - - panel.add(new StyledLabel(CommonStrings.override_description, -1), "skip 1, spanx, wrap para"); + + panel.add(new StyledLabel(CommonStrings.override_description, -1), "spanx, wrap para"); primary.add(panel, "grow"); @@ -257,7 +256,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { protected JPanel positionTab() { JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); - //// Radial position + //// Radial position //// Radial distance: panel.add(new JLabel(trans.get("StreamerCfg.lbl.Radialdistance"))); @@ -269,9 +268,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)), "w 100lp, wrap"); - - - //// Radial direction + //// Radial direction: panel.add(new JLabel(trans.get("StreamerCfg.lbl.Radialdirection")));