1 package net.sf.openrocket.gui;
3 import java.awt.event.ActionEvent;
4 import java.util.ArrayList;
7 import javax.swing.AbstractAction;
8 import javax.swing.JPanel;
9 import javax.swing.JToggleButton;
10 import javax.swing.event.ChangeEvent;
11 import javax.swing.event.ChangeListener;
13 import net.miginfocom.swing.MigLayout;
14 import net.sf.openrocket.rocketcomponent.Configuration;
17 public class StageSelector extends JPanel implements ChangeListener {
19 private final Configuration configuration;
21 private List<JToggleButton> buttons = new ArrayList<JToggleButton>();
23 public StageSelector(Configuration configuration) {
24 super(new MigLayout("gap 0!"));
25 this.configuration = configuration;
27 JToggleButton button = new JToggleButton(new StageAction(0));
32 configuration.addChangeListener(this);
35 private void updateButtons() {
36 int stages = configuration.getStageCount();
37 if (buttons.size() == stages)
40 while (buttons.size() > stages) {
41 JToggleButton button = buttons.remove(buttons.size()-1);
45 while (buttons.size() < stages) {
46 JToggleButton button = new JToggleButton(new StageAction(buttons.size()));
58 public void stateChanged(ChangeEvent e) {
63 private class StageAction extends AbstractAction implements ChangeListener {
64 private final int stage;
66 public StageAction(final int stage) {
68 configuration.addChangeListener(this);
73 public Object getValue(String key) {
74 if (key.equals(NAME)) {
75 return "Stage "+(stage+1);
77 return super.getValue(key);
81 public void actionPerformed(ActionEvent e) {
82 configuration.setToStage(stage);
84 // boolean state = (Boolean)getValue(SELECTED_KEY);
85 // if (state == true) {
86 // // Was disabled, now enabled
87 // configuration.setToStage(stage);
89 // // Was enabled, check what to do
90 // if (configuration.isStageActive(stage + 1)) {
91 // configuration.setToStage(stage);
94 // configuration.setAllStages();
96 // configuration.setToStage(stage-1);
99 // stateChanged(null);
104 public void stateChanged(ChangeEvent e) {
105 this.putValue(SELECTED_KEY, configuration.isStageActive(stage));