C:\Users\notebook\Documents\NetBeansProjects\CS2\src\frames\SV2Frame.java |
1
2
3
4 package frames;
5
6 import java.awt.BorderLayout;
7 import java.awt.Color;
8 import java.awt.Container;
9 import java.awt.Dimension;
10 import java.awt.FlowLayout;
11 import java.awt.GridLayout;
12 import java.awt.event.ActionEvent;
13 import java.awt.event.ActionListener;
14 import javax.swing.JButton;
15 import javax.swing.JFrame;
16 import javax.swing.JPanel;
17 import javax.swing.JTextArea;
18 import javax.swing.JTextField;
19 import painter.SPainter;
20 import shapes.SSquare;
21 import utilities.Random;
22
23
24
25 @author
26
27 public class SV2Frame extends JFrame implements ActionListener {
28
29 JButton blueButton;
30 JButton redButton;
31 JButton yellowButton;
32 JButton colorButton;
33 JButton mfdButton;
34 JButton mbkButton;
35 JButton mrtButton;
36 JButton mltButton;
37 JButton lrtButton;
38 JButton lltButton;
39 JButton lmfButton;
40 JButton srtButton;
41 JButton sltButton;
42 JButton nopButton;
43 JButton clearButton;
44 JButton cleanButton;
45 JButton resetButton;
46 JButton thing1Button;
47 JButton thing2Button;
48 JButton thing3Button;
49 JButton thing4Button;
50 JButton thing5Button;
51 JPanel reflector;
52 JTextArea output;
53 JTextField input;
54 SPainter painter;
55 SSquare square;
56
57 static private Color BLUE = new Color(51, 212, 255);
58 static private Color RED = new Color(255, 51, 100);
59 static private Color YELLOW = new Color(255, 233, 51);
60
61 public SV2Frame(String title) {
62 super(title);
63 this.square = new SSquare(20);
64 setSize(900, 700);
65 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
66 addComponents(getContentPane());
67 addListeners();
68 setVisible(true);
69 setResizable(false);
70 }
71
72 private void addComponents(Container contentPane) {
73
74 clearButton = new JButton("Clear");
75 cleanButton = new JButton("Clean");
76 resetButton = new JButton("Reset");
77 JPanel northernRegion = new JPanel();
78 northernRegion.setLayout(new FlowLayout());
79 northernRegion.add(clearButton);
80 northernRegion.add(cleanButton);
81 northernRegion.add(resetButton);
82
83
84 blueButton = new JButton("BLUE");
85 redButton = new JButton("RED");
86 yellowButton = new JButton("YELLOW");
87 colorButton = new JButton("COLOR");
88 mfdButton = new JButton("MFD");
89 mbkButton = new JButton("MBK");
90 mrtButton = new JButton("MRT");
91 mltButton = new JButton("MLT");
92 lrtButton = new JButton("LRT");
93 lltButton = new JButton("LLT");
94 lmfButton = new JButton("LMF");
95 srtButton = new JButton("SRT");
96 sltButton = new JButton("SLT");
97 nopButton = new JButton("NOP");
98 JPanel westernRegion = new JPanel();
99 westernRegion.setLayout(new GridLayout(14, 1));
100 westernRegion.add(blueButton);
101 westernRegion.add(redButton);
102 westernRegion.add(yellowButton);
103 westernRegion.add(colorButton);
104 westernRegion.add(mfdButton);
105 westernRegion.add(mbkButton);
106 westernRegion.add(mrtButton);
107 westernRegion.add(mltButton);
108 westernRegion.add(lrtButton);
109 westernRegion.add(lltButton);
110 westernRegion.add(lmfButton);
111 westernRegion.add(srtButton);
112 westernRegion.add(sltButton);
113 westernRegion.add(nopButton);
114
115
116 thing1Button = new JButton("HEART");
117 thing2Button = new JButton("X");
118 thing3Button = new JButton("DIAMOND");
119 thing4Button = new JButton("SMILE");
120 thing5Button = new JButton("PYRAMID");
121 JPanel easternRegion = new JPanel();
122 easternRegion.setLayout(new GridLayout(5, 1));
123 easternRegion.add(thing1Button);
124 easternRegion.add(thing2Button);
125 easternRegion.add(thing3Button);
126 easternRegion.add(thing4Button);
127 easternRegion.add(thing5Button);
128
129
130 int width = 740;
131 int height = 315;
132 reflector = new JPanel();
133 reflector.setSize(new Dimension(width, height));
134 painter = new SPainter(reflector);
135 output = new JTextArea(width, height);
136 output.setBackground(Color.WHITE);
137 output.setWrapStyleWord(true);
138 output.setLineWrap(true);
139 Container centralRegion = new Container();
140 centralRegion.setLayout(new GridLayout(2, 1, 6, 6));
141 centralRegion.add(painter);
142 centralRegion.add(output);
143
144
145 input = new JTextField();
146
147
148 contentPane.setLayout(new BorderLayout());
149 contentPane.add(northernRegion, BorderLayout.NORTH);
150 contentPane.add(input, BorderLayout.SOUTH);
151 contentPane.add(easternRegion, BorderLayout.EAST);
152 contentPane.add(westernRegion, BorderLayout.WEST);
153 contentPane.add(centralRegion, BorderLayout.CENTER);
154 }
155
156 private void addListeners() {
157 blueButton.addActionListener(this);
158 redButton.addActionListener(this);
159 yellowButton.addActionListener(this);
160 colorButton.addActionListener(this);
161 mfdButton.addActionListener(this);
162 mbkButton.addActionListener(this);
163 mrtButton.addActionListener(this);
164 mltButton.addActionListener(this);
165 lrtButton.addActionListener(this);
166 lltButton.addActionListener(this);
167 lmfButton.addActionListener(this);
168 srtButton.addActionListener(this);
169 sltButton.addActionListener(this);
170 nopButton.addActionListener(this);
171 clearButton.addActionListener(this);
172 cleanButton.addActionListener(this);
173 resetButton.addActionListener(this);
174 thing1Button.addActionListener(this);
175 thing2Button.addActionListener(this);
176 thing3Button.addActionListener(this);
177 thing4Button.addActionListener(this);
178 thing5Button.addActionListener(this);
179 input.addActionListener(this);
180 }
181
182
183 public void actionPerformed(ActionEvent event) {
184 String command = event.getActionCommand();
185 processCommand(command);
186 if (event.getSource() instanceof JTextField) {
187 input.setText("");
188 }
189 }
190
191 private void processCommand(String command) {
192 output.append(command.toUpperCase() + " ");
193 if (command.equalsIgnoreCase("RED")) {
194 red();
195 } else if (command.equalsIgnoreCase("YELLOW")) {
196 yellow();
197 } else if (command.equalsIgnoreCase("BLUE")) {
198 blue();
199 } else if (command.equalsIgnoreCase("COLOR")) {
200 color();
201 } else if (command.equalsIgnoreCase("MFD")) {
202 mfd();
203 } else if (command.equalsIgnoreCase("MBK")) {
204 mbk();
205 } else if (command.equalsIgnoreCase("MRT")) {
206 mrt();
207 } else if (command.equalsIgnoreCase("MLT")) {
208 mlt();
209 } else if (command.equalsIgnoreCase("LMF")) {
210 lmf();
211 } else if (command.equalsIgnoreCase("SRT")) {
212 srt();
213 } else if (command.equalsIgnoreCase("SLT")) {
214 slt();
215 } else if (command.equalsIgnoreCase("LRT")) {
216 lrt();
217 } else if (command.equalsIgnoreCase("LLT")) {
218 llt();
219 } else if (command.equalsIgnoreCase("NOP")) {
220 nop();
221 } else if (command.equalsIgnoreCase("CLEAN")) {
222 clean();
223 } else if (command.equalsIgnoreCase("CLEAR")) {
224 clear();
225 } else if (command.equalsIgnoreCase("RESET")) {
226 reset();
227 } else if (command.equalsIgnoreCase("HEART")) {
228 thing1();
229 } else if (command.equalsIgnoreCase("X")) {
230 thing2();
231 } else if (command.equalsIgnoreCase("DIAMOND")) {
232 thing3();
233 } else if (command.equalsIgnoreCase("SMILE")) {
234 thing4();
235 } else if (command.equalsIgnoreCase("PYRAMID")) {
236 thing5();
237 } else {
238 output.append("### UNRECOGNIZED COMMAND: " + command.toUpperCase() + "### ");
239 }
240 }
241
242 private void red() {
243 painter.setColor(RED);
244 paintSquare();
245 }
246
247 private void yellow() {
248 painter.setColor(YELLOW);
249 paintSquare();
250 }
251
252 private void blue() {
253 painter.setColor(BLUE);
254 paintSquare();
255 }
256
257 private void color() {
258 painter.setColor(Random.color());
259 paintSquare();
260 }
261
262 private void mfd() {
263 painter.mfd(square.side());
264 }
265
266 private void mbk() {
267 painter.mbk(square.side());
268 }
269
270 private void mrt() {
271 painter.mrt(square.side());
272 }
273
274 private void mlt() {
275 painter.mlt(square.side());
276 }
277
278 private void lmf() {
279 painter.mfd(square.side() * 2);
280 }
281
282 private void srt() {
283 painter.tr();
284 }
285
286 private void slt() {
287 painter.tl();
288 }
289
290 private void lrt() {
291 painter.mfd(square.side());
292 painter.tr();
293 painter.mfd(square.side());
294 }
295
296 private void llt() {
297 painter.mfd(square.side());
298 painter.tl();
299 painter.mfd(square.side());
300 }
301
302 private void nop() {
303 output.append("");
304 }
305
306 private void clean() {
307 painter.wash();
308 }
309
310 private void clear() {
311 output.setText(null);
312 }
313
314 private void reset() {
315 painter.moveToCenter();
316 painter.faceNorth();
317 painter.wash();
318 output.setText(null);
319 }
320
321 private void thing1() {
322 reset(); lmf();
323 red();
324 lrt(); red();
325 llt(); red();
326 srt(); lrt(); red();
327 llt(); red();
328 srt(); mfd(); red();
329 lrt(); red();
330 llt(); red();
331 lrt(); red();
332 llt(); red();
333 srt(); lrt(); red();
334 llt(); red(); lrt(); red(); llt(); red();
335 srt(); mfd(); red();
336 lrt(); red(); llt(); red();
337 srt(); lrt(); red();
338 painter.moveToCenter(); painter.faceNorth();
339 }
340
341 private void thing2() {
342 reset();
343 red();
344 llt(); yellow(); lrt(); blue();
345 painter.moveToCenter(); painter.faceNorth();
346 lrt(); yellow(); llt(); blue();
347 painter.moveToCenter(); painter.faceNorth(); srt(); srt();
348 llt(); yellow(); lrt(); blue();
349 painter.moveToCenter(); painter.faceNorth(); srt(); srt();
350 lrt(); yellow(); llt(); blue();
351 painter.moveToCenter(); painter.faceNorth();
352 }
353
354 private void thing3() {
355 reset(); yellow();
356 lmf();
357 srt(); lrt(); red(); llt(); yellow();
358 srt(); lrt(); blue(); llt(); yellow();
359 srt(); lrt(); red(); llt(); yellow();
360 srt(); lrt(); blue(); llt(); yellow();
361 painter.moveToCenter(); painter.faceNorth();
362 }
363
364 private void thing4() {
365 reset(); lmf();
366 srt(); lmf(); blue(); llt(); yellow(); srt(); lrt(); blue();
367 painter.moveToCenter(); painter.faceNorth(); lmf();
368 slt(); lmf(); blue(); lrt(); yellow(); slt(); llt(); blue();
369 painter.moveToCenter(); painter.faceNorth(); mbk(); mbk(); mbk(); red();
370 mlt(); red(); llt(); red(); lrt(); yellow();
371 painter.moveToCenter(); painter.faceNorth(); mbk(); mbk(); mbk();
372 mrt(); red(); lrt(); red(); llt(); yellow();
373 painter.moveToCenter(); painter.faceNorth();
374 }
375
376 private void thing5() {
377 reset(); yellow(); mfd(); red(); srt(); srt(); lmf();
378 blue(); mlt(); yellow(); mrt(); mrt(); yellow();
379 mfd(); blue(); mrt(); yellow(); mlt(); mlt();
380 red(); mlt(); blue(); mlt(); yellow();
381 painter.moveToCenter(); painter.faceNorth();
382 }
383
384 private void paintSquare() {
385 painter.paint(square);
386 }
387
388 }
389