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
sortcommand.- 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
SortCommandas well as aSortCommandParser. It also required modifyingModelManagerto include aSortedList<Person>.
- New Feature: Added the
clearcommand.- 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:
clearis 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
ClearCommandthat updates themodel. In turn, changes to themodelare reflected in the contact list and task list.
- New Feature: Added the
man COMMANDfunctionality.- 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 COMMANDis 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
HelpCommandParserto detect when aCOMMANDwas given in the input (else, the help window will be opened). This feature also required modifications toHelpCommandto 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
CommmandsandCommandParsers.
- Enhancement to existing feature: Improved
editfunction 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
editcommand. - 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
editcommands, the first to edit the person details, and the second to edit the task details. Therefore, theeditcommand has been improved so that both can be edited in oneeditcommand for a smoother user experience. - Highlights: This enhancement required the careful integration of
EditCommandandEditTaskCommandinto 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: