001 package viewguitest;
002 import java.awt.Container;
003 import java.awt.GridLayout;
004 import java.awt.event.ActionEvent;
005 import java.awt.event.ActionListener;
006
007 import javax.swing.JButton;
008 import javax.swing.JFrame;
009 import javax.swing.JPanel;
010
011 import antichess.GameClock;
012 import antichess.Player;
013 import antichess.viewgui.TimerLabel;
014
015 /**
016 *
017 * The TimerLabel test tests the TimerLabel class and the ChessClock class
018 * which in turn tests the methods in the GameTimer class that ChessClock relies on
019 *
020 *
021 *
022 * Because of the difficulty of writing automated tests for timers this is
023 * all implemented in a GUI.
024 *
025 *
026 * @author nlharr
027 *
028 *
029 *
030 */
031
032 public class TimerLabelTest implements ActionListener {
033
034
035
036 /**
037 * @return the content plane for the GUI
038 */
039 private GameClock tempClock;
040 private JButton switchButton;
041 private JButton stopButton;
042 private JButton startWhiteButton;
043 private JButton startBlackButton;
044 private JButton setWhiteButton5minutes;
045 private JButton setBlackButton5minutes;
046 private JButton setWhiteButton15minutes;
047 private JButton setBlackButton15minutes;
048 private JButton setWhiteButton30seconds;
049 private JButton setBlackButton30seconds;
050
051
052 public Container getContentPane(){
053 Player[] playerList = new Player[2];
054 playerList[0] = Player.WHITE;
055 playerList[1] = Player.BLACK;
056 long[] times = new long[2];
057
058 times[0] = 50000;
059 times[1] = 120000;
060
061 tempClock = new GameClock(playerList, times);
062 tempClock.startTimer(Player.WHITE);
063 JPanel jp = new JPanel(new GridLayout(0,5));
064 for (int i=0; i<10; i++){
065 jp.add(new TimerLabel(tempClock, Player.WHITE));
066 jp.add(new TimerLabel(tempClock, Player.BLACK));
067 jp.add(new TimerLabel(tempClock, Player.RED));
068
069 }
070 stopButton = new JButton("stop");
071 stopButton.addActionListener(this);
072 jp.add(stopButton);
073
074 startWhiteButton = new JButton("startWhite");
075 startWhiteButton.addActionListener(this);
076 jp.add(startWhiteButton);
077
078 startBlackButton = new JButton("startBlack");
079 startBlackButton.addActionListener(this);
080 jp.add(startBlackButton);
081
082
083 setWhiteButton5minutes = new JButton("Set White 5 minutes");
084 setWhiteButton5minutes.addActionListener(this);
085 jp.add(setWhiteButton5minutes);
086
087 setBlackButton5minutes = new JButton("Set Black 5 minutes");
088 setBlackButton5minutes.addActionListener(this);
089 jp.add(setBlackButton5minutes);
090
091 setBlackButton15minutes = new JButton("Set Black 15 minutes");
092 setBlackButton15minutes.addActionListener(this);
093 jp.add(setBlackButton15minutes);
094
095 setWhiteButton15minutes = new JButton("Set White 15 minutes");
096 setWhiteButton15minutes.addActionListener(this);
097 jp.add(setWhiteButton15minutes);
098
099 setBlackButton30seconds = new JButton("Set Black 30 seconds");
100 setBlackButton30seconds.addActionListener(this);
101 jp.add(setBlackButton30seconds);
102
103 setWhiteButton30seconds = new JButton("Set White 30 seconds");
104 setWhiteButton30seconds.addActionListener(this);
105 jp.add(setWhiteButton30seconds);
106
107
108
109 return jp;
110 }
111
112
113 /**
114 * Handles events for the TimerLabelTest
115 */
116 public void actionPerformed(ActionEvent e) {
117 if (e.getSource().equals(stopButton)){
118 tempClock.stopTimer();
119 }else if (e.getSource().equals(startWhiteButton)){
120 tempClock.startTimer(Player.WHITE);
121 }else if (e.getSource().equals(startBlackButton)){
122 tempClock.startTimer(Player.BLACK);
123 }else if (e.getSource().equals(setBlackButton5minutes)){
124 tempClock.setTime(300000, Player.BLACK);
125 }else if (e.getSource().equals(setWhiteButton5minutes)){
126 tempClock.setTime(300000, Player.WHITE);
127 }else if (e.getSource().equals(setBlackButton15minutes)){
128 tempClock.setTime(900000, Player.BLACK);
129 }else if (e.getSource().equals(setWhiteButton15minutes)){
130 tempClock.setTime(900000, Player.WHITE);
131 }else if (e.getSource().equals(setBlackButton30seconds)){
132 tempClock.setTime(30000, Player.BLACK);
133 }else if (e.getSource().equals(setWhiteButton30seconds)){
134 tempClock.setTime(30000, Player.WHITE);
135 }
136 }
137
138
139 /**
140 * Create the GUI and shows it.
141 */
142
143 public static void createAndShowGUI() {
144 //Create and set up the window
145 JFrame.setDefaultLookAndFeelDecorated(true);
146 JFrame frame = new JFrame("AntiChess");
147 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
148
149 //Create and set up the content pane and menu bar
150 TimerLabelTest gui = new TimerLabelTest();
151 frame.setContentPane(gui.getContentPane());
152 //Display the window
153 frame.setSize(800, 600);
154 frame.setVisible(true);
155 }
156
157 //used in testing
158 public static void main(String args[]){
159
160 javax.swing.SwingUtilities.invokeLater(new Runnable() {
161 public void run() {
162 createAndShowGUI();
163 }
164 });
165 }
166
167 }