Ho Wen Zhong's Project Portfolio Page
Project: ContactSh
ContactSH is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, ContactSH can get your contact management tasks done faster than traditional GUI apps.
Given below are my contributions to the project.
-
Code contributed: RepoSense link
- New Feature: Added the
sort
command.- What it does: Allows the user to sort contacts in alphabetical order and reverse alphabetical order of their names.
- Justification: With a long list of contacts, the user may often want to view the contact list in a sorted order. Allowing the user to easily sort their contacts in alphabetical order is thus essential.
- Highlights: This feature required adding a new
SortCommand
as well as aSortCommandParser
. It also required modifyingModelManager
to include aSortedList<Person>
.
- New Feature: Added the
clear
command.- What it does: Allows the user to visually clear the contact list and task list in the GUI. Does not delete any contacts nor tasks.
- Justification:
clear
is a core functionality in the Unix CLI. It allows the user to clear the screen of all output. It has been extended to ContactSH to allow the user to clear the GUI screen of any clutter that may have resulted from previous commands. - Highlights: This feature required adding a new
ClearCommand
that updates themodel
. In turn, changes to themodel
are reflected in the contact list and task list.
- New Feature: Added the
man COMMAND
functionality.- What it does: Allows the user to directly receive help about the usage and format of a command in the result box of ContactSH instead of in the pop-up help window.
- Justification:
man COMMAND
is a core functionality in the Unix CLI. It allows the user to directly view the manual page of commands in the terminal. It has been extended to ContactSH to allow the user to conveniently check the usage and format of commands in the event that they have forgotten them. - Highlights: This feature required modifications to
HelpCommandParser
to detect when aCOMMAND
was given in the input (else, the help window will be opened). This feature also required modifications toHelpCommand
to be able to display the help message for a command in the result box.
- Enhancement to existing feature: Improved syntax of all commands and flags
- What it does: Allows the user to enter commands and flags in a syntax similar to the Unix CLI syntax.
- Justification: Since the target user is familiar with the Unix CLI environment, it would be inconvenient to have to learn a new set of syntax for interacting with ContactSH. Instead, commands have been renamed to be as close as possible to existing Unix commands that have similar functions. Additionally, the syntax for specifying flags have also been modified to reflect the Unix syntax.
- Highlights: This enhancement required modifications to many
Commmands
andCommandParsers
.
- Enhancement to existing feature: Improved
edit
function to allow user to edit contact details and tasks together- What it does: Allows the user to edit the details of a contact as well as details of any tasks attached to
the contact in one
edit
command. - Justification: There may be times when the user would like to update the detail of a contact as well as the
detail of a task attached to that contact. It would be inconvenient for the user to have to input two separate
edit
commands, the first to edit the person details, and the second to edit the task details. Therefore, theedit
command has been improved so that both can be edited in oneedit
command for a smoother user experience. - Highlights: This enhancement required the careful integration of
EditCommand
andEditTaskCommand
into oneEditCommand
.
- What it does: Allows the user to edit the details of a contact as well as details of any tasks attached to
the contact in one
- Documentation: