Nicholas' Project Portfolio Page
Project: PartyPlanet
PartyPlanet is a cross-platform desktop application that helps users plan birthday celebrations. The user primarily interacts with it using a command-line interface, inside a GUI created with JavaFX. It is written in Java with around 10k LOC.
A full list of code contribution can be found here: RepoSense
Given below are my contributions to the project.
New features
- Added feature to undo/redo previous commands.
#107
#189
- What it does: Allows the user to
undo
previous commands (which change the state of the address book/event book). Prior undo commands can be redone withredo
- Justification: A user could make mistakes when writing/using commands, especially since we condensed the available commands to the essentials. As such, PartyPlanet should provide an easily available way to undo this. Keyboard shortcuts were also implemented.
- Highlights: This enhancement required the creation of a
StateHistory
class to track theState
of the address and event books at the same time. - Credits: Code used is referenced weakly from the AB4
undo
andredo
, but they differ significantly asStateHistory
has to be customized for PartyPlanet.
- What it does: Allows the user to
- Added event book and feature to add events (
eadd
command) commits 4408fd8, 858ae4a, 551afbd, 9394207- What it does: Allows the user to store a book of events in PartyPlanet, and to
eadd
an event to PartyPlanet - Justification: A user would want to keep track of upcoming celebrations, or celebrations that need to be planned.
- Highlights: This enhancement affected the existing
Logic
andModel
, and required implementation and integration ofEventBook
andEvent
from scratch. Finally, testing stubs had to be updated to reflect changes. - Credits: Code used for
eadd
is referenced from theadd
command, andEventBook
andEvent
are based off ofAddressBook
andPerson
.
- What it does: Allows the user to store a book of events in PartyPlanet, and to
- Added feature to request help for specific commands (
help COMMAND
): #74- What it does: Allows the user to request help for a specific command with an optional parameter
COMMAND
, to be displayed directly in the UI, instead of redirecting to the UG. - Justification: Our command syntax is dense, with many optional parameters.
help
gives a brief overview of all available commands with syntax, and the user can specify a command to get detailed help on, directly available in the UI. This speeds up workflow and minimizes cross referencing to resources outside the application. - Highlights: This enhancement relies heavily on
MESSAGE_USAGE_CONCISE
andMESSAGE_USAGE
in each individual command. - Credits: Code used is based on the AB3
help
command, but then significantly modified after.
- What it does: Allows the user to request help for a specific command with an optional parameter
Feature enhancements
- Created a
Date
class and refactoredBirthday
andEventDate
to inherit from it: #145 - Refactored DETAIL to REMARK and repackaged and reorganized
Name
andRemark
classes: #311 - Wrote tests for
Undo
andRedo
: #317
Documentation
- UserGuide:
- DeveloperGuide:
- Added User Stories #36 and Use Case UC7 #60, Updated Product Scope #69
- Updated UML diagram for
Model
component after refactor #311 - Added Appendix: Effort #332 and sections for
help
,undo
andredo
, including all UML Diagrams.