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    package interpreters;
13    import java.awt.Color;
14    import javax.swing.JOptionPane;
15    import javax.swing.SwingUtilities;
16    import painter.SPainter;
17    import shapes.SCircle;
18    public class Interpreter2 {
19        private void interpreter() {
20            // CREATE OBJECTS TO THINK WITH
21            SPainter miro = new SPainter("Dot Thing", 400, 400);
22            miro.setScreenLocation(0, 0);
23            SCircle dot = new SCircle(180);
24   
25            // REPEATEDLY TAKE A COMMAND FROM AN INPUT DIALOG BOX AND INTERPRET IT
26            while (true) {
27                String command = JOptionPane.showInputDialog(null, "Command?");
28                if (command == null) {
29                    command = "exit";
30                } // user clicked on Cancel
31                if (command.equalsIgnoreCase("blue")) {
32                    miro.setColor(Color.BLUE);
33                    miro.paint(dot);
34                } else if (command.equalsIgnoreCase("red")) {
35                    miro.setColor(Color.RED);
36                    miro.paint(dot);
37                } else if (command.equalsIgnoreCase("green")) {
38                    miro.setColor(Color.GREEN);
39                    miro.paint(dot);
40                }   else if (command.equalsIgnoreCase("yellow")) {
41                        miro.setColor(Color.YELLOW);
42                        miro.paint(dot);
43                } else if (command.equalsIgnoreCase("help")) {
44                    JOptionPane.showMessageDialog(null, "Valid commands are: "
45                            + "RED | BLUE | GREEN | YELLOW | HELP | EXIT ");
46                } else if (command.equalsIgnoreCase("exit")) {
47                    miro.end();
48                    System.out.println("Thank you for viewing the dots ...");
49                    break;
50                } else {
51                    JOptionPane.showMessageDialog(null, "Unrecognizable command: "
52                            + command.toUpperCase());
53                }
54            }
55        }
56   
57        // INFRASTRUCTURE FOR SOME SIMPLE PAINTING
58        public Interpreter2() {
59            interpreter();
60        }
61   
62        public static void main(String[] args) {
63            SwingUtilities.invokeLater(new Runnable() {
64                public void run() {
65                    new Interpreter2();
66                }
67            });
68        }
69    }