C:\Users\notebook\Documents\NetBeansProjects\CS2\src\frames\SV2Frame.java
  1 /*
  2  * Frame for the SV2 program, the first version of "Squaresville".
  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 notebook
 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         // northern region
 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         // western region
 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         // eastern region
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         // central region
130         int width = 740;
131         int height = 315; // adjust these two number if you need to
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         // southern region
145         input = new JTextField();
146 
147         // place the components in the frame
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     // This method serves to implement the ActionListener interface
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