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 green dot 
8    -YELLOW: paint 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   import java.awt.Color;
16   import javax.swing.JOptionPane;
17   import javax.swing.SwingUtilities;
18   import painter.SPainter;
19   import shapes.SCircle;
20   
21   public class Interpreter2 {
22   
23       private void interpreter() {
24       //CREATE OBJECTS TO THINK WITH
25       SPainter miro = new SPainter("Dot Thing", 400,400);
26       miro.setScreenLocation(0,0);
27       SCircle dot = new SCircle(180);
28   
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           }else if (command.equalsIgnoreCase("yellow")) {
43               miro.setColor(Color.yellow);
44               miro.paint(dot);
45           }else if (command.equalsIgnoreCase("help")) {
46               JOptionPane.showMessageDialog(null, "Valid commands are: " + "RED | BLUE | YELLOW | GREEN | HELP | EXIT");
47           }else if (command.equalsIgnoreCase("exit")) {
48               miro.end();
49               System.out.println("Thank you for viewing the dots ...");
50               break;
51           } else {
52               JOptionPane.showMessageDialog(null, "Unrecognizable command: " + command.toUpperCase());
53           }
54       }
55   }
56       //INFRASTRUCTURE FOR SOME SIMPLE PAINTING
57       public Interpreter2(){
58           interpreter();
59       }
60   
61       public static void main(String[] args) {
62           SwingUtilities.invokeLater(new Runnable(){
63               public void run() {
64                   new Interpreter2();
65               }
66           });
67       }
68   }
69   
70