Fix selection issue in motor, recovery and stage table

This commit is contained in:
SiboVG 2022-06-01 04:50:36 +02:00
parent 78aaeed1b5
commit 7b54af2623
3 changed files with 62 additions and 3 deletions

View File

@ -194,10 +194,27 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
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) {

View File

@ -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<Recovery
recoveryTable.getTableHeader().setReorderingAllowed(false);
recoveryTable.setCellSelectionEnabled(true);
recoveryTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
ListSelectionListener listener = new ListSelectionListener() {
private int previousRow = -1;
private int previousColumn = -1;
@Override
public void valueChanged(ListSelectionEvent event) {
if (table != null && (recoveryTable.getSelectedRow() != previousRow ||
recoveryTable.getSelectedColumn() != previousColumn)) {
updateButtonState();
previousRow = recoveryTable.getSelectedRow();
previousColumn = recoveryTable.getSelectedColumn();
}
}
};
recoveryTable.getSelectionModel().addListSelectionListener(listener);
recoveryTable.getColumnModel().getSelectionModel().addListSelectionListener(listener);
recoveryTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
updateButtonState();
int selectedColumn = table.getSelectedColumn();
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
@ -108,6 +128,7 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel<Recovery
}
}
});
rocket.addComponentChangeListener(cce -> {
final RocketComponent source = cce.getSource();
if(source instanceof FlightConfigurableComponent) {

View File

@ -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<AxialS
separationTable.getTableHeader().setReorderingAllowed(false);
separationTable.setCellSelectionEnabled(true);
separationTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
ListSelectionListener listener = new ListSelectionListener() {
private int previousRow = -1;
private int previousColumn = -1;
@Override
public void valueChanged(ListSelectionEvent event) {
if (table != null && (separationTable.getSelectedRow() != previousRow ||
separationTable.getSelectedColumn() != previousColumn)) {
updateButtonState();
previousRow = separationTable.getSelectedRow();
previousColumn = separationTable.getSelectedColumn();
}
}
};
separationTable.getSelectionModel().addListSelectionListener(listener);
separationTable.getColumnModel().getSelectionModel().addListSelectionListener(listener);
separationTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
updateButtonState();
int selectedColumn = table.getSelectedColumn();
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
@ -128,6 +148,7 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
}
}
});
separationTable.setDefaultRenderer(Object.class, new SeparationTableCellRenderer());
return separationTable;