From 099ab09bcc31a8bbb104a4e2bb8fa62b0db6b138 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sun, 28 Aug 2022 15:00:02 +0200 Subject: [PATCH] Fix some bugs in the custom focus traversal policy Sorry, I don't want to split this all up in atomic commits... --- .../gui/configdialog/AppearancePanel.java | 11 +++++++---- .../gui/configdialog/AxialStageConfig.java | 12 ++++++------ .../gui/configdialog/BodyTubeConfig.java | 2 +- .../gui/configdialog/BulkheadConfig.java | 6 ++++++ .../gui/configdialog/CenteringRingConfig.java | 6 ++++++ .../gui/configdialog/ComponentAssemblyConfig.java | 7 ++++++- .../gui/configdialog/EllipticalFinSetConfig.java | 1 + .../openrocket/gui/configdialog/FinSetConfig.java | 14 +------------- .../gui/configdialog/FreeformFinSetConfig.java | 9 +++++---- .../gui/configdialog/InnerTubeConfig.java | 10 +--------- .../gui/configdialog/LaunchLugConfig.java | 2 +- .../gui/configdialog/MassComponentConfig.java | 6 +----- .../gui/configdialog/NoseConeConfig.java | 2 +- .../gui/configdialog/ParachuteConfig.java | 6 +----- .../gui/configdialog/RailButtonConfig.java | 10 +++++----- .../gui/configdialog/RingComponentConfig.java | 6 +----- .../gui/configdialog/RocketComponentConfig.java | 5 ++++- .../gui/configdialog/ShockCordConfig.java | 5 +---- .../openrocket/gui/configdialog/SleeveConfig.java | 6 ++++++ .../gui/configdialog/StreamerConfig.java | 6 +----- .../configdialog/ThicknessRingComponentConfig.java | 6 ++++++ .../gui/configdialog/TransitionConfig.java | 2 +- .../gui/configdialog/TrapezoidFinSetConfig.java | 5 +++-- .../gui/configdialog/TubeFinSetConfig.java | 2 +- 24 files changed, 73 insertions(+), 74 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java b/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java index 42f4cc225..f19076c96 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java @@ -287,6 +287,7 @@ public class AppearancePanel extends JPanel { BooleanModel fDefault = new BooleanModel(c.getColor() == null); + final JButton saveAsDefault; {// Style Header Row final JCheckBox colorDefault = new JCheckBox(fDefault); colorDefault.addActionListener(new ActionListener() { @@ -311,9 +312,9 @@ public class AppearancePanel extends JPanel { add(colorDefault); order.add(colorDefault); - JButton button = new SelectColorButton( + saveAsDefault = new SelectColorButton( trans.get("RocketCompCfg.but.Saveasdefstyle")); - button.addActionListener(new ActionListener() { + saveAsDefault.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (c.getColor() != null) { @@ -328,8 +329,8 @@ public class AppearancePanel extends JPanel { } } }); - fDefault.addEnableComponent(button, false); - add(button, "span 2, align right, wrap"); + fDefault.addEnableComponent(saveAsDefault, false); + add(saveAsDefault, "span 2, align right, wrap"); } {// Figure Color @@ -339,6 +340,8 @@ public class AppearancePanel extends JPanel { order.add(figureColorButton); } + order.add(saveAsDefault); + {// Line Style add(new JLabel(trans.get("RocketCompCfg.lbl.Complinestyle"))); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java index c1202144c..611e67920 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/AxialStageConfig.java @@ -36,6 +36,11 @@ public class AxialStageConfig extends ComponentAssemblyConfig { trans.get("StageConfig.tab.Separation.ttip"), 0); tabbedPane.setSelectedIndex(0); } + + // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); } @@ -47,8 +52,7 @@ public class AxialStageConfig extends ComponentAssemblyConfig { StageSeparationConfiguration sepConfig = stage.getSeparationConfiguration(); - JComboBox combo = new JComboBox( - new EnumModel( sepConfig, "SeparationEvent", SeparationEvent.values())); + JComboBox combo = new JComboBox<>(new EnumModel<>( sepConfig, "SeparationEvent", SeparationEvent.values())); //combo.setSelectedItem(sepConfig); panel.add(combo, ""); @@ -68,10 +72,6 @@ public class AxialStageConfig extends ComponentAssemblyConfig { panel.add(new StyledLabel(CommonStrings.override_description, -1), "spanx, wrap para"); - // Apply the custom focus travel policy to this config dialog - CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); - parent.setFocusTraversalPolicy(policy); - return panel; } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java index ef25042e7..5e6adf427 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/BodyTubeConfig.java @@ -120,9 +120,9 @@ public class BodyTubeConfig extends RocketComponentConfig { trans.get("BodyTubecfg.tab.Motormountconf"), 1); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } @Override diff --git a/swing/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java index 17d5163bf..1659a721c 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java @@ -5,6 +5,7 @@ import javax.swing.JDialog; import javax.swing.JPanel; import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; @@ -26,6 +27,11 @@ public class BulkheadConfig extends RingComponentConfig { tabbedPane.insertTab(trans.get("BulkheadCfg.tab.General"), null, tab, trans.get("BulkheadCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); + + // Apply the custom focus travel policy to this panel + order.add(closeButton); // Make sure the close button is the last component + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); } } \ No newline at end of file diff --git a/swing/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java index 048116ec1..548bf4b86 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/CenteringRingConfig.java @@ -5,6 +5,7 @@ import javax.swing.JDialog; import javax.swing.JPanel; import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; @@ -28,6 +29,11 @@ public class CenteringRingConfig extends RingComponentConfig { tabbedPane.insertTab(trans.get("CenteringRingCfg.tab.General"), null, tab, trans.get("CenteringRingCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); + + // Apply the custom focus travel policy to this panel + order.add(closeButton); // Make sure the close button is the last component + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); } } \ No newline at end of file diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java index 4697b2717..f6554f544 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ComponentAssemblyConfig.java @@ -58,6 +58,7 @@ public class ComponentAssemblyConfig extends RocketComponentConfig { final ComboBoxModel radiusMethodModel = new EnumModel( boosters, "RadiusMethod", RadiusMethod.choices()); final JComboBox radiusMethodCombo = new JComboBox( radiusMethodModel ); motherPanel.add( radiusMethodCombo, "spanx 3, growx, wrap"); + order.add(radiusMethodCombo); // set radial distance JLabel radiusLabel = new JLabel(trans.get("StageConfig.parallel.radius")); @@ -68,6 +69,7 @@ public class ComponentAssemblyConfig extends RocketComponentConfig { JSpinner radiusSpinner = new JSpinner(radiusModel.getSpinnerModel()); radiusSpinner.setEditor(new SpinnerEditor(radiusSpinner)); motherPanel.add(radiusSpinner , "wmin 65lp, growx 1, align right"); + order.add(((SpinnerEditor) radiusSpinner.getEditor()).getTextField()); // autoRadOffsModel.addEnableComponent(radiusSpinner, false); UnitSelector radiusUnitSelector = new UnitSelector(radiusModel); motherPanel.add(radiusUnitSelector, "growx 1"); @@ -89,6 +91,7 @@ public class ComponentAssemblyConfig extends RocketComponentConfig { JSpinner angleSpinner = new JSpinner(angleModel.getSpinnerModel()); angleSpinner.setEditor(new SpinnerEditor(angleSpinner)); motherPanel.add(angleSpinner, "wmin 65lp, growx 1"); + order.add(((SpinnerEditor) angleSpinner.getEditor()).getTextField()); UnitSelector angleUnitSelector = new UnitSelector(angleModel); motherPanel.add( angleUnitSelector, "growx 1"); motherPanel.add(new BasicSlider(angleModel.getSliderModel(-Math.PI, Math.PI)), "gapleft para, growx 2, wrap"); @@ -101,6 +104,7 @@ public class ComponentAssemblyConfig extends RocketComponentConfig { JSpinner countSpinner = new JSpinner(countModel.getSpinnerModel()); countSpinner.setEditor(new SpinnerEditor(countSpinner)); motherPanel.add(countSpinner, "wmin 65lp, growx 1, wrap"); + order.add(((SpinnerEditor) countSpinner.getEditor()).getTextField()); // setPositions relative to parent component JLabel positionLabel = new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto")); @@ -109,6 +113,7 @@ public class ComponentAssemblyConfig extends RocketComponentConfig { ComboBoxModel axialPositionMethodModel = new EnumModel(component, "AxialMethod", AxialMethod.axialOffsetMethods ); JComboBox positionMethodCombo = new JComboBox( axialPositionMethodModel ); motherPanel.add(positionMethodCombo, "spanx 3, growx, wrap"); + order.add(positionMethodCombo); // plus motherPanel.add(new JLabel(trans.get("StageConfig.parallel.plus")), "right"); @@ -116,8 +121,8 @@ public class ComponentAssemblyConfig extends RocketComponentConfig { final DoubleModel axialOffsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH); final JSpinner axialOffsetSpinner = new JSpinner(axialOffsetModel.getSpinnerModel()); axialOffsetSpinner.setEditor(new SpinnerEditor(axialOffsetSpinner)); - motherPanel.add(axialOffsetSpinner, "wmin 65lp, growx 1"); + order.add(((SpinnerEditor) axialOffsetSpinner.getEditor()).getTextField()); positionMethodCombo.addActionListener(new ActionListener() { @Override diff --git a/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java index 213b421ba..add84adfb 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/EllipticalFinSetConfig.java @@ -201,6 +201,7 @@ public class EllipticalFinSetConfig extends FinSetConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java index d06207beb..6c12d6638 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java @@ -145,10 +145,6 @@ public abstract class FinSetConfig extends RocketComponentConfig { order.add(split); order.add(convert); } - - // Apply the custom focus travel policy to these bottom buttons - CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); - parent.setFocusTraversalPolicy(policy); } private JPanel finTabPanel() { @@ -251,11 +247,7 @@ 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); + order.add(autoCalc); return panel; } @@ -585,10 +577,6 @@ public abstract class FinSetConfig extends RocketComponentConfig { 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; } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java index 00c7435a8..f3777b3b0 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/FreeformFinSetConfig.java @@ -95,6 +95,11 @@ public class FreeformFinSetConfig extends FinSetConfig { tabbedPane.setSelectedIndex(0); addFinSetButtons(); + + // Apply the custom focus travel policy to this panel + order.add(closeButton); // Make sure the close button is the last component + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); } @@ -218,10 +223,6 @@ public class FreeformFinSetConfig extends FinSetConfig { mainPanel.add(panel, "aligny 20%"); - // Apply the custom focus travel policy to this panel - CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); - parent.setFocusTraversalPolicy(policy); - return mainPanel; } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java index eb281008d..45c984dd5 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/InnerTubeConfig.java @@ -207,9 +207,9 @@ public class InnerTubeConfig extends RocketComponentConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } protected JPanel positionTab() { @@ -280,10 +280,6 @@ public class InnerTubeConfig extends RocketComponentConfig { note.setText(trans.get("ringcompcfg.note.desc")); panel.add(note, "spanx, growx"); - // Apply the custom focus travel policy to this config dialog - CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); - parent.setFocusTraversalPolicy(policy); - return panel; } @@ -417,10 +413,6 @@ public class InnerTubeConfig extends RocketComponentConfig { panel.add(subPanel, "grow"); - // Apply the custom focus travel policy to this config dialog - CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); - parent.setFocusTraversalPolicy(policy); - return panel; } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java index ad8ab87d4..37d93a0fd 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/LaunchLugConfig.java @@ -162,9 +162,9 @@ public class LaunchLugConfig extends RocketComponentConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } @Override diff --git a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java index 6c3bdfd0b..4ad866283 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/MassComponentConfig.java @@ -165,9 +165,9 @@ public class MassComponentConfig extends RocketComponentConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } @@ -215,10 +215,6 @@ public class MassComponentConfig extends RocketComponentConfig { 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; } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java index 7b6d1e6e9..f0dd30ae2 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/NoseConeConfig.java @@ -169,9 +169,9 @@ public class NoseConeConfig extends RocketComponentConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java index 98b4b9ff9..bbdec3233 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ParachuteConfig.java @@ -288,9 +288,9 @@ public class ParachuteConfig extends RecoveryDeviceConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } @@ -338,10 +338,6 @@ 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; } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java index 6caee5ea9..900b09496 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RailButtonConfig.java @@ -33,7 +33,11 @@ public class RailButtonConfig extends RocketComponentConfig { //// General and General properties tabbedPane.insertTab( trans.get("RailBtnCfg.tab.General"), null, buttonTab( (RailButton)component ), trans.get("RailBtnCfg.tab.GeneralProp"), 0); tabbedPane.setSelectedIndex(0); - + + // Apply the custom focus travel policy to this panel + order.add(closeButton); // Make sure the close button is the last component + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); } private JPanel buttonTab( final RailButton rbc ){ @@ -141,10 +145,6 @@ public class RailButtonConfig extends RocketComponentConfig { primary.add(panel, "grow"); - // Apply the custom focus travel policy to this panel - CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); - parent.setFocusTraversalPolicy(policy); - return primary; } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java index 2d354df3e..b999f7016 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RingComponentConfig.java @@ -34,7 +34,7 @@ public class RingComponentConfig extends RocketComponentConfig { super(d, component, parent); } - + protected JPanel generalTab(String outer, String inner, String thickness, String length) { JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::]", "")); DoubleModel m; @@ -175,10 +175,6 @@ public class RingComponentConfig extends RocketComponentConfig { } panel.add(materialPanel, "cell 4 0, gapleft paragraph, aligny 0%, spany"); - // Apply the custom focus travel policy to this config dialog - CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); - parent.setFocusTraversalPolicy(policy); - return panel; } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index 514637c6a..4bcec1c19 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -23,6 +23,8 @@ import javax.swing.JTabbedPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingUtilities; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.database.ComponentPresetDatabase; @@ -69,6 +71,7 @@ public class RocketComponentConfig extends JPanel { private final TextFieldListener textFieldListener; private JPanel buttonPanel; + protected JButton closeButton; private AppearancePanel appearancePanel = null; private JLabel infoLabel; @@ -189,7 +192,7 @@ public class RocketComponentConfig extends JPanel { } //// Close button - JButton closeButton = new SelectColorButton(trans.get("dlg.but.close")); + this.closeButton = new SelectColorButton(trans.get("dlg.but.close")); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java index 2c38936d4..029dd8759 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ShockCordConfig.java @@ -141,6 +141,7 @@ public class ShockCordConfig extends RocketComponentConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); } @@ -190,10 +191,6 @@ public class ShockCordConfig extends RocketComponentConfig { 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; } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java index 46d0d3e30..4545660c9 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/SleeveConfig.java @@ -5,6 +5,7 @@ import javax.swing.JDialog; import javax.swing.JPanel; import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; @@ -28,6 +29,11 @@ public class SleeveConfig extends RingComponentConfig { tabbedPane.insertTab(trans.get("SleeveCfg.tab.General"), null, tab, trans.get("SleeveCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); + + // Apply the custom focus travel policy to this panel + order.add(closeButton); // Make sure the close button is the last component + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); } } \ No newline at end of file diff --git a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java index 0a87ade77..63b0c9161 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/StreamerConfig.java @@ -275,9 +275,9 @@ public class StreamerConfig extends RecoveryDeviceConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } @@ -327,10 +327,6 @@ 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; } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java index 5689953f5..b204435a3 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ThicknessRingComponentConfig.java @@ -5,6 +5,7 @@ import javax.swing.JDialog; import javax.swing.JPanel; import net.sf.openrocket.document.OpenRocketDocument; +import net.sf.openrocket.gui.adaptors.CustomFocusTraversalPolicy; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.startup.Application; @@ -30,6 +31,11 @@ public class ThicknessRingComponentConfig extends RingComponentConfig { tabbedPane.insertTab(trans.get("ThicknessRingCompCfg.tab.General"), null, tab, trans.get("ThicknessRingCompCfg.tab.Generalprop"), 0); tabbedPane.setSelectedIndex(0); + + // Apply the custom focus travel policy to this panel + order.add(closeButton); // Make sure the close button is the last component + CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); + parent.setFocusTraversalPolicy(policy); } } \ No newline at end of file diff --git a/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java index 813c4f4f1..3a6ccaaa3 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/TransitionConfig.java @@ -202,9 +202,9 @@ public class TransitionConfig extends RocketComponentConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java index f59f1f066..df54e7f2f 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/TrapezoidFinSetConfig.java @@ -249,10 +249,11 @@ public class TrapezoidFinSetConfig extends FinSetConfig { trans.get("TrapezoidFinSetCfg.tab.Generalproperties"), 0); tabbedPane.setSelectedIndex(0); + addFinSetButtons(); + // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - - addFinSetButtons(); } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java index 99dbb5b67..9ce17a3a9 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/TubeFinSetConfig.java @@ -179,9 +179,9 @@ public class TubeFinSetConfig extends RocketComponentConfig { tabbedPane.setSelectedIndex(0); // Apply the custom focus travel policy to this config dialog + order.add(closeButton); // Make sure the close button is the last component CustomFocusTraversalPolicy policy = new CustomFocusTraversalPolicy(order); parent.setFocusTraversalPolicy(policy); - } @Override