package controller; public interface InputListener { } package controller; public class SLogoController implements InputListener, UpdateListener { public SLogoController() public GUIManager getGUI() public void onInput(String inputStr) public void onVisualizationShouldUpdate() public void onDisplayShouldUpdate() public void onTrackingShouldUpdate() } package controller; public interface UpdateListener { } package main; public class Main extends Application { public void start(Stage s) throws Exception } package model; public class CanvasModel implements Visualizable { public CanvasModel() public void setClearScreen(boolean screenToClear) public void setBackgroundColor(Double backgroundColorDouble) public boolean shouldClearScreen() public Map isPenUp() public Map isTurtleShown() public Map getCoord() public Map getHeadDegree() public Map getPenColor() public double getBackgroundColor() public Map getShape() public Map getPenSize() public List getTurtlesTold() public void tellTurtles(Map map) public int getNumTurtlesCreated() } package model.commands; public abstract class AbstractCommand implements Command { public boolean prepare(Queue args) } package model.commands; public interface ArgNode { } package model.commands; public class CmdNode implements ArgNode { public CmdNode(Command cmd) public double toValue() } package model.commands; public interface Command { } package model.commands.implementations; public class And extends AbstractCommand { public And(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class ArcTangent extends AbstractCommand { public ArcTangent(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Ask extends AbstractCommand { public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class Backward extends AbstractCommand { public Backward(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class ClearScreen extends AbstractCommand{ public ClearScreen(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Cosine extends AbstractCommand { public Cosine(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Difference extends AbstractCommand { public Difference(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class DoTimes extends AbstractCommand { public DoTimes(UpdateListener updateListener, Context context) public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class Equal extends AbstractCommand { public Equal(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class For extends AbstractCommand { public For(UpdateListener updateListener, Context context) public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class Forward extends AbstractCommand { public Forward(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class GreaterThan extends AbstractCommand { public GreaterThan(UpdateListener updateListener, Context context ) public double execute() } package model.commands.implementations; public class Heading extends AbstractCommand { public Heading(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class HideTurtle extends AbstractCommand { public HideTurtle(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Home extends AbstractCommand { public Home(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class ID extends AbstractCommand { public double execute() } package model.commands.implementations; public class If extends AbstractCommand { public If(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class IfElse extends AbstractCommand { public IfElse(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class IsPenDown extends AbstractCommand { public IsPenDown(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class IsShowing extends AbstractCommand { public IsShowing(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Left extends AbstractCommand { public Left(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class LessThan extends AbstractCommand { public LessThan(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class MakeUserInstruction extends AbstractCommand { public MakeUserInstruction(UpdateListener updateListener, Context context) public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class MakeVariable extends AbstractCommand { public MakeVariable(UpdateListener updateListener, Context context) public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class Minus extends AbstractCommand { public Minus(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class NaturalLog extends AbstractCommand { public NaturalLog(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Not extends AbstractCommand { public Not(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class NotEqual extends AbstractCommand{ public NotEqual(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Or extends AbstractCommand { public Or(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class PenColor extends AbstractCommand { public double execute() } package model.commands.implementations; public class PenDown extends AbstractCommand { public PenDown(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class PenUp extends AbstractCommand { public PenUp(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Pi extends AbstractCommand { public Pi(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Power extends AbstractCommand { public Power(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Procedure extends AbstractCommand { public Procedure(String funcName, UpdateListener updateListener, Context context) public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class Product extends AbstractCommand { public Product(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Quotient extends AbstractCommand { public Quotient(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Random extends AbstractCommand { public Random(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Remainder extends AbstractCommand { public double execute() } package model.commands.implementations; public class Repeat extends AbstractCommand { public Repeat(UpdateListener updateListener, Context context) public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class Right extends AbstractCommand { public Right(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class SetBackground extends AbstractCommand { public SetBackground(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class SetHeading extends AbstractCommand { public SetHeading(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class SetPalette extends AbstractCommand { public double execute() } package model.commands.implementations; public class SetPenColor extends AbstractCommand { public SetPenColor(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class SetPenSize extends AbstractCommand { public SetPenSize(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class SetPosition extends AbstractCommand { public SetPosition(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class SetShape extends AbstractCommand { public SetShape(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class SetTowards extends AbstractCommand { public SetTowards(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Shape extends AbstractCommand { public double execute() } package model.commands.implementations; public class ShowTurtle extends AbstractCommand { public ShowTurtle(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Sine extends AbstractCommand { public Sine(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Sum extends AbstractCommand { public Sum(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Tangent extends AbstractCommand { public Tangent(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class Tell extends AbstractCommand { public Tell(UpdateListener updateListener, Context context) public boolean prepare(Queue args) public double execute() } package model.commands.implementations; public class Turtles extends AbstractCommand { public double execute() } package model.commands.implementations; public class XCoordinate extends AbstractCommand { public XCoordinate(UpdateListener updateListener, Context context) public double execute() } package model.commands.implementations; public class YCoordinate extends AbstractCommand { public YCoordinate(UpdateListener updateListener, Context context) public double execute() } package model.commands; public class ListNode implements ArgNode { public ListNode(Context context) public void addCmdNode(CmdNode node) public double toValue() public List getCommandList() } package model.commands; public class NumNode implements ArgNode { public NumNode(double num) public double toValue() } package model.commands; public class VarNode implements ArgNode { public VarNode(String varName, Context context) public double toValue() } package model; public class Context implements Displayable, Trackable { public Context() public CanvasModel getCanvasModel() public Variable getVariableWithName(String varName) public void setVariable(String varName, double value) public Function getFunctionWithName(String funcName) public void setFunction(Function function) public void pushStackFrame(StackFrame stackFrame) public void popStackFrame() public void clearStackFrame() public void setMessage(String messageToSet) public void setMessageType(MsgType messageType) public List getTurtlesTold() public void tellTurtles(Map mapOfIds) public void addCmdToHistory(String cmdStr) public MsgType getMsgType() public String getMessage() public List getAllVariables() public List getAllFunctions() public List getCmdHistory() public List getAllTurtleIDs() } package model; public interface Displayable { } package model; public class FakeDisplayable implements Displayable { public void choose() public MsgType getMsgType() public String getMessage() } package model; public class FakeTrackable implements Trackable { public List getAllVariables() public List getAllFunctions() public List getCmdHistory() public List getAllTurtleIDs() } package model; public class Function { public Function( public String getMyName() public void setMyName(String newName) public List getVarNames() public ListNode getListNode() public String toString() } package model; public class Matcher { public Matcher () public String getSymbol (String text) } package model; public class SLogoProcessor { public SLogoProcessor(UpdateListener updateListener) public Displayable getDisplayable() public Trackable getTrackable() public Visualizable getVisualizable() public void process(String inputStr) } package model; public class StackFrame { public StackFrame() public Variable getVariableWithName(String varName) public void setVariable(String varName, double value) } package model; public interface Trackable { } package model; public class TurtleModel { public TurtleModel(int id) public int getID() public void setPenUp(boolean penToBeUp) public void setTurtleShown(boolean turtleToBeShown) public void setCoord(Point2D coordToSet) public void setShape(Double shapeDouble) public void setPenColor(Double penColorDouble) public void setPenSize(Double sizeDouble) public double getX() public double getY() public void setHeadDegree(Double degree) public boolean isPenUp() public boolean isTurtleShown() public Point2D getCoord() public double getHeadDegree() public double getPenColor() public double getShape() public double getPenSize() } package model; public class Variable { public Variable(String name, Double value) public String getMyName() public void setMyName(String name) public Double getMyValue() public void setMyValue(Double value) } package model; public interface Visualizable { } package view; public class Canvas implements Visualizer, LinePropertyListener, CanvasPropertyListener { public Canvas(Group root, Visualizable vable, double canvasX, double canvasY, double canvasWidth, double canvasHeight) public void visualize() public void changeLineColor(int idx, String color) public void changeLineType(int idx, String type) public void changeBackgroundColor(String color) public void changeTurtleImage(int idx, File newImageFile) public void changeLineWidth(double width) } package view; public interface CanvasPropertyListener { public void changeBackgroundColor(String color); public void changeTurtleImage(int idx, File newImageFile); } package view; public interface Displayer { } package view; public class EditingCell extends TableCell { public EditingCell() } public void startEdit() public void cancelEdit() public void updateItem(Double item, boolean empty) public void handle(KeyEvent t) } package view; public class FunctionHistory{ public FunctionHistory(Trackable table, TerminalFunctionInterface tfi) public ListCell call(ListView p) public ListView getFunctionListView() public void updateFunctionHistory() } package view; public class GUIManager implements TerminalDelegateInterface { public GUIManager(InputListener il, Displayable dable, Visualizable vable, Trackable table) public Scene getScene() public String getTitle() public Displayer getDisplayer() public Visualizer getVisualizer() public Tracker getTracker() public void submitKeyed() public LinePropertyListener getLinePropertyListener() public CanvasPropertyListener getCanvasPropertyListener() } package view; public interface LinePropertyListener { public void changeLineColor(int idx, String color); public void changeLineType(int idx, String type); public void changeLineWidth(double width); } package view; public class OptionMenu implements Tracker { public OptionMenu(Group root, double optionMenuX, double optionMenuY, public void track() } package view; public class Terminal implements Displayer, TerminalFunctionInterface { public Terminal( public String submitText() public void display() public TextArea getInputPane() } package view; public interface TerminalDelegateInterface { public void submitKeyed(); } package view; public interface TerminalFunctionInterface { public TextArea getInputPane(); } package view; public class ToggleSwitch extends HBox { public SimpleBooleanProperty switchOnProperty() return switchedOn; } public ToggleSwitch(String txt1, String txt2) } package view; public interface Tracker { } package view; public class VariableHistory { public VariableHistory(Trackable table, InputListener il) public TableCell call(TableColumn p) public void handle(CellEditEvent t) public TableView getVariableTable() public void updateVariableHistory() } package view; public interface Visualizer { }