diff --git a/swing/src/net/sf/openrocket/gui/components/DescriptionArea.java b/swing/src/net/sf/openrocket/gui/components/DescriptionArea.java index 91a5ad2a8..844c4909d 100644 --- a/swing/src/net/sf/openrocket/gui/components/DescriptionArea.java +++ b/swing/src/net/sf/openrocket/gui/components/DescriptionArea.java @@ -159,6 +159,7 @@ public class DescriptionArea extends JScrollPane { Dimension dim = editorPane.getPreferredSize(); dim.height = lineheight * rows + extraheight + 2; + this.setPreferredSize(dim); this.setViewportView(editorPane); this.setText(text); diff --git a/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java index f27aa548c..1452daad0 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/ComponentAnalysisDialog.java @@ -11,6 +11,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; import java.util.ArrayList; import java.util.EventObject; import java.util.List; @@ -82,6 +83,7 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe private final JToggleButton worstToggle; private boolean fakeChange = false; private AerodynamicCalculator aerodynamicCalculator; + private double initTheta; private final ColumnTableModel longitudeStabilityTableModel; private final ColumnTableModel dragTableModel; @@ -115,6 +117,7 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe aoa = new DoubleModel(rocketPanel, "CPAOA", UnitGroup.UNITS_ANGLE, 0, Math.PI); rocketPanel.setCPMach(Application.getPreferences().getDefaultMach()); mach = new DoubleModel(rocketPanel, "CPMach", UnitGroup.UNITS_COEFFICIENT, 0); + initTheta = rocketPanel.getFigure().getRotation(); rocketPanel.setCPTheta(rocketPanel.getFigure().getRotation()); theta = new DoubleModel(rocketPanel, "CPTheta", UnitGroup.UNITS_ANGLE, 0, 2 * Math.PI); rocketPanel.setCPRoll(0); @@ -428,6 +431,8 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe this.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { + theta.setValue(initTheta); + //System.out.println("Closing method called: " + this); theta.removeChangeListener(ComponentAnalysisDialog.this); aoa.removeChangeListener(ComponentAnalysisDialog.this); 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/componenttree/ComponentTreeModel.java b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeModel.java index ccf6ed8c4..b8a602869 100644 --- a/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeModel.java +++ b/swing/src/net/sf/openrocket/gui/main/componenttree/ComponentTreeModel.java @@ -138,7 +138,7 @@ public class ComponentTreeModel implements TreeModel, ComponentChangeListener { @Override public void componentChanged(ComponentChangeEvent e) { - if (e.isTreeChange() || e.isUndoChange() || e.isMassChange()) { + if (e.isTreeChange() || e.isUndoChange()) { // Tree must be fully updated also in case of an undo change fireTreeStructureChanged(e.getSource()); if (e.isTreeChange() && e.isUndoChange()) { 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 09c5c8e17..593cbdc8a 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java @@ -136,7 +136,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();