/home/kchan2/NetBeansProjects/CS1/src/interpreters/Interpreter3.java
 1 /*
 2  * This interpreter is intended to paint different colored dots in a window.
 3  * 
 4  * The commands that the interpreter can recognize and respond to are:
 5  * - BLUE: [aint a blue dot
 6  * - RED: paint a red dot
 7  * - GREEN: paint a green dot
 8  * - YELLOW: paint a yellow dot
 9  * - RANDOM: paint a dot with a random color
10  * - HELP: show a list of thst commands in a dialog message box
11  * - EXIT: terminate the program
12  */
13 
14 package interpreters;
15 
16 import java.awt.Color;
17 import javax.swing.JOptionPane;
18 import javax.swing.SwingUtilities;
19 import painter.SPainter;
20 import shapes.SCircle;
21 
22 /**
23  *
24  * @author kchan2
25  */
26 public class Interpreter3 {
27     
28     private void interpreter() {
29         
30         //CREATE OBJECTS TO THINK WITH
31         SPainter miro = new SPainter("Dot Thing",400,400);
32         miro.setScreenLocation(0,0);
33         SCircle dot = new SCircle(180);
34         
35         //REPEATEDLY TAKE A COMMAND FROM AN INPUT DIALOG BOX AND INTERPRET IT
36         while ( true ) {
37             String command = JOptionPane.showInputDialog(null,"Command?");
38             if (command == null) {command = "exit";} // user clicked on Cancel
39             if (command.equalsIgnoreCase("blue")) {
40                 miro.setColor(Color.BLUE);
41                 miro.paint(dot);
42             } else if (command.equalsIgnoreCase("red")) {
43                 miro.setColor(Color.RED);
44                 miro.paint(dot);
45             } else if (command.equalsIgnoreCase("green")) {
46                 miro.setColor(Color.green);
47                 miro.paint(dot);
48             } else if (command.equalsIgnoreCase("yellow")) {
49                 miro.setColor(Color.yellow);
50                 miro.paint(dot);
51             } else if (command.equalsIgnoreCase("random")) {
52                 miro.setColor(randomColor());
53                 miro.paint(dot);
54             } else if (command.equalsIgnoreCase("help")) {
55                 JOptionPane.showMessageDialog(null,"Valid commands are: " 
56                         + "RED | BLUE | GREEN | YELLOW | RANDOM | HELP | EXIT");
57             } else if (command.equalsIgnoreCase("exit")) {
58                 miro.end();
59                 System.out.println("Thank you for viewing the dots ...");
60                 break;
61             } else {
62                 JOptionPane.showMessageDialog(null, "Unrecognizble command:" 
63                         + command.toUpperCase());
64             }
65             
66         }
67     }
68 
69     // INFRASTRUCTURE FOR SOME SIMPLE PAINTING
70     
71     public Interpreter3() {
72         interpreter();
73     }
74     
75     public static void main(String[] args) {
76         SwingUtilities.invokeLater(new Runnable() {
77             public void run() {
78                 new Interpreter3();
79             }
80         });
81     }
82 
83     private static Color randomColor() {
84         int rv = (int)(Math.random()*256);
85         int gv = (int)(Math.random()*256);
86         int bv = (int)(Math.random()*256);
87         return new Color(rv,gv,bv);
88     }
89     
90 }