Interpreter1.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    * -HELP: show a list of the commands in a dialog 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   import java.awt.*;
21   import java.sql.SQLOutput;
22   
23   public class Interpreter1 {
24   
25       private void interpreter(){
26   
27           //CREATE OBJECTS TO THINK WITH
28           SPainter miro= new SPainter("Dot thing", 400, 400);
29           miro.setScreenLocation(0,0);
30           SCircle dot= new SCircle(180);
31   
32           //REPEATEDLY TAKE A COMMAND FROM AN INPUT DIALOG BOX AND INTERPRET IT
33           while (true){
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               } else if (command.equalsIgnoreCase("Red")) {
40                   miro.setColor(Color.RED);
41                   miro.paint(dot);
42               } else if (command.equalsIgnoreCase("help")) {
43                   JOptionPane.showMessageDialog(null, "Valid Commands are:"
44                           + "RED| BLUE| HELP| EXIT");
45               } else if (command.equalsIgnoreCase("exit")) {
46                   miro.end();
47                   System.out.println("Thank you for viewing the dots...");
48                   break;
49   
50               } else {
51                   JOptionPane.showMessageDialog(null, "Unrecognizable command:"
52                           + command.toUpperCase());
53   
54           }
55           }
56       }
57       //  INFRASTRUCTURE FOR SOME SIMPLE PAINTING
58       public Interpreter1() {
59           interpreter();
60   
61       }
62       public static void main(String []args) {
63           SwingUtilities.invokeLater(new Runnable() {
64               public void run() {
65                   new Interpreter1();
66               }
67           });
68       }
69   }
70