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