This was a project template for a greenfield Java project. It was named after the Java mascot Duke. I have adapted this project into TommyTalks. Given below are instructions on how to use it.
Prerequisites: JDK 17, update Intellij to the most recent version.
-
Open Intellij (if you are not in the welcome screen, click
File>Close Projectto close the existing project first) -
Open the project into Intellij as follows:
- Click
Open. - Select the project directory, and click
OK. - If there are any further prompts, accept the defaults.
- Click
-
Configure the project to use JDK 17 (not other versions) as explained in here.
In the same dialog, set the Project language level field to theSDK defaultoption. -
After that, locate the
src/main/java/tommyTalks/Tommytalks.javafile, right-click it, and chooseRun TommyTalks.main()(if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:

-
You may see some warnings appear in the terminal however it is safe to ignore them.
Warning: Keep the
src\main\javafolder as the root folder for Java files (i.e., don't rename those folders or move Java files to another folder outside of this folder path), as this is the default location some tools (e.g., Gradle) expect to find Java files.
- Ensure you have Java 17 or above installed on your on your computer
MAC Users: Ensure you have the precise JDK version prescribed here - Download the latest
.jarfile from here - Copy the file to the folder you want to use as the home folder for TommyTalks
- Open a command terminal,
cdinto the folder you put the jar file in, and use thejava -jar TommyTalks.jarcommand to run the application.
A GUI similar to above should appear in a few seconds. - Type the command in the command box and press Enter to execute it e.g. typing
helpand pressing Enter will list out the possible commands. - Refer to the Features below for details of each command.
TommyTalks supports 3 kinds of tasks:
- ToDo
- Deadline
- Event
The simplest of all tasks, just give it a name and Tommy will keep track of it for you.
Format: todo NAME
NAMEis a string
Upon successful creation, you should expect to see the following output:
Added:
1. [T][] NAME
You have 1 tasks in the list.
A task that contains a deadline by which you aim to finish this task by.
Format: deadline NAME /by DATE
NAMEis a stringDATEis in DD MM YYYY format
Upon successful creation, you should expect to see the following output:
Added:
1. [D][] NAME (by: DATE)
You have 1 tasks in the list.
A task that spans over a duration of time, with a start and end date.
Format: event NAME /from START_DAY START_TIME /to END_DATE END_TIME
NAMEis a stringSTART_DATEandEND_DATEis in DD MM YYYY formatSTART_TIMEandEND_TIMEis in 24 hours format as HH:MM
Upon successful creation, you should expect to see the following output:
Added:
1. [E][] NAME (from: START_DATE START_TIME to: END_DATE END_TIME)
You have 1 tasks in the list.
Tommy supports multiple features and commands that aim to make remembering and accessing tasks simple for you.
Lists out all the tasks that you currently have in the list as a 1-indexed list.
Format: list
You should see your tasks listed out in a 1-indexed list:
Here are the tasks you have:
1. [T][] NAME
.
.
.
Marks the specified task as completed, which is represented by an 'X' in the second bracket.
Format: mark INDEX
- Marks the task at
INDEXas completed INDEXrefers to the index number shown in the displayed list of tasksINDEXmust be a positive integer 1, 2, 3, ...
You should see a confirmation message upon successfully marking a task as completed:
Great! I'll mark this as done then.
1. [T][X] NAME
Marks the specified task as uncompleted, which is represented by an empty second bracket.
Format: unmark INDEX
- Marks the task at
INDEXas uncompleted INDEXrefers to the index number shown in the displayed list of tasksINDEXmust be a positive integer 1, 2, 3, ...
You should see a confirmation message upon successfully unmarking a task as completed:
Okay, I'll mark this as uncompleted.
1. [T][] NAME
Delete the specified task from the list of tasks.
Format: delete INDEX
- Deletes the task at
INDEX INDEXrefers to the index number shown in the displayed list of tasksINDEXmust be a positive integer 1, 2, 3, ...
You should see a confirmation message upon successfully deleting a task:
Removed:
[T][] NAME
Now, you have (remaining number of tasks) tasks in the list.
Lists all tasks whose names contain any of the given keywords.
Format: find KEYWORD
- The search is case-insensitive
- Only the name of the task is searched
KEYWORDneed not be a full word for a match e.g.prowill matchproject
You should see a confirmation message upon a successful query:
Are these what you're looking for?
1. [T][] NAME
.
.
.
Shows a summary of possible commands explaining how to use the program.
Format: help
You should see a summary message for your query:
------------------------------------
Here is the list of commands
------------------------------------
.
.
.
Adjusts the priority of the specified task according to the priority specified.
Format: priority INDEX PRIORITY
- Adjusts the priority of the task at
INDEX INDEXrefers to the index number shown in the displayed list of tasksINDEXandPRIORITYmust be a positive integer 1, 2, 3, ...- A smaller integer indicates a higher priority e.g. 2 is a higher priority than 4
You should see a confirmation message upon successfully adjusting the priority:
I have adjusted the following priority:
[T][] NAME
Please call sort to view your new list.
Sort the list according to the priority levels of the tasks.
Format: sort
- Ordering is based on priority level, a higher priority will be at the start of the list
- Ties are broken lexicographically
You should see your tasks listed out in a new 1-indexed list:
Here are the tasks you have:
1. [T][] NAME
.
.
.
Exits the program. Tommy will remember your tasks the next time you open up the chat again.
Format: bye
You should see a goodbye message from Tommy after calling bye:
Bye, hope to see you again!