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

[Javier Lim] iP #446

Open
wants to merge 53 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
3b19ba1
Add Gradle support
May 24, 2020
075f321
added new greeting, Duke can now echo, Duke can now exit
ijavierja Aug 19, 2020
548b87d
Merge remote-tracking branch 'origin/add-gradle-support'
ijavierja Aug 19, 2020
2f0c6e3
level 2: add and list operation added
ijavierja Aug 19, 2020
879a4b2
mark as done. Incomplete todo, deadline and event operations
ijavierja Aug 20, 2020
94fffe0
completed todo, event, deadline operation
ijavierja Aug 20, 2020
aaf6c02
placed Task and TaskType into Duke class for automated testing
ijavierja Aug 20, 2020
87bcf40
error handling added
ijavierja Aug 20, 2020
1b1cdac
done is updated. delete method is added. Main method cleaned up.
ijavierja Aug 20, 2020
e800b23
minor edit
ijavierja Aug 20, 2020
034305a
Remove incorrect notes
ijavierja Aug 20, 2020
b53c6ea
Merge remote-tracking branch 'origin/master'
ijavierja Aug 26, 2020
4584ea0
Merge branch 'master' of https://github.com/ijavierja/ip
ijavierja Aug 27, 2020
a33904d
Add save method
ijavierja Aug 27, 2020
7dd4bad
Put classes into package duke
ijavierja Aug 28, 2020
bcd6315
Add LocalDateTime attribute to Task class & modified deadline method …
ijavierja Aug 29, 2020
781b8c0
Merge branch 'branch-Level-7'
ijavierja Aug 29, 2020
d9cdb29
Add Ui class
ijavierja Aug 31, 2020
a7af505
Correct add Ui class
ijavierja Aug 31, 2020
716ad9d
Add TaskList class
ijavierja Aug 31, 2020
9bb8360
Add DukeException and Storage classes
ijavierja Aug 31, 2020
60c5f05
Add Command and Parser classes
ijavierja Aug 31, 2020
9eeb71e
Add ParserTest and TaskTest classes; Modified Command interface's met…
ijavierja Aug 31, 2020
15d0e0c
Add MANIFEST.MF file
ijavierja Sep 1, 2020
d08b4b7
Add JavaDoc comments
ijavierja Sep 1, 2020
cd09121
Tweak the code to comply with a coding standard
ijavierja Sep 1, 2020
df9575e
Add Find method
ijavierja Sep 1, 2020
c4cd703
Merge branch 'branch-A-JavaDoc' into branch-Level-9
ijavierja Sep 1, 2020
b8641f8
Merge branch 'branch-A-CodingStandard' into branch-Level-9
ijavierja Sep 1, 2020
1e87679
Add gradle support
ijavierja Sep 2, 2020
da66a0e
Add GUI part 4 successfully
ijavierja Sep 10, 2020
52b52ab
Add GUI
ijavierja Sep 10, 2020
8f28033
Edit Test classes
ijavierja Sep 10, 2020
1ea8d56
Add Assertion
ijavierja Sep 10, 2020
3a59672
Improve Code Quality
ijavierja Sep 14, 2020
d8e8dec
Abstract Command types from Parser class
ijavierja Sep 14, 2020
be80895
Merge pull request #2 from ijavierja/branch-A-CodeQuality
ijavierja Sep 14, 2020
fedebaf
Merge branch 'branch-A-Assertions' into branch-A-CodeQuality
ijavierja Sep 14, 2020
870d4fd
Merge branch 'master' into branch-A-Assertions
ijavierja Sep 14, 2020
e031fe6
Merge branch 'branch-A-CodeQuality'
ijavierja Sep 14, 2020
fece42b
Add Tagging
ijavierja Sep 15, 2020
5ebf9a6
Improve GUI
ijavierja Sep 17, 2020
8ccf763
Add Userguide
ijavierja Sep 17, 2020
2bde23a
Correct bug in Gui
ijavierja Sep 17, 2020
c2caaf8
Add screenshot
ijavierja Sep 17, 2020
b65646e
Edit the README.md file
ijavierja Sep 17, 2020
a66a6d5
Change readme
ijavierja Sep 17, 2020
8a23b47
Edit readme
ijavierja Sep 17, 2020
b55a86f
A-UserGuide
ijavierja Sep 19, 2020
35a5c0e
edit readme file
ijavierja Sep 19, 2020
c81a55b
no message
ijavierja Sep 19, 2020
714bb64
remove ui.png
ijavierja Sep 21, 2020
cb0877f
add ui.png
ijavierja Sep 21, 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
271 changes: 245 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,245 @@
# 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.

