Interpreter2.java
    /* 
     * This interpreter is intended to paint different colored dots in a window. 
     * 
     * The commands that interpreter can recognize and respond to are: 
     *  - BLUE: paint a blue dot 
     *  - RED: paint a red dot 
     *  - HELP: show a list of commands in a dialog message box 
     *  - EXIT: terminate the program 
     */

    package interpreters;

    import java.awt.Color;
    import javax.swing.JOptionPane;
    import javax.swing.SwingUtilities;
    import painter.SPainter;
    import shapes.SCircle;

    public class Interpreter2 {

        private void Interpreter() {

            //CREATE OBJECTS TO THINK WITH
            SPainter miro = new SPainter("Dot Thing", 400, 400);
            miro.setScreenLocation(0, 0);
            SCircle dot = new SCircle(180);

            //REPEATEDLY TAKE A COMMAND FROM AN INPUT DIALOG BOX AND INTERPRET
            while (true) {
                String command = JOptionPane.showInputDialog(null, "Command?");
                if (command == null) { command = "exit"; } //user clicked on Cancel
                if (command.equalsIgnoreCase("blue")) {
                    miro.setColor(Color.BLUE);
                    miro.paint(dot);
                } else if (command.equalsIgnoreCase("red")) {
                    miro.setColor(Color.RED);
                    miro.paint(dot);
                } else if (command.equalsIgnoreCase("green")) {
                    miro.setColor(Color.GREEN);
                    miro.paint(dot);
                } else if (command.equalsIgnoreCase("yellow")) {
                    miro.setColor(Color.YELLOW);
                    miro.paint(dot);
                } else if (command.equalsIgnoreCase("help")) {
                    JOptionPane.showMessageDialog(null, "Valid commands are:"
                            + "RED | BLUE | YELLOW | GREEN | HELP | EXIT");
                } else if (command.equalsIgnoreCase("exit")) {
                    miro.end();
                    System.out.println("Thanks You For Viewing the Dots....");
                    break;
                } else {
                    JOptionPane.showMessageDialog(null, "Unrecognizable command:"
                            + command.toUpperCase());
                }
            }
        }

        // INFRASTRUCTURE FOR SOME SIMPLE PAINTIN

        public Interpreter2() {
            Interpreter();
        }

        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new Interpreter2();
                }
            });
        }
    }