diff --git a/swing/src/net/sf/openrocket/gui/main/FlightConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/FlightConfigurationPanel.java index d4b64a3c4..9bc567177 100644 --- a/swing/src/net/sf/openrocket/gui/main/FlightConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/FlightConfigurationPanel.java @@ -88,15 +88,15 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe tabs = new JTabbedPane(); //// Motor tabs - motorConfigurationPanel = new MotorConfigurationPanel(this, rocket); + motorConfigurationPanel = new MotorConfigurationPanel(this, document, rocket); tabs.add(trans.get("edtmotorconfdlg.lbl.Motortab"), motorConfigurationPanel); //// Recovery tab - recoveryConfigurationPanel = new RecoveryConfigurationPanel(this, rocket); + recoveryConfigurationPanel = new RecoveryConfigurationPanel(this, document, rocket); tabs.add(trans.get("edtmotorconfdlg.lbl.Recoverytab"), recoveryConfigurationPanel); //// Stage tab - separationConfigurationPanel = new SeparationConfigurationPanel(this, rocket); + separationConfigurationPanel = new SeparationConfigurationPanel(this, document, rocket); tabs.add(trans.get("edtmotorconfdlg.lbl.Stagetab"), separationConfigurationPanel); //// New configuration @@ -239,6 +239,8 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe FlightConfigurationId initFcId = fcIds.get(0); String initName = rocket.getFlightConfiguration(initFcId).getNameRaw(); + document.addUndoPosition("Rename configuration(s)"); + // Launch the rename dialog RenameConfigDialog dialog = new RenameConfigDialog(SwingUtilities.getWindowAncestor(this), rocket, initFcId); dialog.setVisible(true); @@ -246,8 +248,6 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe // Get the name of the (potentially renamed) config String newName = rocket.getFlightConfiguration(initFcId).getNameRaw(); - document.addUndoPosition("Rename configuration(s)"); - boolean update = !newName.equals(initName); for (int i = 1; i < fcIds.size(); i++) { FlightConfiguration config = rocket.getFlightConfiguration(fcIds.get(i)); @@ -267,6 +267,8 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe if (fcIds == null || fcIds.size() == 0) return; + document.addUndoPosition("Remove configuration(s)"); + for (FlightConfigurationId fcId : fcIds) { document.removeFlightConfigurationAndSimulations(fcId); } diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java index ee9e53dec..7f4fa0ed9 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/FlightConfigurablePanel.java @@ -22,6 +22,7 @@ import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; +import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.gui.main.FlightConfigurationPanel; import net.sf.openrocket.gui.util.SwingPreferences; import net.sf.openrocket.util.ArrayList; @@ -51,12 +52,14 @@ public abstract class FlightConfigurablePanel { - + private static final String NONE = trans.get("edtmotorconfdlg.tbl.None"); private final JButton selectMotorButton, deleteMotorButton, selectIgnitionButton, resetIgnitionButton; @@ -64,8 +65,8 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel private final JPopupMenu popupMenuFull; // popup menu containing all the options - public MotorConfigurationPanel(final FlightConfigurationPanel flightConfigurationPanel, Rocket rocket) { - super(flightConfigurationPanel, rocket); + public MotorConfigurationPanel(final FlightConfigurationPanel flightConfigurationPanel, OpenRocketDocument document, Rocket rocket) { + super(flightConfigurationPanel, document, rocket); motorChooserDialog = new MotorChooserDialog(SwingUtilities.getWindowAncestor(flightConfigurationPanel)); @@ -306,6 +307,9 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel double initDelay = initMount.getMotorConfig(initFcId).getEjectionDelay(); + document.addUndoPosition("Select motor"); + + // Open the motor chooser dialog motorChooserDialog.setMotorMountAndConfig(initFcId, initMount); motorChooserDialog.open(); @@ -343,6 +347,8 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel return; } + document.addUndoPosition("Delete motor(s)"); + for (MotorMount mount : mounts) { for (FlightConfigurationId fcId : fcIds) { mount.setMotorConfig(null, fcId); @@ -367,6 +373,8 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel IgnitionEvent initialIgnitionEvent = initConfig.getIgnitionEvent(); double initialIgnitionDelay = initConfig.getIgnitionDelay(); + document.addUndoPosition("Select ignition"); + // this call also performs the update changes IgnitionSelectionDialog ignitionDialog = new IgnitionSelectionDialog( SwingUtilities.getWindowAncestor(this.flightConfigurationPanel), @@ -410,6 +418,8 @@ public class MotorConfigurationPanel extends FlightConfigurablePanel return; } + document.addUndoPosition("Reset ignition"); + boolean update = false; for (MotorMount mount : mounts) { for (FlightConfigurationId fcId : fcIds) { diff --git a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java index 1c616cdb0..76e35748b 100644 --- a/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/flightconfigpanel/RecoveryConfigurationPanel.java @@ -21,6 +21,7 @@ import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.formatting.RocketDescriptor; import net.sf.openrocket.gui.dialogs.flightconfiguration.DeploymentSelectionDialog; import net.sf.openrocket.gui.main.FlightConfigurationPanel; @@ -42,8 +43,8 @@ public class RecoveryConfigurationPanel extends FlightConfigurablePanel