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