Wire in copy configuration button using CopyFlightConfigurationVisitor.

This commit is contained in:
kruland2607 2012-10-19 16:05:05 -05:00
parent 4625ca94b6
commit 2d6f3ba8a1
2 changed files with 40 additions and 2 deletions

View File

@ -19,6 +19,7 @@ import net.sf.openrocket.gui.main.BasicFrame;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketvisitors.CopyFlightConfigurationVisitor;
import net.sf.openrocket.startup.Application;
public class FlightConfigurationDialog extends JDialog {
@ -63,7 +64,7 @@ public class FlightConfigurationDialog extends JDialog {
newConfButton.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FlightConfigurationDialog.this.addConfiguration();
addConfiguration();
}
});
@ -94,7 +95,7 @@ public class FlightConfigurationDialog extends JDialog {
copyConfButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// FIXME - !
copyConfiguration();
}
});
panel.add(copyConfButton,"wrap");
@ -162,6 +163,17 @@ public class FlightConfigurationDialog extends JDialog {
updateButtonState();
}
public void copyConfiguration() {
// currentID is the currently selected configuration.
String newConfigId = rocket.newFlightConfigurationID();
CopyFlightConfigurationVisitor v = new CopyFlightConfigurationVisitor(currentID, newConfigId);
v.visit(rocket);
motorConfigurationPanel.fireTableDataChanged();
flightConfigurationModel.fireContentsUpdated();
recoveryConfigurationPanel.fireTableDataChanged();
updateButtonState();
}
public void changeConfigurationName( String newName ) {
rocket.setFlightConfigurationName(currentID, newName);
flightConfigurationModel.fireContentsUpdated();

View File

@ -0,0 +1,26 @@
package net.sf.openrocket.rocketvisitors;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.SupportsFlightConfiguration;
public class CopyFlightConfigurationVisitor extends DepthFirstRecusiveVisitor {
private final String oldConfigId;
private final String newConfigId;
public CopyFlightConfigurationVisitor(String oldConfigId, String newConfigId) {
super();
this.oldConfigId = oldConfigId;
this.newConfigId = newConfigId;
}
@Override
public void doAction(RocketComponent visitable) {
if ( visitable instanceof SupportsFlightConfiguration ) {
((SupportsFlightConfiguration)visitable).cloneFlightConfiguration(oldConfigId, newConfigId);
}
}
}