Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Andrea Tan] iP #263

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
af7e8f9
Level 1 complete
andrea-twl Jan 31, 2021
c621220
Level-2 complete
andrea-twl Jan 31, 2021
b3a5323
Level-3 complete
andrea-twl Jan 31, 2021
25b1d6b
level-4 completed (implemented ToDo.java, Deadline.java and Event.jav…
andrea-twl Feb 1, 2021
dd45d1b
Level-5 complete (added DukeIncompleteCommandException.java and DukeI…
andrea-twl Feb 3, 2021
26418a3
Level-6 completed (added delete function)
andrea-twl Feb 3, 2021
0a0fc47
Level-7 complete (save and load - added saveFile() and loadFIle(), as…
andrea-twl Feb 8, 2021
18b425d
Level-8 complete (added date, recoded loadFile(), handled exceptions)
andrea-twl Feb 8, 2021
a7089c6
Merge branch 'branch-Level-8'
andrea-twl Feb 8, 2021
75632ce
Merge branch 'branch-Level-7'
andrea-twl Feb 8, 2021
2061878
A-MoreOOP (added Tasklist.java, Storage.java, Parser.java and UI.java)
andrea-twl Feb 14, 2021
b785eec
A-JUnit (added ParserTest.java, TodoTest.java and DukeTest.java)
andrea-twl Feb 16, 2021
5ea5f47
A-JavaDoc (added JavaDocs to most classes)
andrea-twl Feb 19, 2021
1f42308
A-CodingStandard (fixed tabs, added line breaks)
andrea-twl Feb 20, 2021
8b0510b
Level-9 complete (Find)
andrea-twl Feb 20, 2021
e7cb203
Merge branch 'branch-A-CodingStandard'
andrea-twl Feb 20, 2021
3038258
Merge branch 'branch-Level-9'
andrea-twl Feb 20, 2021
c475678
Level-10 GUI
andrea-twl Feb 22, 2021
b5e8f0f
Bug fixes - reconfigured duke package
andrea-twl Feb 23, 2021
a61b6df
A-Assertions
andrea-twl Feb 23, 2021
62293f2
A-CodeQuality
andrea-twl Feb 23, 2021
081fe4e
Merge pull request #2 from andrea-twl/branch-A-Assertions
andrea-twl Feb 23, 2021
c9172b6
merge commit
andrea-twl Feb 23, 2021
1abb403
Merge branch 'master' into branch-A-CodeQuality
andrea-twl Feb 23, 2021
ae13b46
BCD-Extension (added C-Sort)
andrea-twl Feb 23, 2021
382cb20
Merge branch 'branch-A-CodeQuality'
andrea-twl Feb 23, 2021
e6d3f36
Updated README, added help menu
andrea-twl Feb 24, 2021
be967e3
Set theme jekyll-theme-cayman
andrea-twl Feb 24, 2021
ddd5d12
Update README.md
andrea-twl Feb 24, 2021
b7d0bbe
added Ui.png
andrea-twl Feb 24, 2021
7e15137
Merge branch 'master' of https://github.com/andrea-twl/ip
andrea-twl Feb 26, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ This is a project template for a greenfield Java project. It's named after the J

Prerequisites: JDK 11, update Intellij to the most recent version.

1. Open Intellij (if you are not in the welcome screen, click `File` > `Close Project` to close the existing project first)
1. Open the project into Intellij as follows:
1. Click `Open`.
1. Select the project directory, and click `OK`.
1. Open Intellij (if you are not in the welcome screen, click `File` > `Close Project` to close the existing project dialog first)
1. Set up the correct JDK version, as follows:
1. Click `Configure` > `Structure for New Projects` and then `Project Settings` > `Project` > `Project SDK`
1. If JDK 11 is listed in the drop down, select it. If it is not, click `New...` and select the directory where you installed JDK 11
1. Click `OK`
1. Import the project into Intellij as follows:
1. Click `Open or Import`.
1. Select the project directory, and click `OK`
1. If there are any further prompts, accept the defaults.
1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).
1. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()`. If the setup is correct, you should see something like the below:
1. After the importing is complete, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()`. If the setup is correct, you should see something like the below:
```
Hello from
____ _
Expand Down
61 changes: 61 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
plugins {
id 'java'
id 'application'
id 'checkstyle'
id 'com.github.johnrengelman.shadow' version '5.1.0'
}

repositories {
mavenCentral()
}

dependencies {
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0'

String javaFxVersion = '11'

implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux'
}

test {
useJUnitPlatform()

testLogging {
events "passed", "skipped", "failed"

showExceptions true
exceptionFormat "full"
showCauses true
showStackTraces true
showStandardStreams = false
}
}

application {
mainClassName = "Launcher"
}

shadowJar {
archiveBaseName = "blue"
archiveClassifier = null
}

checkstyle {
toolVersion = '8.29'
}

run{
standardInput = System.in
}
8 changes: 8 additions & 0 deletions data/duke.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
TODO[X] watch lecture
TODO[X] eat dinner
DDLN[ ] assignment (by: 2021-02-23)
TODO[ ] buy groceries
EVNT[ ] ice skating (at: 2022-03-15)
DDLN[ ] lecture quiz (by: 2021-04-01)
TODO[X] complete homework
TODO[ ] som
218 changes: 211 additions & 7 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,224 @@
# User Guide

Duke is a Command Line Interface (CLI) style desktop task
list application for managing your tasks, events and deadlines.

## Features
+ Viewing help : `help`
+ Adding a to do task : `todo`
+ Adding a deadline : `deadline`
+ Adding an event : `event`
+ Listing all tasks : `list`
+ Completing a task : `done`
+ Deleting a task : `delete`
+ Sorting task list : `sort`
+ Locating a task : `find`
+ Exiting the program : `bye`

## Viewing help : `help`
Shows complete list of commands.

### Feature 1
Description of feature.
### Usage
Format: `help`

## Usage

### `Keyword` - Describe action
## Adding a to do task : `todo`
Adds a generic to do task to the task list.

Describe action and its outcome.
### Usage
Format: `todo {TASK_NAME}`
+ adds`TASK_NAME` to the task list as a to do task.

Example of usage:

`keyword (optional arguments)`
`todo watch lecture videos`

Expected outcome:

`TODO[ ] watch lecture videos` will be added to the task list.

## Adding a deadline : `deadline`
Adds a deadline to the task list.

### Usage
Format: `deadline {DEADLINE_NAME} /by {YYYY-MM-DD}`
+ adds`DEADLINE_NAME` to the task list as a deadline.

Example of usage:

`deadline assignment /by 2021-02-20`

Expected outcome:

`DDLN[ ] assignment (by: Feb 20 2021)` will be added to the task list.

## Adding a event : `event`
Adds an event to the task list.

### Usage
Format: `event {EVENT_NAME} /at {YYYY-MM-DD}`
+ adds`EVENT_NAME` to the task list as an event.

Example of usage:

`event career fair /at 2021-04-02`

Expected outcome:

`EVNT[ ] career fair (at: Apr 2 2021)` will be added to the task list.

## Listing all tasks : `list`
Displays all tasks in the task list.

### Usage
Format: `list`

Example of usage:

`list`

Expected outcome:

`outcome`
1. TODO[ ] watch lecture videos
2. DDLN[ ] assignment (by: Feb 20 2021)
3. EVNT[ ] career fair (at: Apr 2 2021)

## Completing a task : `done`
Marks a task as done.

### Usage
Format: `done {INDEX}`
+ Marks the task corresponding to INDEX according to
the list as done.
+ List can be accessed with `list` command.

Example of usage:

`list`

1. TODO[ ] watch lecture videos
2. DDLN[ ] assignment (by: Feb 20 2021)
3. EVNT[ ] career fair (at: Apr 2 2021)

`done 2`

Expected outcome:

`list`

1. TODO[ ] watch lecture videos
2. DDLN[X] assignment (by: Feb 20 2021)
3. EVNT[ ] career fair (at: Apr 2 2021)

The second task on the list `2. DDLN[X] assignment (by: Feb 20 2021)`
will be marked as done.

## + Deleting a task : `delete`
Deletes a task from the list.

### Usage
Format: `delete {INDEX}`
+ Deletes the task corresponding to INDEX according to
the list
+ List can be accessed with `list` command.

Example of usage:

`list`

1. TODO[ ] watch lecture videos
2. DDLN[X] assignment (by: Feb 20 2021)
3. EVNT[ ] career fair (at: Apr 2 2021)

`delete 2`

Expected outcome:

1. TODO[ ] watch lecture videos
2. EVNT[ ] career fair (at: Apr 2 2021)

`DDLN[X] assignment (by: Feb 20 2021)` has been deleted
permanently from the task list.
## Sorting task list : `sort`
Sorts the task list by date.

### Usage
Format: `sort`
+ Tasks are sorted by date.
+ Deadlines and events will be displayed in order of
increasing due date.
+ To do tasks without dates will be arranged below
deadlines and events
+ Sorting is for viewing only; the new indices of the
tasks will not apply when using `done` and `delete`
commands

Example of usage:

`list`

1. TODO[ ] watch lecture videos
2. DDLN[X] assignment (by: Feb 20 2021)
3. EVNT[ ] career fair (at: Apr 2 2021)

`sort`

Expected outcome:

`list`

1. DDLN[X] assignment (by: Feb 20 2021)
2. EVNT[ ] career fair (at: Apr 2 2021)
3. TODO[ ] watch lecture videos

`1. DDLN[X] assignment (by: Feb 20 2021)` and
`2. EVNT[ ] career fair (at: Apr 2 2021)`are sorted by date, while
`3. TODO[ ] watch lecture videos` has no date, and is sorted to
the bottom by default.

## Locating a task : `find`
Searches and displays tasks.

### Usage
Format: `find {KEYWORD}`
+ Tasks in the list that contain words that match the
KEYWORD will be displayed.
+ Task names or descriptions, types of task or dates can
all be used as keywords.
+ Keywords are case-sensitive and need to match the way the
list displays tasks, or the right results may not be retrieved.
+ Indices displayed in the results list are for viewing only,
and will not apply when using `done` and `delete`
commands
Example of usage:

`list`

1. TODO[ ] watch lecture videos
2. DDLN[X] assignment (by: Feb 20 2021)
3. EVNT[ ] career fair (at: Apr 2 2021)
4. DDLN[ ] study for quiz (by: Mar 15 2021)

`find DDLN`

Expected outcome:

Here are the matching tasks in your list:

1. DDLN[X] assignment (by: Feb 20 2021)
2. DDLN[ ] study for quiz (by: Mar 15 2021)

Found 2 result(s).

All tasks with `DDLN` in the list will be displayed.


## Exiting the program : `bye`
Exits program.

### Usage
Format: `bye`

## Acknowledgements
### External Libraries used:
+ javafx-sdk-11.0.2
Loading