diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java index 339833e64..9d7a798ad 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/MotorConfigurationPanel.java @@ -194,10 +194,27 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel configurationTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); configurationTable.setDefaultRenderer(Object.class, new MotorTableCellRenderer()); + ListSelectionListener listener = new ListSelectionListener() { + private int previousRow = -1; + private int previousColumn = -1; + + @Override + public void valueChanged(ListSelectionEvent event) { + if (table != null && (configurationTable.getSelectedRow() != previousRow || + configurationTable.getSelectedColumn() != previousColumn)) { + updateButtonState(); + previousRow = configurationTable.getSelectedRow(); + previousColumn = configurationTable.getSelectedColumn(); + } + } + }; + + configurationTable.getSelectionModel().addListSelectionListener(listener); + configurationTable.getColumnModel().getSelectionModel().addListSelectionListener(listener); + configurationTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - updateButtonState(); int selectedColumn = table.getSelectedColumn(); if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) { diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java index a6cdf3e01..6f355e340 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java @@ -17,6 +17,8 @@ import javax.swing.JTable; import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.gui.dialogs.flightconfiguration.DeploymentSelectionDialog; @@ -89,10 +91,28 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel { final RocketComponent source = cce.getSource(); if(source instanceof FlightConfigurableComponent) { diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java index 9d81bbf59..ba9a96281 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/SeparationConfigurationPanel.java @@ -17,6 +17,8 @@ import javax.swing.JTable; import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.gui.dialogs.flightconfiguration.SeparationSelectionDialog; @@ -109,10 +111,28 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel