From dfdb214cc8afdbcfcd880a7e7a82e74b64ecb798 Mon Sep 17 00:00:00 2001 From: Remington Holder Date: Mon, 15 Aug 2022 21:33:17 -0400 Subject: [PATCH] Add traversal policy for streamer config --- .../gui/configdialog/StreamerConfig.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java index 504c6e712..9699f0f4b 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java @@ -15,6 +15,7 @@ import javax.swing.JSpinner; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.SpinnerEditor; +import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.adaptors.MaterialModel; @@ -57,6 +58,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { JSpinner spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.6, 1.5)), "w 100lp, wrap"); @@ -68,6 +70,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.2)), "w 100lp, wrap 10lp"); @@ -79,6 +82,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.04, 0.25)), "w 100lp, wrap"); @@ -90,6 +94,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); // panel.add(new UnitSelector(m),"growx"); panel.add(new BasicSlider(m.getSliderModel(2, 15)), "skip, w 100lp, wrap 10lp"); @@ -101,6 +106,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { //// The component material affects the weight of the component. streamerMaterialCombo.setToolTipText(trans.get("StreamerCfg.combo.ttip.MaterialModel")); panel.add(streamerMaterialCombo, "spanx 3, growx, wrap 15lp"); + order.add(streamerMaterialCombo); // CD //// Drag coefficient CD: @@ -118,11 +124,13 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin.setToolTipText(tip); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); JCheckBox check = new JCheckBox(m.getAutomaticAction()); //// Automatic check.setText(trans.get("StreamerCfg.lbl.Automatic")); panel.add(check, "skip, span, wrap"); + order.add(check); //// The drag coefficient is relative to the area of the streamer. panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"), @@ -142,6 +150,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { final EnumModel methodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); final JComboBox positionCombo = new JComboBox( methodModel ); panel.add( positionCombo, "spanx, growx, wrap"); + order.add(positionCombo); //// plus panel.add(new JLabel(trans.get("StreamerCfg.lbl.plus")), "right"); @@ -151,6 +160,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin.setEditor(new SpinnerEditor(spin)); focusElement = spin; panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel( @@ -167,6 +177,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 100lp, wrap"); @@ -182,6 +193,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin = new JSpinner(od.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(od), "growx"); panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap"); @@ -190,6 +202,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction()); checkAutoPackedRadius.setText(trans.get("TransitionCfg.checkbox.Automatic")); panel.add(checkAutoPackedRadius, "skip, span 2, wrap 5lp"); + order.add(checkAutoPackedRadius); //// Deployment @@ -205,6 +218,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { eventCombo.removeItem( DeployEvent.LOWER_STAGE_SEPARATION ); } panel.add( eventCombo, "spanx 3, growx, wrap"); + order.add(eventCombo); // ... and delay //// plus @@ -214,6 +228,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin, 3)); panel.add(spin, "spanx, split"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); //// seconds panel.add(new JLabel(trans.get("StreamerCfg.lbl.seconds")), "wrap paragraph"); @@ -229,6 +244,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin.setEditor(new SpinnerEditor(spin)); altitudeComponents.add(spin); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); UnitSelector unit = new UnitSelector(m); altitudeComponents.add(unit); panel.add(unit, "growx"); @@ -249,6 +265,11 @@ public class StreamerConfig extends RecoveryDeviceConfig { tabbedPane.insertTab(trans.get("StreamerCfg.tab.Radialpos"), null, positionTab(), trans.get("StreamerCfg.tab.ttip.Radialpos"), 1); tabbedPane.setSelectedIndex(0); + + // Apply the custom focus travel policy to this config dialog + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); + } @@ -267,6 +288,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { JSpinner spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)), "w 100lp, wrap"); @@ -279,6 +301,7 @@ public class StreamerConfig extends RecoveryDeviceConfig { spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); panel.add(new UnitSelector(m), "growx"); panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap"); @@ -294,7 +317,12 @@ public class StreamerConfig extends RecoveryDeviceConfig { } }); panel.add(button, "spanx, right"); - + order.add(button); + + // Apply the custom focus travel policy to this panel + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); + return panel; } }