Disable stage selector if stage has no children + ttips
This commit is contained in:
parent
6585e07140
commit
26414da9f7
@ -64,6 +64,8 @@ RocketPanel.lbl.Stability = Stability:
|
||||
RocketPanel.checkbox.ShowCGCP = Show CG/CP
|
||||
RocketPanel.checkbox.ShowCGCP.ttip = Disabling this checkbox hides the CG and CP markings in the rocket view.
|
||||
RocketPanel.lbl.Stages = Stages:
|
||||
RocketPanel.btn.Stages.Toggle.ttip = Toggle this button to activate or deactive the corresponding stage in your design.
|
||||
RocketPanel.btn.Stages.NoChildren.ttip = <html>This stages does not have any child components and is therefore marked as inactive.<br>Add components to the stage to activate it.</html>
|
||||
RocketPanel.ttip.Rotation = Change the rocket's roll rotation (only affects the rocket view)
|
||||
|
||||
! BasicFrame
|
||||
|
@ -11,18 +11,21 @@ import javax.swing.JToggleButton;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import net.sf.openrocket.gui.widgets.SelectColorToggleButton;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.rocketcomponent.AxialStage;
|
||||
import net.sf.openrocket.rocketcomponent.BodyTube;
|
||||
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
|
||||
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
|
||||
import net.sf.openrocket.rocketcomponent.Rocket;
|
||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.util.StateChangeListener;
|
||||
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class StageSelector extends JPanel implements StateChangeListener {
|
||||
|
||||
private static final Translator trans = Application.getTranslator();
|
||||
private final Rocket rocket;
|
||||
|
||||
private List<JToggleButton> buttons = new ArrayList<JToggleButton>();
|
||||
@ -61,9 +64,16 @@ public class StageSelector extends JPanel implements StateChangeListener {
|
||||
|
||||
private class StageAction extends AbstractAction {
|
||||
private final AxialStage stage;
|
||||
|
||||
|
||||
public StageAction(final AxialStage stage) {
|
||||
this.stage = stage;
|
||||
if (this.stage.getChildCount() == 0) {
|
||||
putValue(SHORT_DESCRIPTION, trans.get("RocketPanel.btn.Stages.NoChildren.ttip"));
|
||||
setEnabled(false);
|
||||
} else {
|
||||
putValue(SHORT_DESCRIPTION, trans.get("RocketPanel.btn.Stages.Toggle.ttip"));
|
||||
}
|
||||
updateUI();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -77,6 +87,15 @@ public class StageSelector extends JPanel implements StateChangeListener {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// Don't toggle the state if the stage has no children (and is therefore inactive)
|
||||
if (stage.getChildCount() == 0) {
|
||||
putValue(SHORT_DESCRIPTION, trans.get("RocketPanel.btn.Stages.NoChildren.ttip"));
|
||||
setEnabled(false);
|
||||
return;
|
||||
} else {
|
||||
setEnabled(true);
|
||||
putValue(SHORT_DESCRIPTION, trans.get("RocketPanel.btn.Stages.Toggle.ttip"));
|
||||
}
|
||||
rocket.getSelectedConfiguration().toggleStage(stage.getStageNumber());
|
||||
rocket.fireComponentChangeEvent(ComponentChangeEvent.AEROMASS_CHANGE | ComponentChangeEvent.MOTOR_CHANGE );
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user