Add traversal policy for elliptical fin set config

This commit is contained in:
Remington Holder 2022-08-15 10:45:22 -04:00
parent 8954ca7a7d
commit cfe16020a4
2 changed files with 49 additions and 8 deletions

View File

@ -15,6 +15,7 @@ import javax.swing.SwingConstants;
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.IntegerModel;
@ -51,6 +52,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
spin = new JSpinner(im.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx, wrap");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
//// Base rotation
@ -61,6 +63,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
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");
@ -78,6 +81,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
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(-FinSet.MAX_CANT_RADIANS, FinSet.MAX_CANT_RADIANS)),
@ -93,6 +97,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
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.05, 0.2)), "w 100lp, wrap");
@ -106,6 +111,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
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.05, 0.2)), "w 100lp, wrap");
@ -118,6 +124,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
final EnumModel<AxialMethod> axialMethodModel = new EnumModel<AxialMethod>(component, "AxialMethod", AxialMethod.axialOffsetMethods );
final JComboBox<AxialMethod> axialMethodCombo = new JComboBox<AxialMethod>( axialMethodModel );
panel.add(axialMethodCombo, "spanx, growx, wrap");
order.add(axialMethodCombo);
//// plus
panel.add(new JLabel(trans.get("EllipticalFinSetCfg.plus")), "right");
@ -126,6 +133,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
spin = new JSpinner(axialOffsetModel.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
axialMethodCombo.addActionListener(new ActionListener() {
@Override
@ -157,7 +165,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
JComboBox<FinSet.CrossSection> sectionCombo = new JComboBox<FinSet.CrossSection>(
new EnumModel<FinSet.CrossSection>(component, "CrossSection"));
panel.add( sectionCombo, "growx, wrap unrel");
order.add(sectionCombo);
//// Thickness:
panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Thickness")));
@ -167,6 +175,7 @@ public class EllipticalFinSetConfig extends FinSetConfig {
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.01)), "w 100lp, wrap 30lp");
@ -176,7 +185,11 @@ public class EllipticalFinSetConfig extends FinSetConfig {
//// Material
MaterialPanel materialPanel = new MaterialPanel(component, document, Material.Type.BULK);
panel.add(materialPanel, "span, wrap");
order.add(materialPanel.getMaterialCombo());
if (materialPanel.getFinishCombo() != null) {
order.add(materialPanel.getFinishCombo());
}
panel.add(filletMaterialPanel(), "span, wrap");
@ -190,6 +203,10 @@ public class EllipticalFinSetConfig extends FinSetConfig {
tabbedPane.insertTab(trans.get("EllipticalFinSetCfg.General"), null, mainPanel,
trans.get("EllipticalFinSetCfg.Generalproperties"), 0);
tabbedPane.setSelectedIndex(0);
// Apply the custom focus travel policy to this config dialog
CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order);
parent.setFocusTraversalPolicy(policy);
}
}

View File

@ -20,6 +20,7 @@ import javax.swing.SwingUtilities;
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;
@ -134,11 +135,15 @@ public abstract class FinSetConfig extends RocketComponentConfig {
});
split.setEnabled(((FinSet) component).getFinCount() > 1);
if (convert == null)
if (convert == null) {
addButtons(split);
else
order.add(split);
}
else {
addButtons(split, convert);
order.add(split);
order.add(convert);
}
}
private JPanel finTabPanel() {
@ -175,10 +180,11 @@ public abstract class FinSetConfig extends RocketComponentConfig {
panel.add(label, "gapleft para, gapright 40lp, growx 1");
final DoubleModel mtl = new DoubleModel(component, "TabLength", UnitGroup.UNITS_LENGTH, 0);
spin = new JSpinner(mtl.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx 1");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(mtl), "growx 1");
panel.add(new BasicSlider(mtl.getSliderModel(DoubleModel.ZERO, length)),
@ -196,6 +202,7 @@ public abstract class FinSetConfig extends RocketComponentConfig {
spin = new JSpinner(tabHeightModel.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(tabHeightModel), "growx");
panel.add(new BasicSlider(tabHeightModel.getSliderModel(DoubleModel.ZERO, length2)),
@ -212,6 +219,7 @@ public abstract class FinSetConfig extends RocketComponentConfig {
spin = new JSpinner(mts.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "growx");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
panel.add(new UnitSelector(mts), "growx");
panel.add(new BasicSlider(mts.getSliderModel(length_2, length2)), "w 100lp, growx 5, wrap");
@ -226,6 +234,7 @@ public abstract class FinSetConfig extends RocketComponentConfig {
JComboBox<AxialMethod> enumCombo = new JComboBox<>(em);
panel.add( enumCombo, "spanx 3, growx, wrap para");
order.add(enumCombo);
// Calculate fin tab height, length, and position
autoCalc = new SelectColorButton(trans.get("FinSetConfig.but.AutoCalc"));
@ -284,7 +293,12 @@ public abstract class FinSetConfig extends RocketComponentConfig {
}
});
panel.add(autoCalc, "skip 1, spanx");
order.add(autoCalc);
// Apply the custom focus travel policy to this panel
CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order);
parent.setFocusTraversalPolicy(policy);
return panel;
}
@ -499,6 +513,8 @@ public abstract class FinSetConfig extends RocketComponentConfig {
trans.get("FinsetCfg.ttip.Finfillets2") +
trans.get("FinsetCfg.ttip.Finfillets3");
filletPanel.setBorder(BorderFactory.createTitledBorder("Root Fillets"));
// Fillet Radius:
filletPanel.add(new JLabel(trans.get("FinSetCfg.lbl.Filletradius")));
DoubleModel m = new DoubleModel(component, "FilletRadius", UnitGroup.UNITS_LENGTH, 0);
@ -507,13 +523,15 @@ public abstract class FinSetConfig extends RocketComponentConfig {
spin.setEditor(new SpinnerEditor(spin));
spin.setToolTipText(tip);
filletPanel.add(spin, "growx, w 40");
order.add(((SpinnerEditor) spin.getEditor()).getTextField());
UnitSelector us = new UnitSelector(m);
filletPanel.add(us, "growx");
us.setToolTipText(tip);
BasicSlider bs =new BasicSlider(m.getSliderModel(0, 10));
filletPanel.add(bs, "w 100lp, wrap para");
bs.setToolTipText(tip);
// Fillet Material:
JLabel label = new JLabel(trans.get("FinSetCfg.lbl.Finfilletmaterial"));
label.setToolTipText(tip);
//// The component material affects the weight of the component.
@ -525,7 +543,13 @@ public abstract class FinSetConfig extends RocketComponentConfig {
//// The component material affects the weight of the component.
materialCombo.setToolTipText(trans.get("RocketCompCfg.combo.ttip.componentmaterialaffects"));
filletPanel.add( materialCombo, "spanx 4, growx, wrap paragraph");
order.add(materialCombo);
filletPanel.setToolTipText(tip);
// Apply the custom focus travel policy to this panel
CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order);
parent.setFocusTraversalPolicy(policy);
return filletPanel;
}
}