Add traversal policy for parachute config

This commit is contained in:
Remington Holder 2022-08-15 15:09:19 -04:00
parent cda6fc7b7a
commit 430b448db3

View File

@ -16,10 +16,7 @@ import javax.swing.JSpinner;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.SpinnerEditor;
import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.*;
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.components.BasicSlider; import net.sf.openrocket.gui.components.BasicSlider;
import net.sf.openrocket.gui.components.HtmlLabel; import net.sf.openrocket.gui.components.HtmlLabel;
import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StyledLabel;
@ -60,6 +57,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
JSpinner spin = new JSpinner(m.getSpinnerModel()); JSpinner spin = new JSpinner(m.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(m), "growx"); panel.add(new UnitSelector(m), "growx");
panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)), "w 100lp, wrap"); 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)); Material.Type.SURFACE));
surfaceMaterialCombo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel")); surfaceMaterialCombo.setToolTipText(trans.get("ParachuteCfg.combo.MaterialModel"));
panel.add( surfaceMaterialCombo, "spanx 3, growx, wrap 15lp"); panel.add( surfaceMaterialCombo, "spanx 3, growx, wrap 15lp");
order.add(surfaceMaterialCombo);
// Drag Coefficient:
// CD // CD
JLabel label = new HtmlLabel(trans.get("ParachuteCfg.lbl.longA1")); JLabel label = new HtmlLabel(trans.get("ParachuteCfg.lbl.longA1"));
String tip = trans.get("ParachuteCfg.lbl.longB1") + String tip = trans.get("ParachuteCfg.lbl.longB1") +
@ -100,6 +100,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
spin.setToolTipText(tip); spin.setToolTipText(tip);
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
//// Reset button //// Reset button
JButton button = new SelectColorButton(trans.get("ParachuteCfg.but.Reset")); JButton button = new SelectColorButton(trans.get("ParachuteCfg.but.Reset"));
@ -111,6 +112,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
} }
}); });
panel.add(button, "spanx, wrap 32lp"); panel.add(button, "spanx, wrap 32lp");
order.add(button);
//// Shroud lines //// Shroud lines
panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Shroudlines"), Style.BOLD), "wrap unrel"); 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 = new JSpinner(im.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx, wrap"); panel.add(spin, "growx, wrap");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
//// Line length: //// Line length:
panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Linelength"))); panel.add(new JLabel(trans.get("ParachuteCfg.lbl.Linelength")));
@ -131,6 +134,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
spin = new JSpinner(m.getSpinnerModel()); spin = new JSpinner(m.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(m), "growx"); panel.add(new UnitSelector(m), "growx");
panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)), "w 100lp, wrap"); panel.add(new BasicSlider(m.getSliderModel(0, 0.4, 1.5)), "w 100lp, wrap");
@ -140,6 +144,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
JComboBox<Material> shroudMaterialCombo = JComboBox<Material> shroudMaterialCombo =
new JComboBox<Material>(new MaterialModel(panel, component, Material.Type.LINE, "LineMaterial")); new JComboBox<Material>(new MaterialModel(panel, component, Material.Type.LINE, "LineMaterial"));
panel.add( shroudMaterialCombo, "spanx 3, growx, wrap 15lp"); panel.add( shroudMaterialCombo, "spanx 3, growx, wrap 15lp");
order.add(shroudMaterialCombo);
// Right side // Right side
@ -156,6 +161,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
new EnumModel<AxialMethod>(component, "AxialMethod", AxialMethod.axialOffsetMethods ); new EnumModel<AxialMethod>(component, "AxialMethod", AxialMethod.axialOffsetMethods );
JComboBox<AxialMethod> positionCombo = new JComboBox<AxialMethod>( methodModel ); JComboBox<AxialMethod> positionCombo = new JComboBox<AxialMethod>( methodModel );
panel.add( positionCombo, "spanx, growx, wrap"); panel.add( positionCombo, "spanx, growx, wrap");
order.add(positionCombo);
//// plus //// plus
panel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")), "right"); panel.add(new JLabel(trans.get("ParachuteCfg.lbl.plus")), "right");
@ -165,6 +171,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
focusElement = spin; focusElement = spin;
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(m), "growx"); panel.add(new UnitSelector(m), "growx");
panel.add(new BasicSlider(m.getSliderModel( panel.add(new BasicSlider(m.getSliderModel(
@ -181,6 +188,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
spin = new JSpinner(m.getSpinnerModel()); spin = new JSpinner(m.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(m), "growx"); panel.add(new UnitSelector(m), "growx");
panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 0.5)), "w 100lp, wrap"); 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 = new JSpinner(od.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(od), "growx"); panel.add(new UnitSelector(od), "growx");
panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap"); 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()); JCheckBox checkAutoPackedRadius = new JCheckBox(od.getAutomaticAction());
checkAutoPackedRadius.setText(trans.get("TransitionCfg.checkbox.Automatic")); checkAutoPackedRadius.setText(trans.get("TransitionCfg.checkbox.Automatic"));
panel.add(checkAutoPackedRadius, "skip, span 2, wrap 5lp"); panel.add(checkAutoPackedRadius, "skip, span 2, wrap 5lp");
order.add(checkAutoPackedRadius);
//// Deployment //// Deployment
panel.add(new StyledLabel(trans.get("ParachuteCfg.lbl.Deployment"), Style.BOLD), "wrap unrel"); 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 ); eventCombo.removeItem( DeployEvent.LOWER_STAGE_SEPARATION );
} }
panel.add(eventCombo, "spanx 3, growx, wrap"); panel.add(eventCombo, "spanx 3, growx, wrap");
order.add(eventCombo);
// ... and delay // ... and delay
//// plus //// plus
@ -231,6 +242,7 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
spin = new JSpinner(m.getSpinnerModel()); spin = new JSpinner(m.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin, 3)); spin.setEditor(new SpinnerEditor(spin, 3));
panel.add(spin, "spanx, split"); panel.add(spin, "spanx, split");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
//// seconds //// seconds
panel.add(new JLabel(trans.get("ParachuteCfg.lbl.seconds")), "wrap paragraph"); 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)); spin.setEditor(new SpinnerEditor(spin));
altitudeComponents.add(spin); altitudeComponents.add(spin);
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
UnitSelector unit = new UnitSelector(m); UnitSelector unit = new UnitSelector(m);
altitudeComponents.add(unit); altitudeComponents.add(unit);
panel.add(unit, "growx"); panel.add(unit, "growx");
@ -265,6 +278,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
tabbedPane.insertTab(trans.get("ParachuteCfg.tab.Radialpos"), null, positionTab(), tabbedPane.insertTab(trans.get("ParachuteCfg.tab.Radialpos"), null, positionTab(),
trans.get("ParachuteCfg.tab.ttip.Radialpos"), 1); trans.get("ParachuteCfg.tab.ttip.Radialpos"), 1);
tabbedPane.setSelectedIndex(0); 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()); JSpinner spin = new JSpinner(m.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(m), "growx"); panel.add(new UnitSelector(m), "growx");
panel.add(new BasicSlider(m.getSliderModel(0, 0.1, 1.0)), "w 100lp, wrap"); 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 = new JSpinner(m.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin)); spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx"); panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(m), "growx"); panel.add(new UnitSelector(m), "growx");
panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap"); panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap");
@ -308,6 +328,11 @@ public class ParachuteConfig extends RecoveryDeviceConfig {
} }
}); });
panel.add(button, "spanx, right"); 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; return panel;
} }