## Setting up in Intellij

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 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. 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
____ _
| _ \ _ _| | _____
| | | | | | | |/ / _ \
| |_| | |_| | < __/
|____/ \__,_|_|\_\___|
```
# User Guide
Duke is a desktop app for managing tasks. Duke keeps track of ongoing and finished tasks. Duke offers an interactive and easy way to manage your time.

## Quick Start

1. Download `duke.jar` file from [github](https://github.com/ijavierja/ip/releases).

2. Ensure you have Java `11` or above installed.

3. Choose the home folder and make a copy of the file there.

4. Double-click the file to start the app.

5. A GUI should start.<br>
![Ui](docs/Ui.PNG)

6. Refer to the [Usage](#usage) below for the details of each command.

## Features

### Task Management
* Add tasks
* Delete tasks
* Mark task as done
* Tag tasks

### Task Types
* Todo
* Event
* Deadline

### View Tasks
* view all tasks in the current task list

### Interactive Design
* Greets user when Duke is started up

```
____ _
| _ \ _ _| | _____
| | | | | | | |/ / _ \
| |_| | |_| | < __/
|____/ \__,_|_|\_\___|
Hello I'm Duke
What can I do for you?
```
* Gives user a response when commands are inputted
* Tells user when input is incorrect

## Usage

### `list` - List Command

Lists all tasks in the current task list numerically.
The details, such as tags, date & time, other information, of the tasks are also shown

Example of usage:

`list`

Expected outcome:

```
Here are the tasks in your list:
1. [D][✗] iP (by: 16 Sep 2020, 11:59 PM) #OMFG
2. [T][✓] eat dinner #hungry
3. [E][✗] Graduation! (at: 2021 )
```

### `todo` - Todo Task Command

Creates and adds an ongoing todo task to the list.

Format:

`todo <description>`

Example of usage:

`todo eat dinner`

Expected outcome:

```
Got it. I've added this task:
[T][✗] eat dinner
Now you have 4 tasks in the list.
```

### `event` - Event Task Command

Creates and adds an ongoing event task to the list.

Format:

`event <description> /at <description>`

Example of usage:

`event my birthday /at my place`

Expected outcome:

```
Got it. I've added this task:
[E][✗] my birthday (at: my place)
Now you have 5 tasks in the list.
```

### `deadline` - Deadline Task Command

Creates and adds an ongoing deadline task to the list.

Format:

`event <description> /by <date&time>`

date&time format:

`dd/mm/yyyy tttt`

* Note: no need to write 0 for day and month

* 02/09/2020 can be written as 2/9/2020

Example of usage:

`deadline user guide /by 17/9/2020 2359`

Expected outcome:

```
Got it. I've added this task:
[D][✗] user guide (by: 17 Sep 2020, 11:59 PM)
Now you have 6 tasks in the list.
```

### `delete` - Delete Command

Deletes a task from the task list specified by task's index shown using list command.

Format:

`delete <task index>`

Example of usage:

`delete 6`

Expected outcome:

```
Noted. I've removed this task:
[D][✗] user guide (by: 17 Sep 2020, 11:59 PM)
Now you have 5 tasks in the list.
```

### `done` - Done Command

Marks a task as done. Task is specified using task's index shown using list command.

Format:

`done <task index>`

Example of usage:

`done 5`

Expected outcome:

```
Nice! I've marked this task as done:
[E][✓] my birthday (at: my place)
```

### `/tag` - tag notation

Note tasks with a tag when creating new tasks.

Format:
`<add tas command> /tag <tag>`

Example of usage:

`deadline user guide /by 17/9/2020 2359 /tag GG`

Expected outcome:

```
Got it. I've added this task:
[D][✗] user guide (by: 17 Sep 2020, 11:59 PM) #GG
Now you have 6 tasks in the list.
```

Note:
* /tag must be added at the end of input
* the tag must be alphanumeric

### `save` - Save Command

Saves the current task list to the hard drive.

Example of usage:

`save`

Expected outcome:

```
Tasks have been saved!
```

### `find` - Find Command

Finds and lists the tasks that have a matching sequence.

Format:

`find <phrase>`

Example of usage:

`find user guide`

Expected outcome:

```
Here are the matching tasks in your list:
6.[D][✗] user guide (by: 17 Sep 2020, 11:59 PM) #GG
```

### `bye` - Bye Command

Exits the program.

Example of usage:

`bye`

Expected outcome:

```
Bye. Hope to see you again soon!
```
62 changes: 62 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
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.4.2'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.4.2'

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 = "duke.gui.Launcher"
}

shadowJar {
archiveBaseName = "duke"
archiveClassifier = null
}

checkstyle {
toolVersion = '8.29'
}

run{
systemProperty "file.encoding", "utf-8"
standardInput = System.in
}
Loading