Merge branch 'unstable' into issue-244

This commit is contained in:
SiboVG 2022-02-14 19:05:33 +01:00 committed by GitHub
commit 218368ecf8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 63 additions and 10 deletions

View File

@ -159,6 +159,7 @@ public class DescriptionArea extends JScrollPane {
Dimension dim = editorPane.getPreferredSize(); Dimension dim = editorPane.getPreferredSize();
dim.height = lineheight * rows + extraheight + 2; dim.height = lineheight * rows + extraheight + 2;
this.setPreferredSize(dim);
this.setViewportView(editorPane); this.setViewportView(editorPane);
this.setText(text); this.setText(text);

View File

@ -11,6 +11,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EventObject; import java.util.EventObject;
import java.util.List; import java.util.List;
@ -82,6 +83,7 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe
private final JToggleButton worstToggle; private final JToggleButton worstToggle;
private boolean fakeChange = false; private boolean fakeChange = false;
private AerodynamicCalculator aerodynamicCalculator; private AerodynamicCalculator aerodynamicCalculator;
private double initTheta;
private final ColumnTableModel longitudeStabilityTableModel; private final ColumnTableModel longitudeStabilityTableModel;
private final ColumnTableModel dragTableModel; 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); aoa = new DoubleModel(rocketPanel, "CPAOA", UnitGroup.UNITS_ANGLE, 0, Math.PI);
rocketPanel.setCPMach(Application.getPreferences().getDefaultMach()); rocketPanel.setCPMach(Application.getPreferences().getDefaultMach());
mach = new DoubleModel(rocketPanel, "CPMach", UnitGroup.UNITS_COEFFICIENT, 0); mach = new DoubleModel(rocketPanel, "CPMach", UnitGroup.UNITS_COEFFICIENT, 0);
initTheta = rocketPanel.getFigure().getRotation();
rocketPanel.setCPTheta(rocketPanel.getFigure().getRotation()); rocketPanel.setCPTheta(rocketPanel.getFigure().getRotation());
theta = new DoubleModel(rocketPanel, "CPTheta", UnitGroup.UNITS_ANGLE, 0, 2 * Math.PI); theta = new DoubleModel(rocketPanel, "CPTheta", UnitGroup.UNITS_ANGLE, 0, 2 * Math.PI);
rocketPanel.setCPRoll(0); rocketPanel.setCPRoll(0);
@ -428,6 +431,8 @@ public class ComponentAnalysisDialog extends JDialog implements StateChangeListe
this.addWindowListener(new WindowAdapter() { this.addWindowListener(new WindowAdapter() {
@Override @Override
public void windowClosed(WindowEvent e) { public void windowClosed(WindowEvent e) {
theta.setValue(initTheta);
//System.out.println("Closing method called: " + this); //System.out.println("Closing method called: " + this);
theta.removeChangeListener(ComponentAnalysisDialog.this); theta.removeChangeListener(ComponentAnalysisDialog.this);
aoa.removeChangeListener(ComponentAnalysisDialog.this); aoa.removeChangeListener(ComponentAnalysisDialog.this);

View File

@ -209,7 +209,7 @@ public class BasicFrame extends JFrame {
//// Rocket design //// Rocket design
tabbedPane.addTab(trans.get("BasicFrame.tab.Rocketdesign"), null, designTab()); tabbedPane.addTab(trans.get("BasicFrame.tab.Rocketdesign"), null, designTab());
//// Flight configurations //// 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 //// Flight simulations
tabbedPane.addTab(trans.get("BasicFrame.tab.Flightsim"), null, simulationPanel); 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) { public void stateChanged(ChangeEvent e) {
JTabbedPane tabSource = (JTabbedPane) e.getSource(); JTabbedPane tabSource = (JTabbedPane) e.getSource();
String tab = tabSource.getTitleAt(tabSource.getSelectedIndex()); int tab = tabSource.getSelectedIndex();
if (tab.equals(trans.get("BasicFrame.tab.Flightsim"))) { if (tab == SIMULATION_TAB) {
simulationPanel.activating(); simulationPanel.activating();
} }
} }

View File

@ -138,7 +138,7 @@ public class ComponentTreeModel implements TreeModel, ComponentChangeListener {
@Override @Override
public void componentChanged(ComponentChangeEvent e) { 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 // Tree must be fully updated also in case of an undo change
fireTreeStructureChanged(e.getSource()); fireTreeStructureChanged(e.getSource());
if (e.isTreeChange() && e.isUndoChange()) { if (e.isTreeChange() && e.isUndoChange()) {

View File

@ -136,7 +136,7 @@ public abstract class FlightConfigurablePanel<T extends FlightConfigurableCompon
table.changeSelection(row, col, true, false); table.changeSelection(row, col, true, false);
} }
private final void installTableListener() { protected void installTableListener() {
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override @Override

View File

@ -42,6 +42,7 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
private final OpenRocketDocument document; private final OpenRocketDocument document;
private final Rocket rocket; private final Rocket rocket;
private final BasicFrame basicFrame;
private final JButton newConfButton, renameConfButton, removeConfButton, copyConfButton; private final JButton newConfButton, renameConfButton, removeConfButton, copyConfButton;
private final JTabbedPane tabs; private final JTabbedPane tabs;
@ -53,9 +54,10 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
private final static int RECOVERY_TAB_INDEX = 1; private final static int RECOVERY_TAB_INDEX = 1;
private final static int SEPARATION_TAB_INDEX = 2; private final static int SEPARATION_TAB_INDEX = 2;
public FlightConfigurationPanel(OpenRocketDocument doc) { public FlightConfigurationPanel(BasicFrame basicFrame, OpenRocketDocument doc) {
super(new MigLayout("fill","[grow][][][][][grow]")); super(new MigLayout("fill","[grow][][][][][grow]"));
this.basicFrame = basicFrame;
this.document = doc; this.document = doc;
this.rocket = doc.getRocket(); this.rocket = doc.getRocket();
this.rocket.addChangeListener(this); this.rocket.addChangeListener(this);
@ -291,6 +293,10 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
} }
} }
public void setSelectedComponent(RocketComponent component) {
this.basicFrame.setSelectedComponent(component);
}
@Override @Override
public void stateChanged(EventObject e) { public void stateChanged(EventObject e) {
updateButtonState(); updateButtonState();

View File

@ -4,6 +4,8 @@ import java.awt.CardLayout;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
@ -22,12 +24,12 @@ import javax.swing.JTable;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import javax.swing.ListSelectionModel; import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener; import javax.swing.event.TableModelListener;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.gui.components.StyledLabel;
import net.sf.openrocket.gui.components.StyledLabel.Style;
import net.sf.openrocket.gui.dialogs.flightconfiguration.IgnitionSelectionDialog; import net.sf.openrocket.gui.dialogs.flightconfiguration.IgnitionSelectionDialog;
import net.sf.openrocket.gui.dialogs.flightconfiguration.MotorMountConfigurationPanel; import net.sf.openrocket.gui.dialogs.flightconfiguration.MotorMountConfigurationPanel;
import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog; import net.sf.openrocket.gui.dialogs.motor.MotorChooserDialog;
@ -41,6 +43,7 @@ import net.sf.openrocket.rocketcomponent.FlightConfigurationId;
import net.sf.openrocket.rocketcomponent.InnerTube; import net.sf.openrocket.rocketcomponent.InnerTube;
import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.MotorMount;
import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.UnitGroup;
import net.sf.openrocket.util.Chars; import net.sf.openrocket.util.Chars;
@ -206,6 +209,40 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
return configurationTable; 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() { protected void updateButtonState() {
if( configurationTableModel.getColumnCount() > 1 ) { if( configurationTableModel.getColumnCount() > 1 ) {
showContent(); showContent();