From 9324d2a7edf3be3b60b41d134e4950bb9534f154 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Fri, 18 Feb 2022 23:21:32 +0100 Subject: [PATCH] [fixes #358] Dispose of ComponentConfigDialog instead of hiding it This is to ensure proper invalidation of the previous dialog. Just setting the dialog invisible would cause problems with configListeners not invalidating. --- .../gui/configdialog/ComponentConfigDialog.java | 8 ++++---- .../sf/openrocket/gui/configdialog/FinSetConfig.java | 6 ++---- .../gui/configdialog/RocketComponentConfig.java | 2 +- swing/src/net/sf/openrocket/gui/main/BasicFrame.java | 4 ++-- .../net/sf/openrocket/gui/main/RocketActions.java | 12 ++++++------ 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java index 88575ca03..e66129c6c 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/ComponentConfigDialog.java @@ -142,7 +142,7 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis if (e.isTreeChange() || e.isUndoChange()) { // Hide dialog in case of tree or undo change - hideDialog(); + disposeDialog(); } else { /* @@ -241,11 +241,11 @@ public class ComponentConfigDialog extends JDialog implements ComponentChangeLis } /** - * Hides the configuration dialog. May be used even if not currently visible. + * Disposes the configuration dialog. May be used even if not currently visible. */ - public static void hideDialog() { + public static void disposeDialog() { if (dialog != null) { - dialog.setVisible(false); + dialog.dispose(); } } diff --git a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java index 13f596b03..921ff611f 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/FinSetConfig.java @@ -30,13 +30,11 @@ import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.Markers; import net.sf.openrocket.material.Material; import net.sf.openrocket.rocketcomponent.CenteringRing; -import net.sf.openrocket.rocketcomponent.Coaxial; import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.FreeformFinSet; import net.sf.openrocket.rocketcomponent.InnerTube; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.SymmetricComponent; -import net.sf.openrocket.rocketcomponent.Transition; import net.sf.openrocket.rocketcomponent.position.AxialMethod; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; @@ -97,7 +95,7 @@ public abstract class FinSetConfig extends RocketComponentConfig { } }); - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); } }); } @@ -135,7 +133,7 @@ public abstract class FinSetConfig extends RocketComponentConfig { } }); - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); } }); split.setEnabled(((FinSet) component).getFinCount() > 1); diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index b753a90ba..daed8e7af 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -142,7 +142,7 @@ public class RocketComponentConfig extends JPanel { closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); } }); buttonPanel.add(closeButton, "right, gap 30lp"); diff --git a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java index 766c77b21..9dc121f6c 100644 --- a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -1582,7 +1582,7 @@ public class BasicFrame extends JFrame { private boolean closeAction() { if (!document.isSaved()) { log.info("Confirming whether to save the design"); - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); int result = JOptionPane.showConfirmDialog(this, trans.get("BasicFrame.dlg.lbl1") + rocket.getName() + trans.get("BasicFrame.dlg.lbl2") + " " + @@ -1610,7 +1610,7 @@ public class BasicFrame extends JFrame { log.debug("Disposing window"); this.dispose(); - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); ComponentAnalysisDialog.hideDialog(); frames.remove(this); diff --git a/swing/src/net/sf/openrocket/gui/main/RocketActions.java b/swing/src/net/sf/openrocket/gui/main/RocketActions.java index 3da0af09e..ae9920d54 100644 --- a/swing/src/net/sf/openrocket/gui/main/RocketActions.java +++ b/swing/src/net/sf/openrocket/gui/main/RocketActions.java @@ -475,7 +475,7 @@ public class RocketActions { private void deleteComponent(RocketComponent component) { if (isDeletable(component)) { - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); try { component.getRocket().removeComponentChangeListener(ComponentConfigDialog.getDialog()); @@ -596,7 +596,7 @@ public class RocketActions { Simulation[] sims = selectionModel.getSelectedSimulations(); if (isDeletable(components) && isCopyable(components)) { - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); if (components.size() == 1) { document.addUndoPosition("Cut " + components.get(0).getComponentName()); @@ -712,7 +712,7 @@ public class RocketActions { Simulation[] sims = OpenRocketClipboard.getClipboardSimulations(); if (components.size() > 0) { - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); List pasted = new LinkedList<>(); for (RocketComponent component : components) { @@ -850,7 +850,7 @@ public class RocketActions { @Override public void actionPerformed(ActionEvent e) { - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); RocketComponent stage = new AxialStage(); @@ -913,7 +913,7 @@ public class RocketActions { if (!canMove(component)) return; - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); RocketComponent parent = component.getParent(); parent.moveChild(component, parent.getChildPosition(component) - 1); @@ -988,7 +988,7 @@ public class RocketActions { if (!canMove(component)) return; - ComponentConfigDialog.hideDialog(); + ComponentConfigDialog.disposeDialog(); RocketComponent parent = component.getParent(); parent.moveChild(component, parent.getChildPosition(component) + 1);