From 2c311ba3c3189005ed2daa2d1f5e98df728d974c Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sun, 13 Feb 2022 13:19:10 +0100 Subject: [PATCH] [fixes #1101] Select motor mount in motor config table --- .../sf/openrocket/gui/main/BasicFrame.java | 10 +++-- .../FlightConfigurablePanel.java | 2 +- .../FlightConfigurationPanel.java | 14 +++++-- .../MotorConfigurationPanel.java | 41 ++++++++++++++++++- 4 files changed, 57 insertions(+), 10 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java index d3182f3e4..ee9b99b6f 100644 --- a/swing/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/swing/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -209,7 +209,7 @@ public class BasicFrame extends JFrame { //// Rocket design tabbedPane.addTab(trans.get("BasicFrame.tab.Rocketdesign"), null, designTab()); //// Flight configurations - tabbedPane.addTab(trans.get("BasicFrame.tab.Flightconfig"), null, new FlightConfigurationPanel(document)); + tabbedPane.addTab(trans.get("BasicFrame.tab.Flightconfig"), null, new FlightConfigurationPanel(this, document)); //// Flight simulations tabbedPane.addTab(trans.get("BasicFrame.tab.Flightsim"), null, simulationPanel); @@ -1690,10 +1690,14 @@ public class BasicFrame extends JFrame { } } + public void setSelectedComponent(RocketComponent component) { + this.selectionModel.setSelectedComponent(component); + } + public void stateChanged(ChangeEvent e) { JTabbedPane tabSource = (JTabbedPane) e.getSource(); - String tab = tabSource.getTitleAt(tabSource.getSelectedIndex()); - if (tab.equals(trans.get("BasicFrame.tab.Flightsim"))) { + int tab = tabSource.getSelectedIndex(); + if (tab == SIMULATION_TAB) { simulationPanel.activating(); } } diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java index a0a0f4fc4..a937c56dd 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java @@ -132,7 +132,7 @@ public abstract class FlightConfigurablePanel return configurationTable; } + @Override + protected void installTableListener() { + super.installTableListener(); + + table.getColumnModel().getSelectionModel().addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + updateComponentSelection(e); + } + }); + + table.addFocusListener(new FocusListener() { + @Override + public void focusGained(FocusEvent e) { + updateComponentSelection(new ListSelectionEvent(this, 0, 0, false)); + } + + @Override + public void focusLost(FocusEvent e) { + + } + }); + } + + public void updateComponentSelection(ListSelectionEvent e) { + if (e.getValueIsAdjusting()) { + return; + } + MotorMount mount = getSelectedComponent(); + if (mount instanceof RocketComponent) { + flightConfigurationPanel.setSelectedComponent((RocketComponent) mount); + } + } + protected void updateButtonState() { if( configurationTableModel.getColumnCount() > 1 ) { showContent();