/home/cdesrivi/NetBeansProjects/CS1/src/interpreters/Interpreter3.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  *  - RANDOM: paint a random color
10  *  - HELP: show a list of the commands in a dialog message box
11  *  - EXIT: terminate the program
12  */
13 
14 package interpreters;
15 
16 import java.awt.Color;
17 import javax.swing.JOptionPane;
18 import javax.swing.SwingUtilities;
19 import painter.SPainter;
20 import shapes.SCircle;
21 
22 /**
23  *
24  * @author cdesrivi
25  */
26 public class Interpreter3 {
27 
28     private void interpreter() {
29         
30         // CREATE OBJECTS TO THINK WITH
31         SPainter miro = new SPainter("Dot Thing",400,400);
32         miro.setScreenLocation(0, 0);
33         SCircle dot = new SCircle(180);
34         
35         // REPEATEDLY TAKE A COMMAND FROM AN INPUT DIALOG BOX AND INTERPRET IT
36         while ( true ) {
37             String command = JOptionPane.showInputDialog(null,"Command?");
38             if ( command == null ) { command = "exit"; } // user clicked on Cancel
39             if ( command.equalsIgnoreCase("blue")) {
40                 miro.setColor(Color.BLUE);
41                 miro.paint(dot);
42             } else if ( command.equalsIgnoreCase("red") ) {
43                 miro.setColor(Color.RED);
44                 miro.paint(dot);
45             } else if ( command.equalsIgnoreCase("green") ) {
46                 miro.setColor(Color.GREEN);
47                 miro.paint(dot);
48             } else if ( command.equalsIgnoreCase("yellow") ) {
49                 miro.setColor(Color.YELLOW);
50                 miro.paint(dot);
51             } else if ( command.equalsIgnoreCase("random") ) {
52                 miro.setColor(randomColor());
53                 miro.paint(dot);
54             } else if ( command.equalsIgnoreCase("help") ) {
55                 JOptionPane.showMessageDialog(null, "Valid commands are: "
56                         + "RED | BLUE | GREEN | YELLOW | RANDOM | HELP | EXIT");
57             } else if ( command.equalsIgnoreCase("exit")) {
58                 miro.end();
59                 System.out.println("Thank you for viewing the dots ...");
60                 break;
61             } else {
62                 JOptionPane.showMessageDialog(null, "Unrecognizable command: "
63                         + command.toUpperCase());
64                 
65             }
66         }
67     }
68     
69     // INFRASTRUCTURE FOR SOME SIMPLE PAINTING
70     
71     public Interpreter3() {
72         interpreter();
73     }
74     
75     public static void main(String[] args) {
76         SwingUtilities.invokeLater(new Runnable() {
77             public void run() {
78                 new Interpreter3();
79             }
80         });
81     }
82 
83     private static Color randomColor() {
84         int rv = (int)(Math.random()*256);
85         int gv = (int)(Math.random()*256);
86         int bv = (int)(Math.random()*256);
87         return new Color(rv,gv,bv);
88     }
89     
90 }
91