package cellsociety.utils; public class ReflectionUtility { public static Object createObject(String packageName, String className, } package cellsociety.utils; public class DialogUtility extends Dialog { public static void showAlert(AlertType type, String message) } package cellsociety.utils; public class FileUtility { public static final ExtensionFilter DATA_FILE_CSV_EXTENSION public static final String DATA_FILE_FOLDER public static File openFileWithDialogWindow(String title, ExtensionFilter... extensionFilters) public static File saveFileWithDialogWindow(String title, ExtensionFilter... extensionFilters) } package cellsociety.utils; public class LanguageResource { public LanguageResource(String resourcePath) public String getString(String key) public String[] getStringArray(String key) } package cellsociety.utils; public class SimulationPropertiesUtility { public static String getSimulationName(String key) public static List getCellNames(String key) public static List getCellClassNames(String key) public static List getAllSimulationNames() public static List getCellHexColors(String key) public static List getSimulationKeys() } package cellsociety.filesystem; public class DesktopFileManager { public DesktopFileManager() public void loadCSVAndSIMFiles() public void readCSV(File file) public void saveCSVAndSIMFiles(CellGridModel cellGridModel, Properties properties) public void writeProperties(Properties properties, File file) public void writeCSV(CellGridModel grid, File file) public CellGridModel getCellGrid() public Properties getSimulationProperties() } package cellsociety.exceptions; public class UnimplementedException extends Exception { public UnimplementedException(String unimplementedType, String message) public UnimplementedException(String unimplementedType, String message, Throwable cause) } package cellsociety.exceptions; public class SimulationUnimplementedException extends UnimplementedException { public SimulationUnimplementedException(String errorMsg) } package cellsociety.exceptions; public class InvalidFileFormatException extends CellException { public InvalidFileFormatException(String errorMsg) } package cellsociety.exceptions; public class ViewUnimplementedException extends UnimplementedException { public ViewUnimplementedException(String message) } package cellsociety.exceptions; public abstract class CellException extends Exception { public CellException(String errorMsg) } package cellsociety.exceptions; public class CellNeighborsException extends RuntimeException { public CellNeighborsException(String type) } package cellsociety.exceptions; public class CustomReflectionException extends Exception { public CustomReflectionException(String message) public CustomReflectionException(String message, Throwable cause) } package cellsociety.controller; public class GameController { public GameController(String simulationType, String selectedLanguage) public Scene getScene() public void addGridToView(CellGridModel fileManagerGrid) public Status getAnimationStatus() public void createWorldModel(List values, Integer indexChanged) public void changeStyle(List values, Integer indexChanged) public void changeNeighborBehavior(List values, Integer indexChanged) public void changeEdgeBehavior(List values, Integer indexChanged) public void createDataVisualizationView(List values, Integer indexChanged) } package cellsociety.controller; public class DataVisualizerController { public DataVisualizerController(String simulationType) public void updateSimulationType(String simulationType) public void createNewDataVisualizer(String name) public void addDataVisualizer(DataVisualizer visualizer) public void removeDataVisualizer(DataVisualizer visualizer) public void addCellData(CellGridModel cellGridModel) public void updateColorMap(int cellValue, String newColor) public void resetData() } package cellsociety.edgepolicy; public class FixedEdgePolicy extends EdgePolicy { public FixedEdgePolicy() public int getLeftColumn(int left) public int getRightColumn(int right) public int getTopRow(int top) public int getBottomRow(int bottom) } package cellsociety.edgepolicy; public abstract class EdgePolicy { public EdgePolicy() public void initializeDimensions(int rows, int cols) public abstract int getLeftColumn(int left); public abstract int getRightColumn(int right); public abstract int getTopRow(int top); public abstract int getBottomRow(int bottom); protected int getNumRows() protected int getNumCols() } package cellsociety.edgepolicy; public class ToroidalEdgePolicy extends EdgePolicy { public ToroidalEdgePolicy() public int getLeftColumn(int left) public int getRightColumn(int right) public int getTopRow(int top) public int getBottomRow(int bottom) } package cellsociety; public class Main extends Application { public void start(Stage primaryStage) } package cellsociety.model.cellmodels.wator; public abstract class WaTorCellModel extends CellModel { public WaTorCellModel(Integer state) public WaTorCellModel(WaTorCellModel source) protected int getEmptyState() protected int getFishState() protected int getSharkState() protected List moveToRandomEmptyCell(CellModel emptyCell) protected WaTorEmptyCellModel makeEmptyCell() } package cellsociety.model.cellmodels.wator; public class WaTorSharkCellModel extends WaTorCellModel { public WaTorSharkCellModel(Integer state) public WaTorSharkCellModel(WaTorSharkCellModel source) public List step() public WaTorSharkCellModel copy() } package cellsociety.model.cellmodels.wator; public class WaTorEmptyCellModel extends WaTorCellModel { public WaTorEmptyCellModel(Integer state) public List step() public WaTorEmptyCellModel copy() } package cellsociety.model.cellmodels.wator; public class WaTorFishCellModel extends WaTorCellModel { public WaTorFishCellModel(Integer state) public WaTorFishCellModel(WaTorFishCellModel source) public List step() public WaTorFishCellModel copy() } package cellsociety.model.cellmodels.percolation; public abstract class PercolationCellModel extends CellModel { public PercolationCellModel(Integer state) protected int getWaterState() protected int getEmptyState() protected int getPipeState() } package cellsociety.model.cellmodels.percolation; public class PercolationWaterCellModel extends PercolationCellModel { public PercolationWaterCellModel(Integer state) public List step() public PercolationWaterCellModel copy() } package cellsociety.model.cellmodels.percolation; public class PercolationPipeCellModel extends PercolationCellModel { public PercolationPipeCellModel(Integer state) public List step() public PercolationPipeCellModel copy() } package cellsociety.model.cellmodels.percolation; public class PercolationEmptyCellModel extends PercolationCellModel { public PercolationEmptyCellModel(Integer state) public List step() public PercolationEmptyCellModel copy() } package cellsociety.model.cellmodels.rockpaperscissors; public abstract class RockPaperScissorsCellModel extends CellModel { public RockPaperScissorsCellModel(Integer state) protected int getRockState() protected int getPaperState() protected int getScissorState() } package cellsociety.model.cellmodels.rockpaperscissors; public class RockPaperScissorsScissorCellModel extends RockPaperScissorsCellModel { public RockPaperScissorsScissorCellModel(Integer state) public List step() public RockPaperScissorsScissorCellModel copy() } package cellsociety.model.cellmodels.rockpaperscissors; public class RockPaperScissorsPaperCellModel extends RockPaperScissorsCellModel { public RockPaperScissorsPaperCellModel(Integer state) public List step() public RockPaperScissorsPaperCellModel copy() } package cellsociety.model.cellmodels.rockpaperscissors; public class RockPaperScissorsRockCellModel extends RockPaperScissorsCellModel { public RockPaperScissorsRockCellModel(Integer state) public List step() public RockPaperScissorsRockCellModel copy() } package cellsociety.model.cellmodels.fire; public abstract class FireCellModel extends CellModel { public FireCellModel(Integer state) protected int getEmptyState() protected int getBurningState() protected int getTreeState() } package cellsociety.model.cellmodels.fire; public class FireBurningCellModel extends FireCellModel { public FireBurningCellModel(Integer state) public List step() public FireBurningCellModel copy() } package cellsociety.model.cellmodels.fire; public class FireTreeCellModel extends FireCellModel { public FireTreeCellModel(Integer state) public List step() public FireTreeCellModel copy() } package cellsociety.model.cellmodels.fire; public class FireEmptyCellModel extends FireCellModel { public FireEmptyCellModel(Integer state) public List step() public FireEmptyCellModel copy() } package cellsociety.model.cellmodels; public class CellGridModel { public CellGridModel() public void initializeDimensions(int rows, int cols) public void addToRow(int rowNum, T cell) protected void addToRowAndCol(int rowNum, T cell) public void clear() public T get(int row, int column) public void put(int row, int col, T cell) public int getRowSize() public int getColSize() public int getColSize(int row) } package cellsociety.model.cellmodels; public abstract class CellModel { public CellModel(Integer state) public CellModel(CellModel source) public void initializeNeighborsMethod( public void updateProperties(Properties parameters) protected Properties getParameters() public abstract List step(); public abstract CellModel copy(); public int getRow() public int getColumn() public int getState() public void setState(int state) protected void updateParameters(Consumer parameter, String propertyName) } package cellsociety.model.cellmodels.gameoflife; public class GameOfLifeEmptyCellModel extends GameOfLifeCellModel { public GameOfLifeEmptyCellModel(Integer state) public List step() public GameOfLifeEmptyCellModel copy() } package cellsociety.model.cellmodels.gameoflife; public abstract class GameOfLifeCellModel extends CellModel { public GameOfLifeCellModel(Integer state) protected int getEmptyState() protected int getAliveState() protected int countAliveCells() } package cellsociety.model.cellmodels.gameoflife; public class GameOfLifeAliveCellModel extends GameOfLifeCellModel { public GameOfLifeAliveCellModel(Integer state) public List step() public GameOfLifeAliveCellModel copy() } package cellsociety.model.cellmodels.schelling; public class SchellingEmptyCellModel extends SchellingCellModel { public SchellingEmptyCellModel(Integer state) public List step() public void setNotEmpty() public SchellingCellModel copy() } package cellsociety.model.cellmodels.schelling; public class SchellingAgentACellModel extends SchellingCellModel { public SchellingAgentACellModel(Integer state) public List step() public SchellingCellModel copy() } package cellsociety.model.cellmodels.schelling; public class SchellingAgentBCellModel extends SchellingCellModel { public SchellingAgentBCellModel(Integer state) public List step() public SchellingCellModel copy() } package cellsociety.model.cellmodels.schelling; public abstract class SchellingCellModel extends CellModel { public SchellingCellModel(Integer state) protected int getEmptyState() protected int getAgentAState() protected int getAgentBState() public abstract List step(); public abstract SchellingCellModel copy(); } package cellsociety.model.cellmodels; public class CellModelFactory { public CellModelFactory(String gameType) public CellModel generateCell(int index) throws SimulationUnimplementedException } package cellsociety.model.worldmodels; public class RockPaperScissorsWorldModel extends SingleLoopWorldModel { public RockPaperScissorsWorldModel(String gameType) throws SimulationUnimplementedException public CellGridModel updateCellGrid() } package cellsociety.model.worldmodels; public class FireWorldModel extends SingleLoopWorldModel { public FireWorldModel(String gameType) throws SimulationUnimplementedException public CellGridModel updateCellGrid() } package cellsociety.model.worldmodels; public class GameOfLifeWorldModel extends SingleLoopWorldModel { public GameOfLifeWorldModel(String gameType) throws SimulationUnimplementedException public CellGridModel updateCellGrid() } package cellsociety.model.worldmodels; public class SchellingWorldModel extends SingleLoopWorldModel { public SchellingWorldModel(String gameType) throws SimulationUnimplementedException public CellGridModel updateCellGrid() protected void updateChangedCells(int row, int col) } package cellsociety.model.worldmodels; public class PercolationWorldModel extends SingleLoopWorldModel { public PercolationWorldModel(String gameType) throws SimulationUnimplementedException public CellGridModel updateCellGrid() } package cellsociety.model.worldmodels; public class WaTorWorldModel extends WorldModel { public WaTorWorldModel(String gameType) public CellGridModel updateCellGrid() } package cellsociety.model.worldmodels; public abstract class SingleLoopWorldModel extends WorldModel { public SingleLoopWorldModel(String gameType) throws SimulationUnimplementedException public CellGridModel updateCellGrid() protected CellGridModel singleLoopUpdate() } package cellsociety.model.worldmodels; public class WorldModelFactory { public WorldModel generateWorldModel(String simType) } package cellsociety.model.worldmodels; public abstract class WorldModel { public WorldModel(String gameType) throws SimulationUnimplementedException public void generateNeighbors(String neighborType, String edgeType) public void changeEdgePolicy(String edgeType) throws SimulationUnimplementedException public void initializeCellGrid(CellGridModel cellGridModel) public void updateParameters(Properties parameters) protected void setNewCellGrid() protected void updateChangedCells(int row, int col) public abstract CellGridModel updateCellGrid() throws SimulationUnimplementedException; protected int getNumRows() protected int getNumCols() protected ResourceBundle getStateData() protected CellGridModel getCurrentGrid() protected CellGridModel getNextGrid() protected CellGridModel getNextIntegerGrid() protected Collection getNeighbors(int row, int col) } package cellsociety.model; public class CellGridCounter { public Map countCellGridValues(CellGridModel cellGridModel) } package cellsociety.view; public class SceneFormatter { public Text createLabel(LanguageResource myResources, String label) public void initializePane(Pane parent, String id, Node... children) public String formatToStyleFile(String styleType) public String formatToStyleTag(String styleType) } package cellsociety.view.automatascene; public class CellularAutomataScene { public CellularAutomataScene(String currentStyle, String simulationName, public void addStyleSheet(String newStyle) public SimulationComboBoxInterface getComboBoxInterface() public UserInputPaneInterface getUserInputPaneInterface() public CellGridInputInterface getCellGridInputInterface() public Scene getScene() public ControlButtonInterface getControlButtonInterface() public CellGridModel getCellData() public void addCellData(CellGridModel cellGrid) public SimulationSpecificInputPaneInterface getSimulationSpecificInputPaneInterface() public void updateSimulationType(String simulationType) public void addDataVisualizer(String visualizerName) public void resetData() } package cellsociety.view; public class NodeCollection implements Iterable { public NodeCollection(Collection nodes) public Iterator iterator() } package cellsociety.view.button; public interface ControlButtonInterface { void setOnLoadClick(Runnable onLoadClick); void setOnPlayClick(Runnable onPlayPauseClick); void setOnPauseClick(Runnable onPlayPauseClick); void setOnStepClick(Runnable onPlayPauseClick); void setOnResetClick(Runnable onResetClick); void setOnSaveClick(Runnable onSaveClick); void setOnSpeedChange(Consumer onSpeedChange); } package cellsociety.view.button; public class ControlButton extends javafx.scene.control.Button { public ControlButton(Type buttonType, LanguageResource languageResource) } package cellsociety.view.button; public class ControlButtonGrid extends GridPane implements ControlButtonInterface { public ControlButtonGrid(String selectedLanguage) public void setOnLoadClick(Runnable onLoadClick) public void setOnPauseClick(Runnable onPauseClick) public void setOnPlayClick(Runnable onPlayClick) public void setOnStepClick(Runnable onStepClick) public void setOnResetClick(Runnable onResetClick) public void setOnSaveClick(Runnable onSaveClick) public void setOnSpeedChange(Consumer onSpeedChange) } package cellsociety.view.display; public class StartScreen { public StartScreen(Stage stage) public Scene getScene() } package cellsociety.view.display; public class MapComboBox extends ComboBox { public MapComboBox(Map options, BiConsumer onSelectionConsumer, public void setOnChangedConsumer(BiConsumer onChangedConsumer) public T getCurrentSelectedValue() } package cellsociety.view.display; public interface CellColorPickerInterface { void setOnColorChange( } package cellsociety.view.display; public class CellGridInputView extends GridPane implements CellGridInputInterface, public CellGridInputView() public CellGridModel getCellGrid() public void resetData() public void createResizeGridListeners(BorderPane gridHome) public void addData(CellGridModel data) public Parent getRoot() public void updateColorMap(Map colorMap) public void addRow() public void addColumn() } package cellsociety.view.display; public class LineGraph implements ColorDataVisualizer, NameDataVisualizer { public LineGraph() public void resetData() public void addData(CellGridModel data) public Parent getRoot() public void updateColorMap(Map colorMap) public void updateNameMap(Map nameMap) } package cellsociety.view.display; public interface SimulationComboBoxInterface { void setOnChangedConsumer(BiConsumer>, Integer> onChangedConsumer); } package cellsociety.view.display; public class ConfigurationPane extends HBox implements SimulationComboBoxInterface { public ConfigurationPane(LanguageResource languageResources) public void setOnChangedConsumer( } package cellsociety.view.display; public interface ColorDataVisualizer extends DataVisualizer { void updateColorMap(Map colorMap); } package cellsociety.view.display; public interface UserInputPaneInterface { void setSimulationProperties(Properties simulationProperties); Properties getUserInputProperties(); } package cellsociety.view.display; public interface DataVisualizer { void resetData(); void addData(CellGridModel data); Parent getRoot(); } package cellsociety.view.display; public class CellColorPicker extends ColorPicker implements public CellColorPicker(int cellValue, String simulationName, public void setOnColorChange(BiConsumer colorPickerAction) } package cellsociety.view.display; public class SimulationSpecificInputPane extends HBox implements public SimulationSpecificInputPane(LanguageResource myResources, String sceneName, public Button getAddRowColumnButton() public Properties getUserInputParameters() } package cellsociety.view.display; public interface CellGridInputInterface { CellGridModel getCellGrid(); void addRow(); void addColumn(); } package cellsociety.view.display; public interface SimulationSpecificInputPaneInterface { Button getAddRowColumnButton(); Properties getUserInputParameters(); } package cellsociety.view.display; public class UserInputPane extends VBox implements UserInputPaneInterface { public UserInputPane(LanguageResource languageResource) public Properties getUserInputProperties() public void setSimulationProperties(Properties simulationProperties) } package cellsociety.view.display; public class Histogram implements ColorDataVisualizer, NameDataVisualizer { public Histogram() public void resetData() public void addData(CellGridModel data) public Parent getRoot() public void updateColorMap(Map colorMap) public void updateNameMap(Map nameMap) } package cellsociety.view.display; public interface NameDataVisualizer extends DataVisualizer { void updateNameMap(Map nameMap); } package cellsociety.view; public class CellView extends Rectangle { public CellView(int cellValue, double cellWidth, double cellHeight, Integer maxCellValue, public int getCellValue() public void setMaxCellValue(int value) public void resizeWidth(double width) public void resizeHeight(double height) } package cellsociety.neighbors; public class DirectNeighbors extends Neighbors { public DirectNeighbors(String edgePolicy) throws SimulationUnimplementedException public Collection getNeighbors(CellGridModel cellGrid, int row, int col) } package cellsociety.neighbors; public class NeighborsGrid extends CellGridModel { public NeighborsGrid(Collection neighbors) public void addToRow(int rowNum, CellModel cell) public int getSumOfNeighborsOfType(int type) throws CellNeighborsException public CellModel getNeighborOfTypeAtPos(int type, int pos) public CellModel getRandomNeighborOfType(int type) public double getFractionBetweenNeighbors(int type1, int type2) } package cellsociety.neighbors; public class CornerNeighbors extends Neighbors { public CornerNeighbors(String edgePolicy) throws SimulationUnimplementedException public Collection getNeighbors(CellGridModel cellGrid, int row, int col) } package cellsociety.neighbors; public abstract class Neighbors { public Neighbors(String edgeType) throws SimulationUnimplementedException public void generateEdgePolicy(String edgeType) throws SimulationUnimplementedException protected List getRowTraversal() protected List getColTraversal() protected void populateTraversals(CellGridModel cellGrid, int row, int col) protected boolean checkInBounds(int index) public abstract Collection getNeighbors(CellGridModel cellGrid, int row, } package cellsociety.neighbors; public class CardinalNeighbors extends Neighbors { public CardinalNeighbors(String edgePolicy) throws SimulationUnimplementedException public Collection getNeighbors(CellGridModel cellGrid, int row, int col) }