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

[Kaitlyn] iP #461

Open
wants to merge 37 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
3b19ba1
Add Gradle support
May 24, 2020
456de8d
Level 1 completed
kaitlynng Aug 18, 2020
6e2b2a1
Bot now speaks russian
kaitlynng Aug 18, 2020
0d1b9a3
Level 3 done
kaitlynng Aug 19, 2020
90ef94f
Created Task class
kaitlynng Aug 19, 2020
ae618f8
Done level 4
kaitlynng Aug 20, 2020
0fa0977
Done A-TextUiTesting
kaitlynng Aug 20, 2020
403e28c
Done Level 5
kaitlynng Aug 20, 2020
1b2ebe2
Done Level 6
kaitlynng Aug 20, 2020
46f1d9a
Added enums
kaitlynng Aug 20, 2020
3f08797
Add Level-7 increment
kaitlynng Aug 30, 2020
299b09a
Add Level-8
kaitlynng Aug 30, 2020
730d194
switch to using LocalDateTime
kaitlynng Aug 30, 2020
b533b2f
Merge branch 'branch-Level-8'
kaitlynng Aug 30, 2020
289082d
Add A-MoreOOP
kaitlynng Aug 31, 2020
32469b6
Add A-Packages
kaitlynng Aug 31, 2020
24ca469
Add A-JUnit
kaitlynng Aug 31, 2020
cb051f4
Add A-JavaDoc
kaitlynng Sep 1, 2020
8be86c4
Add A-CodingStandard
kaitlynng Sep 1, 2020
491a55a
Merge tag 'A-CodingStandard'
kaitlynng Sep 1, 2020
ceb57be
Merge branch 'add-gradle-support' into branch-A-Gradle
kaitlynng Sep 1, 2020
398dd04
Add Level-10
kaitlynng Sep 8, 2020
00e31b4
Add A-Assertions
kaitlynng Sep 8, 2020
ef0e879
Merge pull request #1 from kaitlynng/A-Assertions
kaitlynng Sep 8, 2020
4a7970e
Revert "Add A-Assertions"
kaitlynng Sep 8, 2020
d6271e9
Merge pull request #2 from kaitlynng/revert-1-A-Assertions
kaitlynng Sep 8, 2020
bae37bd
Add Level-9
kaitlynng Sep 17, 2020
98f98c4
Add A-Assertions
kaitlynng Sep 17, 2020
a599370
Add C-Update
kaitlynng Sep 18, 2020
d03ab6c
Add A-CodeQuality
kaitlynng Sep 18, 2020
ddf8545
Merge pull request #3 from kaitlynng/branch-A-CodeQuality
kaitlynng Sep 18, 2020
46fa9d9
Add A-UserGuide
kaitlynng Sep 18, 2020
0cb4f87
Update README.md
kaitlynng Sep 18, 2020
7d6cd58
Add A-BetterGUI
kaitlynng Sep 18, 2020
1bb0432
Add more GUI improvements
kaitlynng Sep 18, 2020
2bca07a
minor changes
kaitlynng Sep 18, 2020
9829b69
Resize dialogbox
kaitlynng Sep 18, 2020
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
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Duke project template
# duke.Duke project template

This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it.

Expand All @@ -15,7 +15,7 @@ Prerequisites: JDK 11, update Intellij to the most recent version.
1. Click `Open or Import`.
1. Select the project directory, and click `OK`
1. If there are any further prompts, accept the defaults.
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:
1. After the importing is complete, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.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 {
String javaFxVersion = '11'

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'

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 = "DukeLUL"
archiveClassifier = null
}

checkstyle {
toolVersion = '8.23'
}

run{
standardInput = System.in
}
7 changes: 7 additions & 0 deletions data/tasks.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
duke.task.Task list (Last updated Sep 18 2020, 22:56:14 PM):
1. [T][✗] homewok
2. [T][✗] test1
3. [T][✗] test2
4. [T][✗] test3
5. [T][✗] test4
6. [T][✗] test6
218 changes: 208 additions & 10 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,218 @@
# User Guide
# DukeLUL User Guide

DukeLUL is a desktop app for managing things that you need to get done.
Chat with an incredibly annoying LULCAT and get so irritated that you'll
complete your tasks in record time and close the app ASAP.

