From 430b448db3f14db6b6b6334dd48e922ab778f837 Mon Sep 17 00:00:00 2001 From: Remington Holder Date: Mon, 15 Aug 2022 15:09:19 -0400 Subject: [PATCH] Add traversal policy for parachute config --- .../gui/configdialog/ParachuteConfig.java | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java index 38fdffc3b..89095dd13 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java @@ -16,10 +16,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.DoubleModel; -import net.sf.openrocket.gui.adaptors.EnumModel; -import net.sf.openrocket.gui.adaptors.IntegerModel; -import net.sf.openrocket.gui.adaptors.MaterialModel; +import net.sf.openrocket.gui.adaptors.*; import net.sf.openrocket.gui.components.BasicSlider; import net.sf.openrocket.gui.components.HtmlLabel; import net.sf.openrocket.gui.components.StyledLabel; @@ -60,6 +57,7 @@ public class ParachuteConfig 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.4, 1.5)), "w 100lp, wrap"); @@ -85,7 +83,9 @@ public class ParachuteConfig extends RecoveryDeviceConfig { Material.Type.SURFACE)); surfaceMaterialCombo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel")); panel.add( surfaceMaterialCombo, "spanx 3, growx, wrap 15lp"); + order.add(surfaceMaterialCombo); + // Drag Coefficient: // CD JLabel label = new HtmlLabel(trans.get("ParachuteCfg.lbl.longA1")); String tip = trans.get("ParachuteCfg.lbl.longB1") + @@ -100,7 +100,8 @@ public class ParachuteConfig extends RecoveryDeviceConfig { spin.setToolTipText(tip); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx"); - + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); + //// Reset button JButton button = new SelectColorButton(trans.get("ParachuteCfg.but.Reset")); button.addActionListener(new ActionListener() { @@ -111,6 +112,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { } }); panel.add(button, "spanx, wrap 32lp"); + order.add(button); //// Shroud lines panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Shroudlines"), Style.BOLD), "wrap unrel"); @@ -122,6 +124,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { spin = new JSpinner(im.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); panel.add(spin, "growx, wrap"); + order.add(((SpinnerEditor) spin.getEditor()).getTextField()); //// Line length: panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Linelength"))); @@ -131,6 +134,7 @@ public class ParachuteConfig 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.4, 1.5)), "w 100lp, wrap"); @@ -140,6 +144,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { JComboBox shroudMaterialCombo = new JComboBox(new MaterialModel(panel, component, Material.Type.LINE, "LineMaterial")); panel.add( shroudMaterialCombo, "spanx 3, growx, wrap 15lp"); + order.add(shroudMaterialCombo); // Right side @@ -156,6 +161,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); JComboBox positionCombo = new JComboBox( methodModel ); panel.add( positionCombo, "spanx, growx, wrap"); + order.add(positionCombo); //// plus panel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")), "right"); @@ -165,6 +171,7 @@ public class ParachuteConfig 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( @@ -181,6 +188,7 @@ public class ParachuteConfig 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"); @@ -196,6 +204,7 @@ public class ParachuteConfig 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"); @@ -204,6 +213,7 @@ public class ParachuteConfig 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 panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Deployment"), Style.BOLD), "wrap unrel"); @@ -222,6 +232,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig { eventCombo.removeItem( DeployEvent.LOWER_STAGE_SEPARATION ); } panel.add(eventCombo, "spanx 3, growx, wrap"); + order.add(eventCombo); // ... and delay //// plus @@ -231,6 +242,7 @@ public class ParachuteConfig 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("ParachuteCfg.lbl.seconds")), "wrap paragraph"); @@ -246,6 +258,7 @@ public class ParachuteConfig 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"); @@ -265,6 +278,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig { tabbedPane.insertTab(trans.get("ParachuteCfg.tab.Radialpos"), null, positionTab(), trans.get("ParachuteCfg.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); + } @@ -280,6 +298,7 @@ public class ParachuteConfig 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"); @@ -293,6 +312,7 @@ public class ParachuteConfig 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"); @@ -308,7 +328,12 @@ public class ParachuteConfig 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; } }