Add traversal policy for streamer config

This commit is contained in:
Remington Holder 2022-08-15 21:33:17 -04:00
parent 3171809ae4
commit dfdb214cc8

View File

@ -15,6 +15,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.CustomFocusTraversalPolicy;
import net.sf.openrocket.gui.adaptors.DoubleModel; import net.sf.openrocket.gui.adaptors.DoubleModel;
import net.sf.openrocket.gui.adaptors.EnumModel; import net.sf.openrocket.gui.adaptors.EnumModel;
import net.sf.openrocket.gui.adaptors.MaterialModel; import net.sf.openrocket.gui.adaptors.MaterialModel;
@ -57,6 +58,7 @@ public class StreamerConfig 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.6, 1.5)), "w 100lp, wrap"); 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 = 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.2)), "w 100lp, wrap 10lp"); 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 = 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.04, 0.25)), "w 100lp, wrap"); 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 = 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(2, 15)), "skip, w 100lp, wrap 10lp"); 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. //// The component material affects the weight of the component.
streamerMaterialCombo.setToolTipText(trans.get("StreamerCfg.combo.ttip.MaterialModel")); streamerMaterialCombo.setToolTipText(trans.get("StreamerCfg.combo.ttip.MaterialModel"));
panel.add(streamerMaterialCombo, "spanx 3, growx, wrap 15lp"); panel.add(streamerMaterialCombo, "spanx 3, growx, wrap 15lp");
order.add(streamerMaterialCombo);
// CD // CD
//// <html>Drag coefficient C<sub>D</sub>: //// <html>Drag coefficient C<sub>D</sub>:
@ -118,11 +124,13 @@ public class StreamerConfig 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());
JCheckBox check = new JCheckBox(m.getAutomaticAction()); JCheckBox check = new JCheckBox(m.getAutomaticAction());
//// Automatic //// Automatic
check.setText(trans.get("StreamerCfg.lbl.Automatic")); check.setText(trans.get("StreamerCfg.lbl.Automatic"));
panel.add(check, "skip, span, wrap"); panel.add(check, "skip, span, wrap");
order.add(check);
//// The drag coefficient is relative to the area of the streamer. //// The drag coefficient is relative to the area of the streamer.
panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"), panel.add(new StyledLabel(trans.get("StreamerCfg.lbl.longC1"),
@ -142,6 +150,7 @@ public class StreamerConfig extends RecoveryDeviceConfig {
final EnumModel<AxialMethod> methodModel = new EnumModel<AxialMethod>(component, "AxialMethod", AxialMethod.axialOffsetMethods ); final EnumModel<AxialMethod> methodModel = new EnumModel<AxialMethod>(component, "AxialMethod", AxialMethod.axialOffsetMethods );
final JComboBox<AxialMethod> positionCombo = new JComboBox<AxialMethod>( methodModel ); final 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("StreamerCfg.lbl.plus")), "right"); panel.add(new JLabel(trans.get("StreamerCfg.lbl.plus")), "right");
@ -151,6 +160,7 @@ public class StreamerConfig 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(
@ -167,6 +177,7 @@ public class StreamerConfig 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");
@ -182,6 +193,7 @@ public class StreamerConfig 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");
@ -190,6 +202,7 @@ public class StreamerConfig 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
@ -205,6 +218,7 @@ public class StreamerConfig 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
@ -214,6 +228,7 @@ public class StreamerConfig 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("StreamerCfg.lbl.seconds")), "wrap paragraph"); 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)); 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");
@ -249,6 +265,11 @@ public class StreamerConfig extends RecoveryDeviceConfig {
tabbedPane.insertTab(trans.get("StreamerCfg.tab.Radialpos"), null, positionTab(), tabbedPane.insertTab(trans.get("StreamerCfg.tab.Radialpos"), null, positionTab(),
trans.get("StreamerCfg.tab.ttip.Radialpos"), 1); trans.get("StreamerCfg.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);
} }
@ -267,6 +288,7 @@ public class StreamerConfig 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");
@ -279,6 +301,7 @@ public class StreamerConfig 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");
@ -294,6 +317,11 @@ public class StreamerConfig 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;
} }