package controller; public class AppLauncher extends Application { public void start(Stage stage) } package controller; public abstract class InteractionController { public abstract void setUpInteractions(); } package controller; public class SLogoController { public SLogoController(double width, double height) public SLogoView getSLogoView() public void createNewWorkspace() public void loadCurrentWorkspace() } package controller; public class StartController extends InteractionController{ public StartController(List elements, SLogoController controller) public void setUpInteractions() } package controller; public class ViewModelController extends InteractionController { public ViewModelController(List elements) public void setUpInteractions() public void setModel(SLogoModel model) } package controller; public class ViewViewController extends InteractionController { public ViewViewController(List elements) public void setUpInteractions() } package controller.workspace; public class Workspace { public Workspace(ContentManager content, SLogoModel model) public ContentManager getContentManager() } package controller.workspace; public class WorkspaceFactory { public static Workspace createWorkspace(double width, double height) } package controller.workspace; public class WorkspaceManager { public WorkspaceManager() public void addWorkspace(Workspace workspace) public Workspace getCurrentWorkspace() } package dataStorage; public class CommandHistoryStorage { public CommandHistoryStorage() public void addCommand(String command) public ObservableList getCommandHistoryList() } package dataStorage; public class CommandVariableStorage { public CommandVariableStorage() public void setCommand (String commandName, List parameterNames, String commandString) public String getCommand (String commandName) public List getCommandParams (String commandName) public boolean hasCommand(String commandName) public ObservableList getCommandVariableList() } package dataStorage; public class DataStorageManager { public static DataStorageManager get() public void changeSimulation(int newSimulationID) public Turtle getTurtle() public ValueVariableStorage getValueVariableStorage() public CommandHistoryStorage getCommandHistoryStorage() public CommandVariableStorage getCommandVariableStorage() public Notifications getNotifications() } package dataStorage; public class Notifications extends Observable { public void setClearScreenFlag() public void setSyntaxErrorFlag() } package dataStorage; public class NotificationsState { public NotificationsState(boolean clearScreenFlag, boolean syntaxErrorFlag) public boolean getClearScreenFlag() public boolean getSyntaxErrorFlag() } package dataStorage; public class Position { public Position() public Position(double x, double y) public double getX() public void setX(double x) public double getY() public void setY(double y) public String toString() } package dataStorage; public class SubDataStorageManager { public SubDataStorageManager() public Turtle getTurtle() public ValueVariableStorage getValueVariableStorage() public CommandHistoryStorage getCommandHistoryStorage() public CommandVariableStorage getCommandVariableStorage() public Notifications getNotifications() } package dataStorage; public class Turtle extends Observable{ public Turtle() public Position getPosition() public void setPosition(Position position) public double getHeading() public void setHeading(double heading) public boolean getPenDownStatus() public void setPenDownStatus(boolean isPenDown) public boolean getVisibility() public void setVisibility(boolean isVisible) } package dataStorage; public class TurtleState { public TurtleState(Position position, double heading, boolean isPenDown, boolean isTurtleVisible) public Position getPosition() public double getHeading() public boolean getPenDownStatus() public boolean getVisibility() } package dataStorage; public class ValueVariableStorage { public ValueVariableStorage() public void setVariable (String varName, Double value) public boolean variableExists(String varName) public Double getVariable(String varName) public ObservableList getVariableList() } package model.command; public abstract class AbstractCommand { public AbstractCommand() public void addParameters(List parameters) public AbstractCommand(List parameters) public void setParameters(List parameters) public List getParametersAsCommands() public abstract int getNumParameters(); public ArrayList getParameters() public List getParameterNodes() public abstract double execute(); } package model.command; public abstract class AbstractCommandHigherOrder extends AbstractCommand{ public AbstractCommandHigherOrder (List parameters) public AbstractCommandHigherOrder() public void addVariables(ValueVariableStorage variables, CommandVariableStorage commands) public abstract double execute(); } package model.command; public abstract class AbstractCommandOneParameter extends AbstractCommand { public AbstractCommandOneParameter(List parameters) public int getNumParameters() } package model.command; public abstract class AbstractCommandOneParameterMath extends AbstractCommandOneParameter { public AbstractCommandOneParameterMath(List parameters) } package model.command; public abstract class AbstractCommandTwoParameter extends AbstractCommand { public AbstractCommandTwoParameter(List parameters) public int getNumParameters() } package model.command; public abstract class AbstractCommandTwoParameterBoolean extends AbstractCommandTwoParameter { public AbstractCommandTwoParameterBoolean(List parameters) } package model.command; public abstract class AbstractCommandTwoParameterMath extends AbstractCommandTwoParameter { public AbstractCommandTwoParameterMath(List parameters) } package model.command; public abstract class AbstractCommandTwoParameterTurtle extends AbstractCommandTwoParameter{ public void setTurtle(Turtle turtle) } package model.command; public abstract class AbstractCommandZeroParameter extends AbstractCommand { public AbstractCommandZeroParameter(List parameters) public AbstractCommandZeroParameter() public int getNumParameters() } package model.command; public abstract class AbstractCommandZeroParameterTurtle extends AbstractCommandZeroParameter { public void setTurtle(Turtle turtle) } package model.command; public abstract class AbstractTeleportHomeTurtle extends AbstractCommandZeroParameterTurtle { public AbstractTeleportHomeTurtle(List parameters) } package model.command; public class And extends AbstractCommandTwoParameterBoolean { public And(List parameters) public double execute() } package model.command; public class ArcTangent extends AbstractCommandOneParameterMath { public ArcTangent(List parameters) public double execute() } package model.command; public class Backward extends AbstractMoveTurtle { public Backward(List parameters) public double execute () } package model.command; public class ClearScreen extends AbstractTeleportHomeTurtle { public ClearScreen(List parameters) public double execute() } package model.command; public class Constant extends AbstractCommandZeroParameter{ public Constant(double value) public Constant(List parameters) public void addParameters(List parameters) public double execute() } package model.command; public class Cosine extends AbstractCommandOneParameterMath { public Cosine(List parameters) public double execute() } package model.command; public class Difference extends AbstractCommandTwoParameterMath { public Difference(List parameters) public double execute() } package model.command; public class DoTimes extends AbstractCommandHigherOrder { public DoTimes (List parameters) public double execute () public int getNumParameters () } package model.command; public class Equal extends AbstractCommandTwoParameterBoolean { public Equal(List parameters) public double execute() } package model.command; public class For extends AbstractCommandHigherOrder { public For (List parameters) public double execute () public int getNumParameters () } package model.command; public class Forward extends AbstractMoveTurtle { public Forward(List parameters) public double execute () } package model.command; public class GreaterThan extends AbstractCommandTwoParameterBoolean { public GreaterThan(List parameters) public double execute() } package model.command; public class Heading extends AbstractCommandZeroParameterTurtle { public Heading(List parameters) public double execute() } package model.command; public class HideTurtle extends AbstractCommandZeroParameterTurtle { public HideTurtle(List parameters) public double execute() } package model.command; public class Home extends AbstractTeleportHomeTurtle { public Home(List parameters) public double execute() } package model.command; public class If extends AbstractCommandTwoParameter { public If(List parameters) public double execute() } package model.command; public class IfElse extends AbstractCommandThreeParameter { public IfElse(List parameters) public double execute() } package model.command; public class IsPenDown extends AbstractCommandZeroParameterTurtle { public IsPenDown(List parameters) public double execute() } package model.command; public class IsShowing extends AbstractCommandZeroParameterTurtle { public IsShowing(List parameters) public double execute() } package model.command; public class Left extends AbstractTurnTurtle { public Left(List parameters) public double execute () } package model.command; public class LessThan extends AbstractCommandTwoParameterBoolean { public LessThan(List parameters) public double execute() } package model.command; public class MakeUserInstruction extends AbstractCommandHigherOrder{ public MakeUserInstruction (List parameters) public double execute () public int getNumParameters () } package model.command; public class MakeVariable extends AbstractCommandHigherOrder { public MakeVariable (List parameters) public double execute () public int getNumParameters () } package model.command; public class Minus extends AbstractCommandOneParameterMath { public Minus(List parameters) public double execute() } package model.command; public class NaturalLog extends AbstractCommandOneParameterMath { public NaturalLog(List parameters) public double execute() } package model.command; public class NotEqual extends AbstractCommandTwoParameterBoolean { public NotEqual(List parameters) public double execute() } package model.command; public class Or extends AbstractCommandTwoParameterBoolean { public Or(List parameters) public double execute() } package model.command; public class PenDown extends AbstractCommandZeroParameterTurtle { public PenDown(List parameters) public double execute() } package model.command; public class PenUp extends AbstractCommandZeroParameterTurtle { public PenUp(List parameters) public double execute() } package model.command; public class Pi extends AbstractCommandZeroParameter { public Pi(List parameters) public double execute() } package model.command; public class Power extends AbstractCommandTwoParameterMath { public Power(List parameters) public double execute() } package model.command; public class Product extends AbstractCommandTwoParameterMath { public Product(List parameters) public double execute() } package model.command; public class Quotient extends AbstractCommandTwoParameterMath { public Quotient(List parameters) public double execute() } package model.command; public class Random extends AbstractCommandOneParameterMath { public Random(List parameters) public double execute() } package model.command; public class Remainder extends AbstractCommandTwoParameterMath { public double execute() } package model.command; public class Repeat extends AbstractCommandHigherOrder { public Repeat (List parameters) public double execute () public int getNumParameters () } package model.command; public class Right extends AbstractTurnTurtle { public Right(List parameters) public double execute () } package model.command; public class SetHeading extends AbstractTurnTurtle{ public SetHeading(List parameters) public double execute() } package model.command; public class SetPosition extends AbstractCommandTwoParameterTurtle { public SetPosition(List parameters) public double execute() } package model.command; public class SetTowards extends AbstractCommandTwoParameterTurtle { public SetTowards(List parameters) public double execute() } package model.command; public class ShowTurtle extends AbstractCommandZeroParameterTurtle { public ShowTurtle(List parameters) public double execute() } package model.command; public class Sine extends AbstractCommandOneParameterMath { public Sine(List parameters) public double execute() } package model.command; public class Sum extends AbstractCommandTwoParameterMath { public Sum(List parameters) public double execute() } package model.command; public class Tangent extends AbstractCommandOneParameterMath { public Tangent(List parameters) public double execute() } package model.command; public class Variable extends AbstractCommandHigherOrder { public Variable (String name) public Variable (List parameters) public String toString () public double execute () public int getNumParameters () } package model.command; public class XCoordinate extends AbstractCommandZeroParameterTurtle { public XCoordinate(List parameters) public double execute() } package model.command; public class YCoordinate extends AbstractCommandZeroParameterTurtle { public YCoordinate(List parameters) public double execute() } package model; public class CommandParser { public CommandParser (String language, Turtle turtle) public void init (String language) public List> getPatterns (String syntax) public double parse (String command) throws Exception public String getSymbol (String text, boolean syntax) } package model; public class ExpressionNode { public ExpressionNode() public ExpressionNode (List commands) public ExpressionNode (Double value) public List getCommands() public void addCommand(AbstractCommand command) public String toString() } package model; public class ExpressionTree { public ExpressionTree (Turtle turtle, ValueVariableStorage variables, CommandVariableStorage commands) public ExpressionNode makeTree (Queue commands) throws ClassNotFoundException public ExpressionNode getRoot () } package model; public class SLogoModel { public SLogoModel () public SLogoModel (String language) public Turtle getTurtle () public void parse (String s) public boolean noParser () public void setLanguage (String language) } package view; public interface ContentManager { } package view.element; public class CommandHistoryWindow implements Viewable { public CommandHistoryWindow(double width, double height) public void setCommandHistory(ObservableList observableCommandHistory) public void setClickEvent(EventHandler mouseEvent) public String getSelectedCommand() public Node getContent() } package view.element; public class ContentGrid implements Viewable { public ContentGrid(double width, double height, double borderSize) public void addToolBarElement(Viewable element) public void addMainElement(Viewable element) public void addSidePanelElement(Viewable element) public void addBottomBarElement(Viewable element) public Node getContent() public double getToolbarWidth() public double getToolbarHeight() public double getMainElementWidth() public double getMainElementHeight() public double getSidePanelWidth() public double getSidePanelHeight() public double getBottomBarWidth() public double getBottomBarHeight() } package view.element; public class SettingsToolBar implements Viewable { public SettingsToolBar(double width, double height) @Override public void handle(MouseEvent e) @Override public void handle(MouseEvent e) public Color getSelectedLineColor() public Color getSelectedBackgroundColor() public void setHelpButtonHandler() public String getLanguageSelection() public Node getContent() } package view.element; public class StartButtons implements Viewable { public StartButtons(double width, double height) public Node getContent() } package view.element; public class StartScreen implements Viewable { public StartScreen(double width, double height) public Node getContent() } package view.element; public class StoredFunctionWindow implements Viewable { public StoredFunctionWindow(double width, double height) public void setStoredFunctionList(ObservableList observableFunctionList) public void setClickEvent(EventHandler mouseEvent) public String getSelectedFunction() public Node getContent() } package view.element; public class StoredVariableWindow implements Viewable { public StoredVariableWindow(double width, double height) public void setStoredVariableList(ObservableList observableFunctionList) public void setClickEvent(EventHandler mouseEvent) public String getSelectedVariable() public void editSelectedVariable() public void setEditedEvent(EventHandler> editedEvent) public Node getContent() } package view.element; public class TabbedHelperPanel implements Viewable { public TabbedHelperPanel(double width, double height) public void placeElementInNewTab(String tabName, Viewable element) public double getTabWidth() public double getTabHeight() public Node getContent() } package view.element; public class TextEntryBox implements Viewable { public TextEntryBox(double width, double height) public Node getContent() public String getEnteredText() public void setText(String text) } package view.element; public class TurtleView implements Viewable, Observer { public TurtleView(double width, double height) public Node getContent() public void update(Observable o, Object arg) public void setTurtleImage(String picture_file_path) public void setTurtleImageInit(String picture_file_path) public void setBackgroundColor(Color color) public void setLineColor(Color color) } package view.element; public interface Viewable { } package view; public class SLogoView { public SLogoView(double width, double height) public Scene getScene() public List getViewElements() public double getWidth() public double getHeight() public void setCurrentContentManager(ContentManager contentManager) } package view; public class StartContent implements ContentManager { public StartContent(double width, double height) public Parent getContentLayout() public List getElements() } package view; public class WorkspaceContent implements ContentManager { public WorkspaceContent() public WorkspaceContent(double width, double height) public Parent getContentLayout() public List getElements() public double getWidth() public double getHeight() }