From 6e27d60a031717a2d67b9bd358aa192ad82c9343 Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Wed, 6 Oct 2021 19:48:59 +0200 Subject: [PATCH 1/3] [fixes #1026] Show number of motors in motor selection table --- core/resources/l10n/messages.properties | 2 + .../ThrustCurveMotorSelectionPanel.java | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index cf6b7c7d6..74ec4df58 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -1211,6 +1211,8 @@ StorageOptChooser.lbl.Saveopt = Save options TCMotorSelPan.lbl.Selrocketmotor = Select rocket motor: TCMotorSelPan.checkbox.hideSimilar = Hide very similar thrust curves TCMotorSelPan.checkbox.hideUsed = Hide motors already used in the mount +TCMotorSelPan.lbl.nrOfMotors = Number of motors: +TCMotorSelPan.lbl.ttip.nrOfMotors = Number of motors currently visible in the motor selection table TCMotorSelPan.checkbox.limitlength = Limit motor length to mount length TCMotorSelPan.checkbox.limitdiameter = Limit motor diameter to mount diameter TCMotorSelPan.checkbox.hideUnavailable = Hide motors which are not in regular production diff --git a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java index f3f466b6a..ab91f42c1 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java @@ -2,6 +2,7 @@ package net.sf.openrocket.gui.dialogs.motor.thrustcurve; import java.awt.Color; import java.awt.Component; +import java.awt.Font; import java.awt.Paint; import java.awt.Rectangle; import java.awt.event.ActionEvent; @@ -11,6 +12,7 @@ import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.EventObject; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -36,9 +38,12 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import javax.swing.event.RowSorterEvent; +import javax.swing.event.RowSorterListener; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; +import net.sf.openrocket.util.StateChangeListener; import org.jfree.chart.ChartColor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,6 +98,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec private final JComboBox curveSelectionBox; private final DefaultComboBoxModel curveSelectionModel; private final JComboBox delayBox; + private final JLabel nrOfMotorsLabel; private final MotorInformationPanel motorInformationPanel; private final MotorFilterPanel motorFilterPanel; @@ -288,6 +294,28 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec } + // Number of motors + { + nrOfMotorsLabel = new JLabel(); + nrOfMotorsLabel.setToolTipText(trans.get("TCMotorSelPan.lbl.ttip.nrOfMotors")); + updateNrOfMotors(); + nrOfMotorsLabel.setForeground(Color.darkGray); + nrOfMotorsLabel.setFont(new Font(Font.SANS_SERIF, Font.ITALIC, 11)); + panel.add(nrOfMotorsLabel, "gapleft para, spanx, wrap"); + sorter.addRowSorterListener(new RowSorterListener() { + @Override + public void sorterChanged(RowSorterEvent e) { + updateNrOfMotors(); + } + }); + rowFilter.addChangeListener(new StateChangeListener() { + @Override + public void stateChanged(EventObject e) { + updateNrOfMotors(); + } + }); + } + // Search field { //// Search: @@ -499,6 +527,17 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec return motors; } + private void updateNrOfMotors() { + if (table != null && nrOfMotorsLabel != null) { + int rowCount = table.getRowCount(); + String motorCount = "None"; + if (rowCount > 0) { + motorCount = String.valueOf(rowCount); + } + nrOfMotorsLabel.setText(trans.get("TCMotorSelPan.lbl.nrOfMotors") + " " + motorCount); + } + } + private void scrollSelectionVisible() { if (selectedMotorSet != null) { From 78e23adcba86c5ef581c85a2fd2b7f30d6d4c62c Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Thu, 7 Oct 2021 10:36:43 +0200 Subject: [PATCH 2/3] Trigger 'Hide motors not in regular production' upon window open --- .../motor/thrustcurve/ThrustCurveMotorSelectionPanel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java index ab91f42c1..54cfd7c52 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java @@ -359,6 +359,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec // Update the panel data updateData(); setDelays(false); + hideUnavailableBox.getActionListeners()[0].actionPerformed(null); } From b29283a979ba365609c90930869d8287d8dfd466 Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Thu, 7 Oct 2021 10:37:46 +0200 Subject: [PATCH 3/3] Trigger 'Hide very similar thrust curves' upon motor selection window open --- .../motor/thrustcurve/ThrustCurveMotorSelectionPanel.java | 1 + 1 file changed, 1 insertion(+) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java index 54cfd7c52..c7f84ae1a 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/motor/thrustcurve/ThrustCurveMotorSelectionPanel.java @@ -360,6 +360,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec updateData(); setDelays(false); hideUnavailableBox.getActionListeners()[0].actionPerformed(null); + hideSimilarBox.getActionListeners()[0].actionPerformed(null); }