Interpreter1.java
1    /* 
2     * This interpreter is intended to paint different colored dots ina window. 
3     * 
4     * The commands that the interpreter can respond to and recognize are: 
5     *   - BLUE: paint a blue dot 
6     *   - RED: paint a red dot 
7     *   - HELP: show a list of the commands in a dialogue message box 
8     *   - EXIT: terminate the program 
9     */
10   
11   package interpreters;
12   
13   import java.awt.Color;
14   import javax.swing.JOptionPane;
15   import javax.swing.SwingUtilities;
16   import painter.SPainter;
17   import shapes.SCircle;
18   
19   
20   
21   public class Interpreter1 {
22   
23       private void interpreter() {
24   
25           // CREATE OBJECTS TO THINK WITH
26   
27           SPainter miro = new SPainter("Dot Thing", 400, 400);
28           miro.setScreenLocation(0 , 0);
29           SCircle dot = new SCircle(180);
30   
31           // REPEATEDLY TAKE A COMMAND FROM AN INPUT DIALOGUE BOX AND INTERPRET IT
32           while (true) {
33               String command = JOptionPane.showInputDialog(null, "Command?");
34               if (command == null){command = "exit";} // USER CLICKED ON CANCEL
35               if (command.equalsIgnoreCase("blue")) {
36                   miro.setColor(Color.BLUE);
37                   miro.paint(dot);
38               } else if (command.equalsIgnoreCase("red")) {
39                   miro.setColor(Color.RED);
40                   miro.paint(dot);
41               } else if (command.equalsIgnoreCase("help")) {
42                   JOptionPane.showMessageDialog(null, "Valid commands are: "
43                           + "RED | BLUE | HELP | EXIT");
44               } else if (command.equalsIgnoreCase("exit")) {
45                   miro.end();
46                   System.out.println("Thank you for viewing the dots ... ");
47                   break;
48               } else {
49                   JOptionPane.showMessageDialog(null, "Unrecognizable command: "
50                           + command.toUpperCase());
51               }
52           }
53       }
54   
55       // INFRASTRUCTURE FOR SOME SIMPLE PAINTING
56   
57       public Interpreter1() {
58           interpreter();
59       }
60   
61       public static void main (String[] args) {
62           SwingUtilities.invokeLater(new Runnable() {
63               public void run() {
64                   new Interpreter1();
65               }
66           });
67       }
68   }
69