Interpreter2.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     * - HELP: show a list of the commands in a dialog message box 
10    * - EXIT: terminate the program 
11    */
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   public class Interpreter2
23   {
24       private void interpreter()
25       {
26           // CREATE OBJECTS TO THINK WITH
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 DIALOG BOX AND INTERPRET IT
32           while(true)
33           {
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               }
40               else if (command.equalsIgnoreCase("red"))
41               {
42                   miro.setColor(Color.RED);
43                   miro.paint(dot);
44               }
45               else if (command.equalsIgnoreCase("green"))
46               {
47                   miro.setColor(Color.GREEN);
48                   miro.paint(dot);
49               }
50               else if (command.equalsIgnoreCase("yellow"))
51               {
52                   miro.setColor(Color.YELLOW);
53                   miro.paint(dot);
54               }
55               else if (command.equalsIgnoreCase("help"))
56               {
57                   JOptionPane.showMessageDialog(null, "Valid commands are: " + "RED | BLUE | GREEN | YELLOW | HELP | EXIT ");
58               }
59               else if (command.equalsIgnoreCase("exit"))
60               {
61                   miro.end();
62                   System.out.println("Thank you for viewing the dots ...");
63                   break;
64               }
65               else
66               {
67                   JOptionPane.showMessageDialog(null, "Unrecognizable command: "
68                           + command.toUpperCase());
69               }
70   
71           }
72       }
73   
74       // INFRASTRUCTURE FOR SOME SIMPLE PAINTING
75   
76       public Interpreter2()
77       {
78           interpreter();
79       }
80   
81       public static void main(String[] args)
82       {
83           SwingUtilities.invokeLater(new Runnable() {
84               public void run() {
85                   new Interpreter2();
86               }
87           });
88       }
89   }
90