* [Quick Start](#quick-start)
* [Features](#features)
* [Viewing help: `help`](#viewing-help-help)
* [Adding a todo task: `todo`](#adding-a-todo-task-todo)
* [Adding a task with a deadline: `deadline`](#adding-a-task-with-a-deadline-deadline)
* [Adding an event task: `event`](#adding-an-event-task-event)
* [Listing all tasks: `list`](#listing-all-tasks-list)
* [Finding tasks: `find`](#finding-tasks-find)
* [Marking a task as done: `done`](#marking-a-task-as-done-done)
* [Deleting a task: `delete`](#deleting-a-task-delete)
* [Updating a task: `update`](#updating-a-task-update)
* [Exiting the program: `bye`](#exiting-the-program-bye)
* [Saving the data](#saving-the-data)
* [FAQ](#FAQ)
* [Command summary](#command-summary)
<br />

---

## Quick Start

1. Ensure you have Java 11 or above installed on your computer.

2. Download the latest `DukeLUL.jar` from [here](https://github.com/kaitlynng/ip/releases/tag/v0.1).

3. Copy the file to the folder you want to use as the home folder of your DukeLUL app.

4. Double-click the file to start the app. The GUI similar to the one below should appear in a few seconds.

5. Chat with the LULCAT by typing into the chat box and pressing Enter. Typing `help` and pressing Enter will bring up
a list of commands you can try.

6. Refer to the Features below for details of available commands.


## Features

### Feature 1
Description of feature.
This section describes a list of commands that you can use when chatting with LULCAT.

| :memo: Take note! |
|:------------------------------------------------------------------------------------------------------|
| Words in `UPPER_CASE` are parameters to be supplied by you. |
| * e.g. In `todo TASK_DESCRIPTION`, `TASK_DESCRIPTION` is a parameter which you can supply, like so: `todo Homework` |
| |
| Items in square brackets are optional. |
| * e.g. `list [\by DATE_TIME]` can be used as `list` or `list \by 2012-02-02` |


### Viewing help: `help`

<details>
<summary>Provides a link to the user guide for additional help.</summary>

Format: `help`
</details>

### Adding a todo task: `todo`

<details>
<summary>Adds a todo task to the tasklist</summary>

Format: `todo TASK_DESCRIPTION`
Examples:
* `todo Finish homework`
* `todo Clean the house`
</details>

### Adding a task with a deadline: `deadline`

<details>
<summary>Adds a task to the tasklist with a deadline.</summary>

Format: `deadline TASK_DESCRIPTION \by DATE_TIME`
* Note that the `DATE_TIME`has to be entered with a `YYYY-MM-dd` or `YYYY-MM-ddThh:mm:ss` format to be
recognised as a date / datetime by the app. Otherwise, no filtering operations
can be performed on it.

Examples:
* `deadline Project 3 \by 2020-10-05`
* `deadline Buy grocevires \by 2020-09-16T11:02`
</details>

### Adding an event task: `event`
<details>
<summary>Adds an event to the tasklist happening at a given date/time.</summary>

Format: `event EVENT_DESCRIPTION \at DATE_TIME`
* Note that the `DATE_TIME`has to be entered with a `YYYY-MM-dd` or `YYYY-MM-ddThh:mm:ss` format to be
recognised as a date / datetime by the app. Otherwise, no filtering operations
can be performed on it.

Examples:
* `event Night cycling \at 2020-09-19T02:00`
* `event Dad's birthday \at 2020-10-25`
</details>

### Listing all tasks: `list`

<details>
<summary>Shows a list of all tasks in the tasklist.</summary>

Format: `list [\by DATE_TIME]`
* You can optionally specify a `DATE_TIME`to list all the deadlines and events that are due / happening before the given datetime.
The `DATE_TIME` specified has to be of the format `YYYY-MM-dd` or `YYYY-MM-ddThh:mm:ss`
to be valid.

Examples:
* `list \by 2020-09-19T02:00`
* `list \by 2020-10-25`
</details>

### Finding tasks: `find`

<details>
<summary>Finds tasks that contains the given keyphrase.</summary>

Format: `find KEYPHRASE`
* The search is not case-sensitive. e.g. `Cats` will match `cats`
* Only the description of tasks / events is searched.
* Only the whole phrase would be matched. e.g. `Happy` or `days` will not match `Happy days`

Examples:
* `find birthday` returns `John's birthday` and `Weiming's birthday`
</details>

### Marking a task as done: `done`

<details>
<summary>Marks a task in the current tasklist as done.</summary>

Format: `done TASK_INDEX`
* `TASK_INDEX` refers to the index of the task you wish to mark as done in the tasklist.
To find the index of the task you would like to mark as done, use the `list` command.

Examples:
* `done 3` marks the task at index 3 as done
</details>

### Deleting a task: `delete`

<details>
<summary>Deletes a task from the current tasklist.</summary>

Format: `delete TASK_INDEX`
* `TASK_INDEX` refers to the index of the task you wish to delete in the tasklist.
To find the index of the task you would like to delete, use the `list` command.

Examples:
* `delete 3` deletes the task at index 3 in the tasklist
</details>

### Updating a task: `update`

<details>
<summary>Updates the description or datetime of a task currently in the tasklist.</summary>

Format: `update TASK_INDEX [\date] NEW_VALUE`
* `TASK_INDEX` refers to the index of the task you wish to update in the tasklist.
To find the index of the task you would like to update, use the `list` command.
* If `\date` is specified, the date of the task will be updated to `NEW_VALUE`, otherwise
the description of the task will be updated to `NEW_VALUE`. If the task at the given index
does not have a specified datetime, an error will be thrown.

Examples:
* `update 3 Chinese homework` updates the description of the task at index 3 to "Chinese homework"
* `update 3 \date 2020-09-02T12:00:05` updates the datetime of the task at index 3 to "Sep 2 2020, 12:00:05 PM"
</details>

### Exiting the program: `bye`

<details>
<summary>Exits the program.</summary>

Format: `bye`
</details>

### Saving the data

DukeLUL automatically saves the current tasklist to the hard drive after any command that
modifies the tasklist. There is no need to save manually.
<br/>

---

## FAQ
<details>
<summary>How can I inform the developers of bugs in the program?</summary>

## Usage
**A:** You can open a new issue in this project's Github repository. These issues will be
reviewed on a regular basis. Click [here](https://docs.github.com/en/enterprise/2.15/user/articles/creating-an-issue)
to find out how to create a Github issue.
</details>

### `Keyword` - Describe action
---

Describe action and its outcome.
## Command Summary

Example of usage:
| **Action** | **Format** |
|---------------| ---------------------------------------------|
| Help | `help` |
| Add todo | `todo TASK_DESCRIPTION` |
| Add deadline | `deadline TASK_DESCRIPTION \by DATE_TIME` |
| Add event | `event EVENT_DESCRIPTION \at DATE_TIME` |
| List | `list [\by DATE_TIME]` |
| Find | `find KEYPHRASE` |
| Mark done | `done TASK_INDEX` |
| Delete | `delete TASK_INDEX` |
| Update | `update TASK_INDEX [\date] NEW_VALUE` |
| Exit | `bye` |

`keyword (optional arguments)`

Expected outcome:

`outcome`
Binary file added docs/Ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading