Merge pull request #1097 from SiboVG/issue-1088
[fixes #1088] Select new motor config + others
This commit is contained in:
commit
86260cc7c8
@ -84,7 +84,7 @@ public abstract class FlightConfigurablePanel<T extends FlightConfigurableCompon
|
|||||||
private final JTable doTableInitialization() {
|
private final JTable doTableInitialization() {
|
||||||
JTable table = this.initializeTable();
|
JTable table = this.initializeTable();
|
||||||
FlightConfigurationId current = this.rocket.getSelectedConfiguration().getFlightConfigurationID();
|
FlightConfigurationId current = this.rocket.getSelectedConfiguration().getFlightConfigurationID();
|
||||||
int col = (table.getColumnCount() > 1) ? 1 : 0;
|
int col = (table.getColumnCount() > 1) ? table.getColumnCount() - 1 : 0;
|
||||||
for (int row = 0; row < table.getRowCount(); row++) {
|
for (int row = 0; row < table.getRowCount(); row++) {
|
||||||
FlightConfigurationId rowFCID = rocket.getId(row);
|
FlightConfigurationId rowFCID = rocket.getId(row);
|
||||||
if (rowFCID.equals(current)) {
|
if (rowFCID.equals(current)) {
|
||||||
@ -107,7 +107,7 @@ public abstract class FlightConfigurablePanel<T extends FlightConfigurableCompon
|
|||||||
// We'll select the correct row, in the currently selected column.
|
// We'll select the correct row, in the currently selected column.
|
||||||
int col = table.getSelectedColumn();
|
int col = table.getSelectedColumn();
|
||||||
if ( col < 0 ) {
|
if ( col < 0 ) {
|
||||||
col = (table.getColumnCount() > 1) ? 1 : 0;
|
col = (table.getColumnCount() > 1) ? table.getColumnCount() - 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( int rowNum = 0; rowNum < table.getRowCount(); rowNum++ ) {
|
for( int rowNum = 0; rowNum < table.getRowCount(); rowNum++ ) {
|
||||||
|
@ -8,6 +8,8 @@ import javax.swing.JButton;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JTabbedPane;
|
import javax.swing.JTabbedPane;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
import net.sf.openrocket.document.OpenRocketDocument;
|
import net.sf.openrocket.document.OpenRocketDocument;
|
||||||
@ -74,13 +76,7 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
|
|||||||
newConfButton.addActionListener(new ActionListener() {
|
newConfButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
newOrCopyConfigAction(false);
|
||||||
addOrCopyConfiguration(false);
|
|
||||||
int lastRow = motorConfigurationPanel.table.getRowCount() - 1;
|
|
||||||
int lastCol = motorConfigurationPanel.table.getColumnCount() - 1;
|
|
||||||
motorConfigurationPanel.table.setRowSelectionInterval(lastRow, lastRow);
|
|
||||||
motorConfigurationPanel.table.setColumnSelectionInterval(lastCol, lastCol);
|
|
||||||
configurationChanged(ComponentChangeEvent.MOTOR_CHANGE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -111,17 +107,56 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
|
|||||||
copyConfButton.addActionListener(new ActionListener() {
|
copyConfButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
addOrCopyConfiguration(true);
|
newOrCopyConfigAction(true);
|
||||||
configurationChanged(ComponentChangeEvent.MOTOR_CHANGE);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.add(copyConfButton, "wrap");
|
this.add(copyConfButton, "wrap");
|
||||||
|
|
||||||
|
tabs.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
// Trigger a selection of the motor/recovery/configuration item
|
||||||
|
switch (tabs.getSelectedIndex()) {
|
||||||
|
case MOTOR_TAB_INDEX:
|
||||||
|
motorConfigurationPanel.updateButtonState();
|
||||||
|
break;
|
||||||
|
case RECOVERY_TAB_INDEX:
|
||||||
|
recoveryConfigurationPanel.updateButtonState();
|
||||||
|
break;
|
||||||
|
case SEPARATION_TAB_INDEX:
|
||||||
|
separationConfigurationPanel.updateButtonState();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
updateButtonState();
|
updateButtonState();
|
||||||
|
|
||||||
this.add(tabs, "spanx, grow, wrap rel");
|
this.add(tabs, "spanx, grow, wrap rel");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Action for when the new configuration or copy configuration button is pressed.
|
||||||
|
* @param copy if True, then copy configuration operation, if False then create a new configuration
|
||||||
|
*/
|
||||||
|
private void newOrCopyConfigAction(boolean copy) {
|
||||||
|
addOrCopyConfiguration(copy);
|
||||||
|
configurationChanged(ComponentChangeEvent.MOTOR_CHANGE);
|
||||||
|
stateChanged(null);
|
||||||
|
switch (tabs.getSelectedIndex()) {
|
||||||
|
case MOTOR_TAB_INDEX:
|
||||||
|
motorConfigurationPanel.selectMotor();
|
||||||
|
break;
|
||||||
|
case RECOVERY_TAB_INDEX:
|
||||||
|
recoveryConfigurationPanel.selectDeployment();
|
||||||
|
break;
|
||||||
|
case SEPARATION_TAB_INDEX:
|
||||||
|
separationConfigurationPanel.selectSeparation();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
configurationChanged(ComponentChangeEvent.NONFUNCTIONAL_CHANGE); // Trigger select
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* either create or copy configuration
|
* either create or copy configuration
|
||||||
* set new configuration as current
|
* set new configuration as current
|
||||||
|
@ -4,16 +4,20 @@ 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.KeyEvent;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
|
||||||
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.Box;
|
import javax.swing.Box;
|
||||||
import javax.swing.BoxLayout;
|
import javax.swing.BoxLayout;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
|
import javax.swing.KeyStroke;
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.event.TableModelEvent;
|
import javax.swing.event.TableModelEvent;
|
||||||
@ -29,15 +33,12 @@ import net.sf.openrocket.gui.widgets.SelectColorButton;
|
|||||||
import net.sf.openrocket.motor.IgnitionEvent;
|
import net.sf.openrocket.motor.IgnitionEvent;
|
||||||
import net.sf.openrocket.motor.Motor;
|
import net.sf.openrocket.motor.Motor;
|
||||||
import net.sf.openrocket.motor.MotorConfiguration;
|
import net.sf.openrocket.motor.MotorConfiguration;
|
||||||
import net.sf.openrocket.rocketcomponent.AxialStage;
|
|
||||||
import net.sf.openrocket.rocketcomponent.BodyTube;
|
import net.sf.openrocket.rocketcomponent.BodyTube;
|
||||||
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
||||||
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
|
|
||||||
import net.sf.openrocket.rocketcomponent.FlightConfigurationId;
|
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.startup.Application;
|
|
||||||
import net.sf.openrocket.unit.UnitGroup;
|
import net.sf.openrocket.unit.UnitGroup;
|
||||||
import net.sf.openrocket.util.Chars;
|
import net.sf.openrocket.util.Chars;
|
||||||
|
|
||||||
@ -56,7 +57,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
|
|||||||
protected FlightConfigurableTableModel<MotorMount> configurationTableModel;
|
protected FlightConfigurableTableModel<MotorMount> configurationTableModel;
|
||||||
|
|
||||||
MotorConfigurationPanel(final FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) {
|
MotorConfigurationPanel(final FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) {
|
||||||
super(flightConfigurationPanel,rocket);
|
super(flightConfigurationPanel, rocket);
|
||||||
|
|
||||||
motorChooserDialog = new MotorChooserDialog(SwingUtilities.getWindowAncestor(flightConfigurationPanel));
|
motorChooserDialog = new MotorChooserDialog(SwingUtilities.getWindowAncestor(flightConfigurationPanel));
|
||||||
|
|
||||||
@ -66,19 +67,19 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
|
|||||||
JLabel label = new StyledLabel(trans.get("lbl.motorMounts"), Style.BOLD);
|
JLabel label = new StyledLabel(trans.get("lbl.motorMounts"), Style.BOLD);
|
||||||
subpanel.add(label, "wrap");
|
subpanel.add(label, "wrap");
|
||||||
|
|
||||||
MotorMountConfigurationPanel mountConfigPanel = new MotorMountConfigurationPanel(this,rocket);
|
MotorMountConfigurationPanel mountConfigPanel = new MotorMountConfigurationPanel(this, rocket);
|
||||||
subpanel.add(mountConfigPanel, "grow");
|
subpanel.add(mountConfigPanel, "grow");
|
||||||
this.add(subpanel, "split, w 200lp, growy");
|
this.add(subpanel, "split, w 200lp, growy");
|
||||||
}
|
}
|
||||||
|
|
||||||
cards = new JPanel(new CardLayout());
|
cards = new JPanel(new CardLayout());
|
||||||
this.add( cards );
|
this.add(cards);
|
||||||
|
|
||||||
JLabel helpText = new JLabel(trans.get("MotorConfigurationPanel.lbl.nomotors"));
|
JLabel helpText = new JLabel(trans.get("MotorConfigurationPanel.lbl.nomotors"));
|
||||||
cards.add(helpText, HELP_LABEL );
|
cards.add(helpText, HELP_LABEL);
|
||||||
|
|
||||||
JScrollPane scroll = new JScrollPane(table);
|
JScrollPane scroll = new JScrollPane(table);
|
||||||
cards.add(scroll, TABLE_LABEL );
|
cards.add(scroll, TABLE_LABEL);
|
||||||
|
|
||||||
this.add(cards, "grow, wrap");
|
this.add(cards, "grow, wrap");
|
||||||
|
|
||||||
@ -122,6 +123,16 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
|
|||||||
});
|
});
|
||||||
this.add(resetIgnitionButton, "sizegroup button, wrap");
|
this.add(resetIgnitionButton, "sizegroup button, wrap");
|
||||||
|
|
||||||
|
// Set 'Enter' key action to open the motor selection dialog
|
||||||
|
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
|
||||||
|
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter");
|
||||||
|
table.getActionMap().put("Enter", new AbstractAction() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent ae) {
|
||||||
|
selectMotor();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
updateButtonState();
|
updateButtonState();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -204,7 +215,7 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel<MotorMount>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectMotor() {
|
public void selectMotor() {
|
||||||
MotorMount curMount = getSelectedComponent();
|
MotorMount curMount = getSelectedComponent();
|
||||||
FlightConfigurationId fcid= getSelectedConfigurationId();
|
FlightConfigurationId fcid= getSelectedConfigurationId();
|
||||||
if ( (null == fcid )||( null == curMount )){
|
if ( (null == fcid )||( null == curMount )){
|
||||||
|
@ -2,14 +2,18 @@ package net.sf.openrocket.gui.main.flightconfigpanel;
|
|||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
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;
|
||||||
|
|
||||||
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JDialog;
|
import javax.swing.JDialog;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
|
import javax.swing.KeyStroke;
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
@ -59,6 +63,16 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel<Recovery
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.add(resetDeploymentButton, "sizegroup button, wrap");
|
this.add(resetDeploymentButton, "sizegroup button, wrap");
|
||||||
|
|
||||||
|
// Set 'Enter' key action to open the recovery selection dialog
|
||||||
|
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
|
||||||
|
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter");
|
||||||
|
table.getActionMap().put("Enter", new AbstractAction() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent ae) {
|
||||||
|
selectDeployment();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -97,7 +111,7 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel<Recovery
|
|||||||
return recoveryTable;
|
return recoveryTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectDeployment() {
|
public void selectDeployment() {
|
||||||
RecoveryDevice c = getSelectedComponent();
|
RecoveryDevice c = getSelectedComponent();
|
||||||
FlightConfigurationId fcid = getSelectedConfigurationId();
|
FlightConfigurationId fcid = getSelectedConfigurationId();
|
||||||
if ((c == null) || (fcid == null)) {
|
if ((c == null) || (fcid == null)) {
|
||||||
|
@ -2,14 +2,18 @@ package net.sf.openrocket.gui.main.flightconfigpanel;
|
|||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
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;
|
||||||
|
|
||||||
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JDialog;
|
import javax.swing.JDialog;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
|
import javax.swing.KeyStroke;
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
@ -63,6 +67,15 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
});
|
});
|
||||||
this.add(resetDeploymentButton, "sizegroup button, wrap");
|
this.add(resetDeploymentButton, "sizegroup button, wrap");
|
||||||
|
|
||||||
|
// Set 'Enter' key action to open the separation selection dialog
|
||||||
|
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
|
||||||
|
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter");
|
||||||
|
table.getActionMap().put("Enter", new AbstractAction() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent ae) {
|
||||||
|
selectSeparation();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -104,7 +117,7 @@ public class SeparationConfigurationPanel extends FlightConfigurablePanel<AxialS
|
|||||||
return separationTable;
|
return separationTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectSeparation() {
|
public void selectSeparation() {
|
||||||
AxialStage stage = getSelectedComponent();
|
AxialStage stage = getSelectedComponent();
|
||||||
FlightConfigurationId fcid = getSelectedConfigurationId();
|
FlightConfigurationId fcid = getSelectedConfigurationId();
|
||||||
if ((stage == null) || (fcid == null)) {
|
if ((stage == null) || (fcid == null)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user