Interpreter2.java
1    /* 
2    * This interpreter is intended to paint different color 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   package interpreters;
14   
15   import painter.SPainter;
16   import shapes.SCircle;
17   
18   import javax.swing.*;
19   import java.awt.*;
20   
21   public class Interpreter2 {
22   
23       private void interpreter() {
24           //Create objects 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 | GREEN | YELLOW | 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   
57       // INFRASTRUCTURE FOR SOME SIMPLE PAINTING
58   
59       public Interpreter2() {
60           interpreter();
61       }
62   
63       public static void main(String [] args) {
64           SwingUtilities.invokeLater(new Runnable() {
65               public void run() {
66                   new Interpreter2();
67               }
68           });
69       }
70   }
71