package model.persistence; import model.ShapeColor; import model.ShapeShadingType; import model.ShapeType; import model.MouseMode; import model.dialogs.DialogProvider; import model.interfaces.IApplicationState; import model.interfaces.IDialogProvider; import view.interfaces.IUiModule; public class ApplicationState implements IApplicationState { private final IUiModule uiModule; private final IDialogProvider dialogProvider; private ShapeType activeShapeType; private ShapeColor activePrimaryColor; private ShapeColor activeSecondaryColor; private ShapeShadingType activeShapeShadingType; private MouseMode activeMouseMode; public ApplicationState(IUiModule uiModule) { this.uiModule = uiModule; this.dialogProvider = new DialogProvider(this); setDefaults(); } @Override public void setActiveShape() { activeShapeType = uiModule.getDialogResponse(dialogProvider.getChooseShapeDialog()); } @Override public void setActivePrimaryColor() { activePrimaryColor = uiModule.getDialogResponse(dialogProvider.getChoosePrimaryColorDialog()); } @Override public void setActiveSecondaryColor() { activeSecondaryColor = uiModule.getDialogResponse(dialogProvider.getChooseSecondaryColorDialog()); } @Override public void setActiveShadingType() { activeShapeShadingType = uiModule.getDialogResponse(dialogProvider.getChooseShadingTypeDialog()); } @Override public void setActiveStartAndEndPointMode() { activeMouseMode = uiModule.getDialogResponse(dialogProvider.getChooseStartAndEndPointModeDialog()); } @Override public ShapeType getActiveShapeType() { return activeShapeType; } @Override public ShapeColor getActivePrimaryColor() { return activePrimaryColor; } @Override public ShapeColor getActiveSecondaryColor() { return activeSecondaryColor; } @Override public ShapeShadingType getActiveShapeShadingType() { return activeShapeShadingType; } @Override public MouseMode getActiveMouseMode() { return activeMouseMode; } private void setDefaults() { activeShapeType = ShapeType.RECTANGLE; activePrimaryColor = ShapeColor.BLUE; activeSecondaryColor = ShapeColor.GREEN; activeShapeShadingType = ShapeShadingType.FILLED_IN; activeMouseMode = MouseMode.DRAW; } }