Fix flight config buttons still enabled when no motor mount

This commit is contained in:
SiboVG 2022-08-16 21:06:49 +02:00
parent 8b91342f55
commit b3a08555fa

View File

@ -21,6 +21,8 @@ import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.document.Simulation; import net.sf.openrocket.document.Simulation;
import net.sf.openrocket.gui.dialogs.flightconfiguration.RenameConfigDialog; import net.sf.openrocket.gui.dialogs.flightconfiguration.RenameConfigDialog;
import net.sf.openrocket.gui.main.BasicFrame; import net.sf.openrocket.gui.main.BasicFrame;
import net.sf.openrocket.gui.main.RocketActions;
import net.sf.openrocket.gui.util.Icons;
import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
import net.sf.openrocket.rocketcomponent.FlightConfigurableComponent; import net.sf.openrocket.rocketcomponent.FlightConfigurableComponent;
@ -95,19 +97,23 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
tabs.add(trans.get("edtmotorconfdlg.lbl.Stagetab"), separationConfigurationPanel); tabs.add(trans.get("edtmotorconfdlg.lbl.Stagetab"), separationConfigurationPanel);
//// New configuration //// New configuration
newConfButton = new SelectColorButton(newConfigAction); newConfButton = new SelectColorButton();
RocketActions.tieActionToButton(newConfButton, newConfigAction);
this.add(newConfButton,"skip 1,gapright para"); this.add(newConfButton,"skip 1,gapright para");
//// Rename configuration //// Rename configuration
renameConfButton = new SelectColorButton(renameConfigAction); renameConfButton = new SelectColorButton();
RocketActions.tieActionToButton(renameConfButton, renameConfigAction);
this.add(renameConfButton,"gapright para"); this.add(renameConfButton,"gapright para");
//// Remove configuration //// Remove configuration
removeConfButton = new SelectColorButton(removeConfigAction); removeConfButton = new SelectColorButton();
RocketActions.tieActionToButton(removeConfButton, removeConfigAction);
this.add(removeConfButton,"gapright para"); this.add(removeConfButton,"gapright para");
//// Duplicate configuration //// Duplicate configuration
duplicateConfButton = new SelectColorButton(duplicateConfigAction); duplicateConfButton = new SelectColorButton();
RocketActions.tieActionToButton(duplicateConfButton, duplicateConfigAction);
this.add(duplicateConfButton, "wrap"); this.add(duplicateConfButton, "wrap");
tabs.addChangeListener(new ChangeListener() { tabs.addChangeListener(new ChangeListener() {
@ -261,9 +267,10 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
private void updateButtonState() { private void updateButtonState() {
FlightConfigurationId currentId = rocket.getSelectedConfiguration().getFlightConfigurationID(); FlightConfigurationId currentId = rocket.getSelectedConfiguration().getFlightConfigurationID();
// Enable the remove/rename/duplicate buttons only when a configuration is selected. // Enable the remove/rename/duplicate buttons only when a configuration is selected.
removeConfButton.setEnabled(currentId.isValid()); boolean enabled = currentId.isValid() && !currentId.isDefaultId();
renameConfButton.setEnabled(currentId.isValid()); removeConfButton.setEnabled(enabled);
duplicateConfButton.setEnabled(currentId.isValid()); renameConfButton.setEnabled(enabled);
duplicateConfButton.setEnabled(enabled);
// Count the number of motor mounts // Count the number of motor mounts
int motorMountCount = rocket.accept(new ListMotorMounts()).size(); int motorMountCount = rocket.accept(new ListMotorMounts()).size();
@ -326,6 +333,7 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
private class NewConfigAction extends AbstractAction { private class NewConfigAction extends AbstractAction {
public NewConfigAction() { public NewConfigAction() {
putValue(NAME, trans.get("edtmotorconfdlg.but.Newconfiguration")); putValue(NAME, trans.get("edtmotorconfdlg.but.Newconfiguration"));
putValue(LARGE_ICON_KEY, Icons.FILE_NEW);
} }
@Override @Override
@ -337,6 +345,7 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
private class RenameConfigAction extends AbstractAction { private class RenameConfigAction extends AbstractAction {
public RenameConfigAction() { public RenameConfigAction() {
putValue(NAME, trans.get("edtmotorconfdlg.but.Renameconfiguration")); putValue(NAME, trans.get("edtmotorconfdlg.but.Renameconfiguration"));
putValue(SMALL_ICON, Icons.EDIT_RENAME);
} }
@Override @Override
@ -348,6 +357,7 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
private class RemoveConfigAction extends AbstractAction { private class RemoveConfigAction extends AbstractAction {
public RemoveConfigAction() { public RemoveConfigAction() {
putValue(NAME, trans.get("edtmotorconfdlg.but.Removeconfiguration")); putValue(NAME, trans.get("edtmotorconfdlg.but.Removeconfiguration"));
putValue(SMALL_ICON, Icons.EDIT_DELETE);
} }
@Override @Override
@ -359,6 +369,7 @@ public class FlightConfigurationPanel extends JPanel implements StateChangeListe
private class DuplicateConfigAction extends AbstractAction { private class DuplicateConfigAction extends AbstractAction {
public DuplicateConfigAction() { public DuplicateConfigAction() {
putValue(NAME, trans.get("edtmotorconfdlg.but.Duplicateconfiguration")); putValue(NAME, trans.get("edtmotorconfdlg.but.Duplicateconfiguration"));
putValue(SMALL_ICON, Icons.EDIT_DUPLICATE);
} }
@Override @Override