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