package controller; public class CommandController { public CommandController() public void setCommand(Object command) public double execute() throws Exception } package controller; public class CommandParser { public CommandParser() public void addPatterns (String syntax) public String getSymbol (String text) public void removeAllPatterns() } package controller; * This class takes the different data objects/variables packaged into the data object, modifies the controller.Parser and public class Controller { public Controller(DataIn view) public void updateModel(Model model) public void processCommand(String input) throws Exception public void setLanguage(String language) public void reset() } package controller; public class Node { public Node(String value) public void addChild(Node child) public String getValue() public void setValue(String value) public ArrayList getChildren() } package controller; public class ParamParser { public ParamParser() public void addMappings (String syntax) public int getNumParams(String key) } package controller; public class Parser { public Parser(Model model) public void setLanguage(String language) public void parseString(String s) throws Exception public double executeTree(Node root) throws Exception public void printTree(Node root) public void addInstruction(String commandName, Node root) public boolean isValidCommandName(String s) } package main; public class Main extends Application { public void start(Stage stage) } package model.commandabstract; public abstract class Command { public Command(Model model) public abstract double execute () throws Exception; public Model getModel() public double normalizeAngle(double angle) } package model.commandabstract; public abstract class ControlCommand extends Command { public ControlCommand(Node root, Parser parser, Model model) public Node getRoot() public Parser getParser() } package model.commandabstract; public abstract class OneInputCommand extends Command{ public OneInputCommand (double[] parameter, Model model) public double getParam1() } package model.commandabstract; public abstract class TwoInputCommand extends OneInputCommand { public TwoInputCommand (double[] parameters, Model model) public double getParam2() } package model; public class CommandHistory { public CommandHistory() public void addCommand(String command) public void clear() public Collection getCommandHistory() } package model.commands; public class And extends TwoInputCommand{ public And (double[] parameters, Model model) public double execute () } package model.commands; public class ArcTangent extends OneInputCommand{ public ArcTangent (double[] parameter, Model model) public double execute () throws Exception } package model.commands; public class Backward extends Forward{ public Backward (double[] parameters, Model model) public double[] calculateCoordinates(TurtleState turtle) } package model.commands; public class ClearScreen extends Home{ public ClearScreen (double[] parameters, Model model) public double execute() } package model.commands; public class Constant extends OneInputCommand { public Constant (double[] parameter, Model model) public double execute () } package model.commands; public class Cosine extends OneInputCommand{ public Cosine (double[] parameter, Model model) public double execute () throws Exception } package model.commands; public class Difference extends TwoInputCommand{ public Difference (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class DoTimes extends ControlCommand{ public DoTimes(Node root, Parser parser, Model model) throws Exception public double execute() throws Exception } package model.commands; public class Equal extends TwoInputCommand { public Equal (double[] parameters, Model model) public double execute () } package model.commands; public class For extends ControlCommand{ public For(Node root, Parser parser, Model model) throws Exception public double execute() throws Exception } package model.commands; public class Forward extends OneInputCommand{ public Forward (double[] parameters, Model model) public double execute () public double[] calculateCoordinates(TurtleState turtle) } package model.commands; public class GreaterThan extends TwoInputCommand{ public GreaterThan (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class Heading extends Command{ public Heading (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class HideTurtle extends Command{ public HideTurtle (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class Home extends Command{ public Home (double[] parameters, Model model) public double execute () throws Exception public double moveToZero() } package model.commands; public class If extends ControlCommand{ public If(Node root, Parser parser, Model model) throws Exception public double execute() throws Exception } package model.commands; public class IfElse extends ControlCommand{ public IfElse(Node root, Parser parser, Model model) throws Exception public double execute() throws Exception } package model.commands; public class IsPenDown extends Command{ public IsPenDown (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class IsShowing extends Command { public IsShowing (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class Left extends OneInputCommand{ public Left (double[] parameters, Model model) public double execute () } package model.commands; public class LessThan extends TwoInputCommand{ public LessThan (double[] parameters, Model model) public double execute () } package model.commands; public class MakeUserInstruction extends ControlCommand{ public MakeUserInstruction(Node root, Parser parser, Model model) throws Exception public double execute() } package model.commands; public class MakeVariable extends ControlCommand{ public MakeVariable (Node root, Parser parser, Model model) public double execute() throws Exception } package model.commands; public class Minus extends OneInputCommand { public Minus (double[] parameter, Model model) public double execute () throws Exception } package model.commands; public class NaturalLog extends OneInputCommand{ public NaturalLog (double[] parameter, Model model) public double execute () throws Exception } package model.commands; public class Not extends OneInputCommand { public Not (double[] parameter, Model model) public double execute () } package model.commands; public class NotEqual extends TwoInputCommand { public NotEqual (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class Or extends TwoInputCommand{ public Or (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class PenDown extends Command{ public PenDown (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class PenUp extends Command { public PenUp (double[] parameters, Model model) public double execute () } package model.commands; public class Pi extends Command{ public Pi (double[] parameters, Model model) public double execute () } package model.commands; public class Power extends TwoInputCommand{ public Power (double[] parameters, Model model) public double execute () } package model.commands; public class Product extends TwoInputCommand{ public Product (double[] parameters, Model model) public double execute () } package model.commands; public class Quotient extends TwoInputCommand { public Quotient (double[] parameters, Model model) public double execute () } package model.commands; public class Random extends OneInputCommand{ public Random (double[] parameter, Model model) public double execute () throws Exception } package model.commands; public class Remainder extends TwoInputCommand { public double execute () throws Exception } package model.commands; public class Repeat extends ControlCommand{ public Repeat(Node root, Parser parser, Model model) throws Exception public double execute() throws Exception } package model.commands; public class Right extends OneInputCommand{ public Right (double[] parameters, Model model) public double execute () } package model.commands; public class SetHeading extends OneInputCommand{ public SetHeading (double[] parameters, Model model) public double execute () } package model.commands; public class SetPosition extends TwoInputCommand{ public SetPosition (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class SetTowards extends TwoInputCommand{ public SetTowards (double[] parameters, Model model) public double execute () } package model.commands; public class ShowTurtle extends Command{ public ShowTurtle (double[] parameters, Model model) public double execute () throws Exception } package model.commands; public class Sine extends OneInputCommand{ public Sine (double[] parameter, Model model) public double execute () throws Exception } package model.commands; public class Sum extends TwoInputCommand{ public Sum (double[] parameters, Model model) public double execute () } package model.commands; public class Tangent extends OneInputCommand{ public Tangent (double[] parameter, Model model) public double execute () throws Exception } package model.commands; public class Variable extends Command{ public Variable (String varName, Model model) public double execute() } package model.commands; public class XCoordinate extends Command { public XCoordinate (double[] parameters, Model model) public double execute () } package model.commands; public class YCoordinate extends Command { public YCoordinate (double[] parameters, Model model) public double execute () } package model; public class LineModel { public LineModel(Position pos1, Position pos2) public Position getPosition1() public Position getPosition2() public boolean equals(Object obj) public String toString() } package model; public class LineState { public LineState() public void createLine (Position pos1, Position pos2) public Collection getLines () public void clearLine () public boolean isPenDown () public void setPenDown (boolean penDown) } package model; public class Model{ public Model() public TurtleMap getTurtleMap () public TurtleState getTurtle () public TurtleState getTurtle (Object ID) public LineState getLineState () public LineState getLineState (Object ID) public WorkspaceState getWorkspace () public Collection getCommandHistory() public void addCommand(String command) public Collection getConsoleReturn() public void updateConsoleReturn(Double value) public void clearConsoleReturn() public void clear() } package model; public class Position implements Cloneable{ public Position() public Position(double x, double y) public void addX(double xAdd) public void setX(double xUpdate) public void addY(double yAdd) public void setY(double yUpdate) public double getX() public double getY() public void resetPosition() public String toString() public double distance(double x, double y) public Position clone() } package model; public class TurtleMap { public TurtleMap() public Collection getIDs() public Collection getTurtles() public TurtleState getTurtle() public TurtleState getTurtle(Object ID) public Collection getLines() public LineState getLineState() public LineState getLineState(Object ID) public Object getCurrentID () public void setCurrentID (Object ID) public void clear() } package model; public class TurtlePair { public TurtlePair() public LineState getLines () public TurtleState getTurtle () } package model; public class TurtleState { public TurtleState() public TurtleState(Position position, double angle, boolean isShowing) public Position getPosition() public void updateTurtlePosition (double x, double y) public void setTurtlePosition (double x, double y) public void setTurtleAngle (double degrees) public void addTurtleAngle (double degrees) public void setShowTurtle (boolean setShow) public double getTurtleX () public double getTurtleY () public double getTurtleAngle () public boolean getShowTurtle () } package model; public class VariableObject { public VariableObject(Object name, double value) public String getVariableName () public double getVariableValue () public int hashCode() public boolean equals(Object obj) } package model; public class WorkspaceState { public WorkspaceState() public void addVariable (Object name, Double value) public void removeVariable (Object var) public double getVariableValue(String name) public HashMap getListOfVariables () public void clear() } package view.data; public class DataIn { public DataIn(Model model) public void setCommand(String command) public void setLanguage(String language) public String getCommand() public void parseCommand(Controller controller) throws Exception public void updateViewModel(Model Model) public Model getViewModel() } package view; public class Display { } package view; public class DisplayError{ public void displayErrorDialogueBox(String error) } package view.ui; public class CommandHistoryWindow{ public void init() public void updateCommandHistory(Collection commandHistory) public Button getRedoButton(String command) public void show() } package view.ui; public class CommandLine implements UIAttributes{ public CommandLine(int sceneHeight, UI ui) public Group getRoot() public String getCommand() public void setCommand(String command) } package view.ui; public class Console implements UIAttributes{ public Console(int sceneHeight, int sceneWidth) public Group getRoot() public void updateConsole(Collection consoleResults) } package view.ui; public class GeneralSettings implements UIAttributes{ public GeneralSettings(Controller controller) public Group getRoot() public String getLanguage() } package view.ui; public class HelpWindowUI implements UIAttributes{ public HelpWindowUI() public Group getRoot() } package view.ui.turtle; public class TurtleScreen implements UIAttributes{ public TurtleScreen(Stage stage) public Pane getRoot() public TurtleSettings getTurtleSettings() public void updateTurtles(TurtleMap turtleMap) } package view.ui.turtle; public class TurtleSettings implements UIAttributes{ public TurtleSettings(Stage stage, TurtleScreen turtle) public Group getRoot() public Paint getBackgroundColor() public Color getPenColor() public Image getTurtleImage() @Override public ListCell call(ListView p) } package view.ui.turtle; public class TurtleViewAttributes{ public TurtleViewAttributes() public Paint getPenColor() public Image getImage() public void setPenColor(Paint color) public void setImage(Image image) } package view.ui.turtle; public class TurtleViewMap{ public TurtleViewMap() public Collection getIDs() public Paint getPenColor(Object id) public Image getImage(Object id) public void setAttributes(Object id) public void setPenColor(Object id, Paint color) public void setImage(Object id, Image image) } package view.ui; public class UI implements UIAttributes{ public UI(int xSize, int ySize, Stage stage) public Scene init() public GeneralSettings getGeneralSettings() public Controller getController() public Model getModel() public DataIn getDataIn() public void updateDataIn() throws Exception } package view.ui; public interface UIAttributes{ public static ResourceBundle uiResources = ResourceBundle.getBundle(RESOURCE_FILE_NAME); public static UIBuilder uiBuilder = new UIBuilder(); } package view.ui; public class UIBuilder{ public Text getText(int x, int y, String t) public Control setControlLayout(Control control, int x, int y, String style) public Button makeButton(int x, int y, String text, String style) } package view.ui; public class Workspace implements UIAttributes{ public Workspace(int sceneWidth,UI ui,CommandLine commandLine) public Group getRoot() public void updateWorkspace(WorkspaceState workspaceState) public void clearWorkspace() public Button getSubmitButton(String varName, TextField space) }