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) {