From d398d48d5582e38638130f93b4bf32ec4f58c648 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 15 Jun 2022 14:43:06 +0200 Subject: [PATCH] Don't remember previous tab for stages --- .../configdialog/ComponentConfigDialog.java | 21 ++++++++++++++++--- .../configdialog/RocketComponentConfig.java | 4 ++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java index 62217603d..244675b15 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java @@ -14,6 +14,7 @@ import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.util.GUIUtil; import net.sf.openrocket.gui.util.SwingPreferences; import net.sf.openrocket.l10n.Translator; +import net.sf.openrocket.rocketcomponent.AxialStage; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; import net.sf.openrocket.rocketcomponent.RocketComponent; @@ -38,7 +39,7 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis private static ComponentConfigDialog dialog = null; private OpenRocketDocument document = null; - protected static RocketComponent component = null; + protected RocketComponent component = null; private RocketComponentConfig configurator = null; protected static boolean clearConfigListeners = true; private static String previousSelectedTab = null; // Name of the previous selected tab @@ -119,6 +120,10 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis this.pack(); } + public RocketComponent getComponent() { + return component; + } + public static ComponentConfigDialog getDialog() { return dialog; } @@ -221,10 +226,16 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis */ public static void showDialog(Window parent, OpenRocketDocument document, RocketComponent component, boolean rememberPreviousTab) { if (dialog != null) { - previousSelectedTab = dialog.getSelectedTabName(); + // Don't remember the previous tab for stages, because this will leave you in the override tab for + // the next component, which is generally not what you want. + if (dialog.getComponent() instanceof AxialStage && !(component instanceof AxialStage)) { + previousSelectedTab = null; + } else { + previousSelectedTab = dialog.getSelectedTabName(); + } // If the component is the same as the ComponentConfigDialog component, and the dialog is still visible, // that means that the user did a ctr/cmd click on a new component => don't remove the config listeners of component - if (component.equals(ComponentConfigDialog.component)) { + if (component == dialog.getComponent()) { ComponentConfigDialog.clearConfigListeners = false; } dialog.dispose(); @@ -281,6 +292,10 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis return (dialog != null) && (dialog.isVisible()); } + public int getSelectedTabIndex() { + return configurator.getSelectedTabIndex(); + } + public String getSelectedTabName() { if (configurator != null) { return configurator.getSelectedTabName(); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index 8a1900f5f..eaf8965a2 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -317,6 +317,10 @@ public class RocketComponentConfig extends JPanel { return subPanel; } + public int getSelectedTabIndex() { + return tabbedPane.getSelectedIndex(); + } + public String getSelectedTabName() { if (tabbedPane != null) { return tabbedPane.getTitleAt(tabbedPane.getSelectedIndex());