From 1ae589d8640d269d6029a900b8579d41b9d78a07 Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Mon, 31 Jan 2022 23:41:43 +0100 Subject: [PATCH 1/3] [fixes #1076] Use Close button instead of Ok/Cancel --- .../preset/ComponentPresetChooserDialog.java | 31 ++++--------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java index d43319345..8b800eb8d 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java @@ -67,8 +67,6 @@ public class ComponentPresetChooserDialog extends JDialog { private List presets; private ComponentPreset.Type presetType; - private boolean okClicked = false; - public ComponentPresetChooserDialog(Window owner, RocketComponent component) { super(owner, trans.get("title"), Dialog.ModalityType.APPLICATION_MODAL); @@ -154,30 +152,20 @@ public class ComponentPresetChooserDialog extends JDialog { panel.add(new JLabel(Chars.UP_ARROW + " " + trans.get("lbl.favorites")), "spanx, gapleft 5px, wrap para"); - // OK / Cancel buttons - JButton okButton = new SelectColorButton(trans.get("dlg.but.ok")); - okButton.addActionListener(new ActionListener() { + // Close buttons + JButton closeButton = new SelectColorButton(trans.get("dlg.but.close")); + closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - close(true); + ComponentPresetChooserDialog.this.setVisible(false); } }); - panel.add(okButton, "tag ok, spanx, split"); - - //// Cancel button - JButton cancelButton = new SelectColorButton(trans.get("dlg.but.cancel")); - cancelButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - close(false); - } - }); - panel.add(cancelButton, "tag cancel"); + panel.add(closeButton, "spanx, right, tag close"); this.add(panel); GUIUtil.rememberWindowSize(this); - GUIUtil.setDisposableDialogOptions(this, okButton); + GUIUtil.setDisposableDialogOptions(this, closeButton); updateFilters(); } @@ -270,8 +258,6 @@ public class ComponentPresetChooserDialog extends JDialog { * @return the selected motor, or null if no motor has been selected or the selection was canceled. */ public ComponentPreset getSelectedComponentPreset() { - if (!okClicked) - return null; int row = componentSelectionTable.getSelectedRow(); if (row < 0) { // Nothing selected. @@ -281,11 +267,6 @@ public class ComponentPresetChooserDialog extends JDialog { return presets.get(row); } - public void close(boolean ok) { - okClicked = ok; - this.setVisible(false); - } - private void updateFilters() { List> filters = new ArrayList>(2); String filterTextRegex = filterText.getText(); From 3541899b0f7d782e5f832f5011c09fd4060982dc Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Tue, 1 Feb 2022 00:39:22 +0100 Subject: [PATCH 2/3] [fixes #1076] Move PresetModel database listener internally setComponent() of ComponentConfigDialog called pack(), which triggered invalidate() in RocketComponentConfig, thus removing presetModel from the database listeners before the Component Preset window could even be called --- swing/src/net/sf/openrocket/gui/adaptors/PresetModel.java | 3 +++ .../sf/openrocket/gui/configdialog/RocketComponentConfig.java | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/adaptors/PresetModel.java b/swing/src/net/sf/openrocket/gui/adaptors/PresetModel.java index 061da9ddc..5fb2355d7 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/PresetModel.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/PresetModel.java @@ -7,6 +7,7 @@ import javax.swing.AbstractListModel; import javax.swing.ComboBoxModel; import javax.swing.SwingUtilities; +import net.sf.openrocket.database.ComponentPresetDatabase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,6 +76,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com SwingUtilities.invokeLater(new Runnable() { @Override public void run() { + ((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(PresetModel.this); ComponentPresetChooserDialog dialog = new ComponentPresetChooserDialog(SwingUtilities.getWindowAncestor(parent), component); dialog.setVisible(true); @@ -82,6 +84,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com if (preset != null) { setSelectedItem(preset); } + ((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(PresetModel.this); } }); } else { diff --git a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index 6ea0fb82e..3dc4d74bc 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -22,7 +22,6 @@ import javax.swing.JTextArea; import javax.swing.JTextField; import net.miginfocom.swing.MigLayout; -import net.sf.openrocket.database.ComponentPresetDatabase; import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.SpinnerEditor; import net.sf.openrocket.gui.adaptors.BooleanModel; @@ -94,7 +93,6 @@ public class RocketComponentConfig extends JPanel { if (component.getPresetType() != null) { // If the component supports a preset, show the preset selection box. presetModel = new PresetModel(this, document, component); - ((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(presetModel); presetComboBox = new JComboBox(presetModel); presetComboBox.setEditable(false); this.add(presetComboBox, ""); @@ -623,7 +621,6 @@ public class RocketComponentConfig extends JPanel { for (Invalidatable i : invalidatables) { i.invalidate(); } - ((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(presetModel); } From 620b450e2d723efa958765b0e5c7a6e05564b57f Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Tue, 1 Feb 2022 00:50:29 +0100 Subject: [PATCH 3/3] [fixes #1076] Fix layout issues ComponentPresetChooserDialog --- .../gui/dialogs/preset/ComponentPresetChooserDialog.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java index 8b800eb8d..3061d6d62 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetChooserDialog.java @@ -111,7 +111,7 @@ public class ComponentPresetChooserDialog extends JDialog { sub.add(filterLabel, "gapright para"); filterText = new JTextField(); - sub.add(filterText, "width 50:320, growx"); + sub.add(filterText, "width 50:320, pushx, growx"); filterText.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { @@ -129,7 +129,7 @@ public class ComponentPresetChooserDialog extends JDialog { } }); - panel.add(sub, "growx, ay 0, gapright para"); + panel.add(sub, "growx, pushx, ay 0, gapright para"); // need to create componentSelectionTable before filter checkboxes, // but add to panel after @@ -147,7 +147,7 @@ public class ComponentPresetChooserDialog extends JDialog { JScrollPane scrollpane = new JScrollPane(); scrollpane.setViewportView(componentSelectionTable); - panel.add(scrollpane, "grow, width 700lp, height 300lp, spanx, wrap rel"); + panel.add(scrollpane, "grow, width 700lp, height 300lp, pushy, spanx, wrap rel"); panel.add(new JLabel(Chars.UP_ARROW + " " + trans.get("lbl.favorites")), "spanx, gapleft 5px, wrap para");