Murad Durrani's Project Portfolio Page
Project: Reache
Reache is a desktop app that helps busy working professionals manage their large list of contacts by providing an easy-to-use interface to store contacts and organize meetings.
Summary of Contributions
-
Code Contributed: RepoSense Link
- Enhancements Implemented:
- Added classes for new types of information to be associated with a person (i.e.
Company
,JobTitle
, etc.), and integrated them into the Model component: #30 - Implemented having a unique
Id
for aPerson
, which was used for allMeeting
related functionality: #120 - Added
Label
, which is used to label aPerson
’s contact information: #110 - Implemented functionality for automatically creating default labels when none are provided by the user, and for ensuring that duplicate labels are not created, in
LabelUtil
: #156 - Implemented
ContactDetailsParser
, which is responsible for parsing user input in theContactDetailsWindow
: #42 - Created the
ContactDetailsWindow
and its UI components (ContactDetailsPanel
,ParticularsCard
, etc.), which are responsible for displaying all a person’s contact details, and implemented the necessary navigation logic to change screens: #42 - Created
MeetingListPanel
and its UI components, which is responsible for displaying all the user’s meetings: #140 - Created
ContactMeetingsPanel
and its UI components, which is responsible for displaying meetings that the user has with a specific contact in theContactDetailsWindow
: #145 - Implemented
AddCommand
to add a newPerson
to the Address Book. #60 - Implemented
ViewCommand
to navigate to theContactDetailsWindow
to view a specificPerson
’s complete contact information. #71
- Added classes for new types of information to be associated with a person (i.e.
- Contributions to the UG:
- Contributions to the DG:
- Contributions to the team-based tasks:
- Review/mentoring contributions:
- Contributions beyond the project team:
- Wrote 5 issues for Harmonia during the PE-D
- Contributions to the Developer Guide (Extracts):
### 5.4 View feature
The `view` feature allows the user to view the contact details of a specified person
in the address book, as well as meetings the user has with that person. The command
is only available from the Home Page, and is facilitated by the`HomePageParser`,
`ViewCommandParser`, and `ViewCommand`. Additionally, it implements the following
operation:
* `MainWindow#LoadContactDetailsPage(Person personToDisplay)` — Constructs a
`ContactDetailsPanel` and a `ContactMeetingsPanel` for the specified
`personToDisplay`, and displays them in the `MainWindow`.
Given below is an example usage scenario and how the _view_ mechanism behaves at
each step.
Step 1. From the Home Page, the user executes `view 2` to view the contact details
of the second person in the addressbook. A `ViewCommand` is constructed with the
index of the person to de displayed.
Step 2. The `ViewCommand` is executed, and the person that corresponds to the
provided index is returned to `MainWindow` inside a `CommandResult`.
Step 3. `MainWindow#loadContactDetailsPage(Person personToDisplay)` is
executed with the specified person passed as argument, which constructs and
displays the respective `ContactDetailsPanel` and `ContactMeetingsPanel`.
The following sequence diagram shows how the _view_ feature works:

- Contributions to the User Guide (Extracts):
Upon launching Reache, you will see the Main Window, which is depicted below.
The Main Window displays your entire contact list as well as all upcoming meetings
you have planned.

The Main Window contains the following elements:
1. **Menu Bar**: Contains Reache's options and help.
2. **Command Box**: A dialog box from which you can type commands to use Reache.
3. **Result Display**: When you use the Command Box to enter a command, Reache
will show the result of that command here.
4. **Contact List**: A list of all your contacts, sorted alphabetically. Each
contact has a corresponding index number, which you can use to refer to
that contact in commands.
5. **Meeting List**: A list of all your upcoming meetings, sorted
chronologically. As with contacts, each meeting has a corresponding index
number for use in commands.