Hemrish Bundhoo - Project Portfolio Page
Overview
GULIO is a module planner designed for efficiency when used by someone that can type fast. It is capable of storing lessons and tasks for individual modules, as well as lesson notes via cheat-sheets.
Summary of Contributions
Click here to view code contribution.
Enhancements Contributed:
- Implemented commands involved in manipulating Lesson objects, excluding edit lesson.
I implemented AddLessonCommand, DeleteLessonCommand and ListLessonsCommand to add, remove and view lesson objects.
- Implemented OpenLessonListCommand.
I implemented this class that allows the user to open the link, inputted when creating a lesson, in a web browser. The issue I had to resolve was that the default command to open a link in a browser was platform dependent.
- Implemented ViewTeachingStaffCommand
I implemented the command needed to view the tutor’s name and email address for a particular lesson.
- Implemented ModuleInfoCommand
I implemented this command to print a summary about a module.
- Implemented commands involved in manipulating Cheat-sheet files.
I implemented AddCheatSheetCommand, DeleteCheatSheetCommand, EditCheatSheetCommand and ListCheatSheetCommand to add, remove, edit and view Cheat-sheet files of a particular module.
- Implemented TextEditor.
I implemented the TextEditor class to allow the user to input and edit cheat-sheets. A problem I faced when implementing the editor was that if the editor was used multiple times for one Gulio Session, it didn’t flush data from previous files after they were closed. I then had to append the text area to null each time the text editor was invoked.
Contributions to Documentation:
- Documented Lesson and Cheat-sheet commands
For each command I implemented, I added a brief description, the command format, a sample input and the expected output.
- Added text editor section.
As the one responsible for the text editor, I did the part explaining to the user how GULIO’s text editor works and what he/she can do with it.
Contributions to Developer Guide:
- Text Editor component in Design section.
I wrote the description for the text editor component under Design in the DG as I was the one who implemented it in our codebase.
- Add lesson command class in Implementation section.
I drew two of the sequence diagrams describing the implementation of the add lesson command under the Implementation section.
Contribution to Team-Based Tasks:
- Fixed minor bugs for some components.
- Maintained issue tracker.
Review/mentoring contributions:
- Full list of PRs approved or commented on by me can be found here.
Contributions Beyond the Team
Contributions to the User Guide (Extracts)[Optional]
Extract of contributions:
Adding a lesson : add lsn
Adds a new lesson with specified lesson type and information to the current module.
Format:
add lsn <lesson type>
add lsn <lesson type> ;; <day & time>
add lsn <lesson type> ;; <day & time> ;; <link>
add lsn <lesson type> ;; <day & time> ;; <link> ;; <teaching staff name>
add lsn <lesson type> ;; <day & time> ;; <link> ;; <teaching staff name> ;; <email>
Example:
Step | When You Enter This: | You Get This: |
---|---|---|
1 | add lsn tutorial ;; Wednesday 9 am - 10am ;; https://nus-sg.zoom.us/j/abc | Added tutorial to lesson list. |
Result - Adds “tutorial” to the module’s list of lessons, with specified details.
⚠ Only accepts 3 lesson types: “lecture”, “lab” and “tutorial”.
💡 To skip an input, leave a blank in between the field separators. For example,
add lesson tutorial ;; ;; ;; Prof Akshay ;; akshay@email.com
will add “tutorial” to the module’s list of lessons with only the given teaching staff name and email. The fields “day & time” and “link” were skipped.
Note: “lesson type” cannot be skipped.
Contributions to the Developer Guide (Extracts)[Optional]
Extract of contributions:
Editor component
API: TextEditor.java
The Editor component is responsible for opening the text editor to add or edit cheat-sheets/notes. It consists of two classes:
Text Editor
- Sets up the text editor
- Loads existing file from Cheatsheet directory within a module for the edit cheat-sheet command
- Flushes out the text from the editor when a different or new file is opened.
- Adjusts the font size of the text within the editor
- Detects mouse input to change font style and save the text
- Saves the text from the text editor into a file
ShortcutListener
- Detects keyboard input for shortcuts
Figure 8 - AddLessonCommand Constructor Sequence Diagram
The newly created Lesson
object is then passed to a new AddLessonCommand
object as an argument.
Figure 9 - execute() AddLessonCommand Sequence Diagram
AddLessonCommand
then adds the Lesson
object to the lesson list of a module. The lessons in the list are sorted by their lesson types each time a new lesson is added. AddLessonCommand
also calls the writeLesson()
method of ModuleList
to update the change locally.