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

View File

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