001 package swingui;
002
003 import java.awt.event.ActionEvent;
004 import java.awt.event.ActionListener;
005
006 import javax.swing.JButton;
007 import javax.swing.JPanel;
008
009 /** The ModePanel contains a Play/Pause button that allows the user to toggle between
010 * build and play modes.
011 */
012 public class ModePanel extends JPanel implements ActionListener {
013 /** a serial version uid **/
014 private static final long serialVersionUID = 1L;
015
016 /** a reference to the gui whose mode we are changing **/
017 private MainGUI gui;
018
019 //component
020 private JButton play_pause;
021
022 /** Create a ModePanel, initialize in pause/build mode **/
023 public ModePanel(MainGUI gui) {
024 this.gui = gui;
025 play_pause = new JButton("Play");
026 play_pause.addActionListener(this);
027 add(play_pause);
028 }
029
030 /** toggle play/pause in the gui when the button is pressed **/
031 public void actionPerformed(ActionEvent e) {
032 JButton src = (JButton)e.getSource();
033 if (src.getText().equals("Play")) {
034 src.setText("Pause");
035 gui.play();
036 } else if (src.getText().equals("Pause")) {
037 src.setText("Play");
038 gui.pause();
039 } else {
040 throw new RuntimeException("invalid mode: " + src.getText());
041 }
042 }
043
044 /** Set the mode panel to be in play mode **/
045 public void setPlayMode() {
046 play_pause.setText("Pause");
047 }
048 /** Set the mode panel to be in build mode **/
049 public void setBuildMode() {
050 play_pause.setText("Play");
051 }
052 }