Flight config dialog refactoring

This commit is contained in:
Sampo Niskanen 2013-03-01 23:21:58 +02:00
parent 170ce13c05
commit d27a394813
2 changed files with 31 additions and 25 deletions

View File

@ -1,6 +1,5 @@
package net.sf.openrocket.gui.dialogs.flightconfiguration;
import java.awt.Dialog;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -42,13 +41,10 @@ public class FlightConfigurationDialog extends JDialog {
private final RecoveryConfigurationPanel recoveryConfigurationPanel;
private final SeparationConfigurationPanel separationConfigurationPanel;
private String currentID = null;
public FlightConfigurationDialog(final Rocket rocket, Window parent) {
//// Edit motor configurations
super(parent, trans.get("edtmotorconfdlg.title.Editmotorconf"), Dialog.ModalityType.APPLICATION_MODAL);
currentID = rocket.getDefaultConfiguration().getFlightConfigurationID();
super(parent, trans.get("edtmotorconfdlg.title.Editmotorconf"), ModalityType.APPLICATION_MODAL);
if (parent != null)
this.setModalityType(ModalityType.DOCUMENT_MODAL);
@ -60,13 +56,19 @@ public class FlightConfigurationDialog extends JDialog {
JPanel panel = new JPanel(new MigLayout("fill"));
// FIXME: Localize
JLabel label = new JLabel("Selected Configuration:");
panel.add(label);
JLabel label = new JLabel("Selected flight configuration:");
panel.add(label, "span, split");
flightConfigurationModel = new FlightConfigurationModel(rocket.getDefaultConfiguration());
JComboBox configSelector = new JComboBox(flightConfigurationModel);
configSelector.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel.add(configSelector, "gapright para");
}
});
panel.add(configSelector, "growx, gapright para");
JButton newConfButton = new JButton(trans.get("edtmotorconfdlg.but.Newconfiguration"));
newConfButton.addActionListener(new ActionListener() {
@ -88,7 +90,6 @@ public class FlightConfigurationDialog extends JDialog {
});
panel.add(renameConfButton);
//// Remove configuration
removeConfButton = new JButton(trans.get("edtmotorconfdlg.but.Removeconfiguration"));
removeConfButton.addActionListener(new ActionListener() {
@Override
@ -98,7 +99,6 @@ public class FlightConfigurationDialog extends JDialog {
});
panel.add(removeConfButton);
//// Copy configuration
copyConfButton = new JButton(trans.get("edtmotorconfdlg.but.Copyconfiguration"));
copyConfButton.addActionListener(new ActionListener() {
@Override
@ -106,7 +106,7 @@ public class FlightConfigurationDialog extends JDialog {
copyConfiguration();
}
});
panel.add(copyConfButton, "wrap");
panel.add(copyConfButton, "wrap para");
//// Tabs for advanced view.
@ -160,9 +160,7 @@ public class FlightConfigurationDialog extends JDialog {
}
}
public void selectConfiguration(String id) {
currentID = id;
rocket.getDefaultConfiguration().setFlightConfigurationID(currentID);
private void configurationChanged() {
motorConfigurationPanel.fireTableDataChanged();
recoveryConfigurationPanel.fireTableDataChanged();
separationConfigurationPanel.fireTableDataChanged();
@ -170,8 +168,8 @@ public class FlightConfigurationDialog extends JDialog {
}
public void addConfiguration() {
currentID = rocket.newFlightConfigurationID();
rocket.getDefaultConfiguration().setFlightConfigurationID(currentID);
String id = rocket.newFlightConfigurationID();
rocket.getDefaultConfiguration().setFlightConfigurationID(id);
motorConfigurationPanel.fireTableDataChanged();
recoveryConfigurationPanel.fireTableDataChanged();
separationConfigurationPanel.fireTableDataChanged();
@ -179,13 +177,16 @@ public class FlightConfigurationDialog extends JDialog {
}
public void copyConfiguration() {
String currentId = rocket.getDefaultConfiguration().getFlightConfigurationID();
// currentID is the currently selected configuration.
String newConfigId = rocket.newFlightConfigurationID();
String oldName = rocket.getFlightConfigurationName(currentID);
CopyFlightConfigurationVisitor v = new CopyFlightConfigurationVisitor(currentID, newConfigId);
String oldName = rocket.getFlightConfigurationName(currentId);
CopyFlightConfigurationVisitor v = new CopyFlightConfigurationVisitor(currentId, newConfigId);
v.visit(rocket);
// Select the new configuration
this.selectConfiguration(newConfigId);
rocket.getDefaultConfiguration().setFlightConfigurationID(newConfigId);
// Copy the name.
this.changeConfigurationName(oldName);
motorConfigurationPanel.fireTableDataChanged();
@ -195,13 +196,15 @@ public class FlightConfigurationDialog extends JDialog {
}
public void changeConfigurationName(String newName) {
rocket.setFlightConfigurationName(currentID, newName);
String currentId = rocket.getDefaultConfiguration().getFlightConfigurationID();
rocket.setFlightConfigurationName(currentId, newName);
}
public void removeConfiguration() {
if (currentID == null)
private void removeConfiguration() {
String currentId = rocket.getDefaultConfiguration().getFlightConfigurationID();
if (currentId == null)
return;
rocket.removeFlightConfigurationID(currentID);
rocket.removeFlightConfigurationID(currentId);
rocket.getDefaultConfiguration().setFlightConfigurationID(null);
motorConfigurationPanel.fireTableDataChanged();
recoveryConfigurationPanel.fireTableDataChanged();
@ -216,8 +219,9 @@ public class FlightConfigurationDialog extends JDialog {
}
private void updateButtonState() {
removeConfButton.setEnabled(currentID != null);
renameConfButton.setEnabled(currentID != null);
String currentId = rocket.getDefaultConfiguration().getFlightConfigurationID();
removeConfButton.setEnabled(currentId != null);
renameConfButton.setEnabled(currentId != null);
motorConfigurationPanel.updateButtonState();
recoveryConfigurationPanel.updateButtonState();
separationConfigurationPanel.updateButtonState();

View File

@ -641,6 +641,8 @@ public class Rocket extends RocketComponent {
return getFlightConfigurationDescription(id);
}
// FIXME: Change to private
/**
* Return a description for the flight configuration, generated from the motor
* designations of the components.