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

[Lee Shi Jie Shawn] Duke Increments #527

Open
wants to merge 77 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
65f72a8
Add support for Gradle workflow
j-lum Aug 6, 2019
0112efe
Add sample checkstyle configuration
j-lum Aug 12, 2019
cfd6da7
Change file mode on `gradle` to be executable
j-lum Aug 18, 2019
6e6ace1
Merge pull request #12 from j-lum/gradle+x
j-lum Aug 18, 2019
21428c3
Complete Level-1: Greet, Echo, Exit
shawnlsj97 Aug 21, 2019
dda69f5
Complete Level-1: Greet, Echo, Exit
shawnlsj97 Aug 21, 2019
60f306d
Complete Level-2: Add, List
shawnlsj97 Aug 21, 2019
b220db7
Complete Level-3: Mark as Done
shawnlsj97 Aug 21, 2019
8391403
Complete Level-4: ToDo, Event, Deadline
shawnlsj97 Aug 21, 2019
8770bfe
Complete A-TextUiTesting: Text UI Testing
shawnlsj97 Aug 21, 2019
34dd557
Complete Level-5: Handle Errors
shawnlsj97 Aug 21, 2019
4a196cb
Complete Level-6: Delete
shawnlsj97 Aug 21, 2019
731d103
Clean up implementation, rename according to Java Coding Standard
shawnlsj97 Aug 27, 2019
cc6362e
Level-7: Save
shawnlsj97 Aug 27, 2019
8377c96
Level-8: Dates and Times
shawnlsj97 Aug 27, 2019
9db865e
Merge branch 'branch-Level-8'
shawnlsj97 Aug 27, 2019
c8ef782
Level-8: Dates and Times
shawnlsj97 Aug 27, 2019
098213b
Complete A-MoreOOP: More OOP
shawnlsj97 Aug 27, 2019
9232b85
Complete A-JUnit: JUnit Testing
shawnlsj97 Aug 27, 2019
37ef664
Complete A-Jar: JAR file
shawnlsj97 Aug 28, 2019
2c14f25
Complete A-JavaDoc: JavaDoc
shawnlsj97 Aug 28, 2019
d200f8e
Complete A-CodingStandard: Coding Standard
shawnlsj97 Aug 28, 2019
13412f6
Complete Level-9: Find
shawnlsj97 Aug 28, 2019
b27ef15
Merge branch 'branch-A-JavaDoc'
shawnlsj97 Aug 28, 2019
5fec8f0
Merge branch 'branch-A-CodingStandard'
shawnlsj97 Aug 28, 2019
7bee193
Merge branch 'branch-Level-9'
shawnlsj97 Aug 28, 2019
5eb7d0c
Add Command class implementation
shawnlsj97 Sep 1, 2019
a5cee57
Add Java Doc
shawnlsj97 Sep 1, 2019
9cc0195
Add Javadoc and clean up logic
shawnlsj97 Sep 2, 2019
d74f432
Add SimpleDateFormat implementation
shawnlsj97 Sep 3, 2019
a6fbeed
Add A-Packages: Java Packages
shawnlsj97 Sep 3, 2019
5943056
Edit import statement
shawnlsj97 Sep 3, 2019
18c79f6
Change import statements to single class import
shawnlsj97 Sep 3, 2019
024d251
Merge branch 'gradle' of https://github.com/shawnlsj97/duke into bran…
shawnlsj97 Sep 3, 2019
9eba8e7
Add A-Gradle: Gradle
shawnlsj97 Sep 3, 2019
f8531b8
Edit input file
shawnlsj97 Sep 3, 2019
6396701
Merge branch 'branch-A-Gradle'
shawnlsj97 Sep 3, 2019
5ffde97
Add A-CheckStyle: CheckStyle
shawnlsj97 Sep 3, 2019
4bda2ad
Merge branch 'branch-A-CheckStyle'
shawnlsj97 Sep 3, 2019
e31f82b
Add skeleton for Level-10: GUI
shawnlsj97 Sep 4, 2019
22991f7
Add Level-10: GUI
shawnlsj97 Sep 4, 2019
cb71cf7
Add A-Assertions
shawnlsj97 Sep 10, 2019
72d6cf2
Complete A-CodeQuality
shawnlsj97 Sep 10, 2019
18134c0
Change dialogbox rendering for long messages
shawnlsj97 Sep 10, 2019
667841d
Add C-Update and C-Help
shawnlsj97 Sep 11, 2019
97228c3
Add C-FriendlierSyntax
shawnlsj97 Sep 11, 2019
48ae64f
Add A-Travis: Travis
shawnlsj97 Sep 16, 2019
88cb080
Add C-Undo
shawnlsj97 Sep 16, 2019
fbf3639
Add Javadoc and amend checkstyle errors
shawnlsj97 Sep 16, 2019
dc892c2
Fix checkstyle errors
shawnlsj97 Sep 16, 2019
a81a5c2
Fix import statements in unit tests
shawnlsj97 Sep 16, 2019
4857956
Update travis file
shawnlsj97 Sep 16, 2019
d8a220e
Update gui design
shawnlsj97 Sep 17, 2019
7450085
Fix undo command
shawnlsj97 Sep 18, 2019
38a6dcb
Add README
shawnlsj97 Sep 18, 2019
fb3eb6a
Add README
shawnlsj97 Sep 18, 2019
b50a71d
Create LICENSE
shawnlsj97 Sep 18, 2019
4a9380a
Update README
shawnlsj97 Sep 18, 2019
8230794
Merge remote-tracking branch 'origin/master'
shawnlsj97 Sep 18, 2019
d28bd9a
Update README
shawnlsj97 Sep 18, 2019
3c18b35
Complete A-Release
shawnlsj97 Sep 18, 2019
8bee00c
Add README to docs
shawnlsj97 Sep 18, 2019
08a2b91
Merge branch 'branch-pullrequest2'
shawnlsj97 Sep 18, 2019
1357c13
Set up github pages
shawnlsj97 Sep 18, 2019
01bcfab
Edit README
shawnlsj97 Sep 18, 2019
d6f4aeb
Update README
shawnlsj97 Sep 18, 2019
5e7886b
Add alias to README
shawnlsj97 Sep 18, 2019
50747b1
Testing yml file
shawnlsj97 Sep 18, 2019
57556bb
Set theme jekyll-theme-time-machine
shawnlsj97 Sep 18, 2019
10b3c61
Set theme jekyll-theme-time-machine
shawnlsj97 Sep 18, 2019
1adab93
Update README
shawnlsj97 Sep 18, 2019
27519a7
Set theme jekyll-theme-leap-day
shawnlsj97 Sep 18, 2019
514fe19
Update README
shawnlsj97 Sep 18, 2019
39aaf7e
Update gradle to run on all OS
shawnlsj97 Sep 18, 2019
eae98f7
Update README with expected outcome
shawnlsj97 Sep 21, 2019
7b933d6
Fix README media path issues
shawnlsj97 Sep 21, 2019
1ecc17a
Update README media file paths
shawnlsj97 Sep 21, 2019
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
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
language: java
39 changes: 39 additions & 0 deletions Development README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Setting up

**Prerequisites**

* JDK 11
* Recommended: IntelliJ IDE
* Fork this repo to your GitHub account and clone the fork to your computer

**Importing the project into IntelliJ**

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.
* Click `Configure` > `Structure for new Projects` (in older versions of Intellij:`Configure` > `Project Defaults` > `Project Structure`).
* 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.
* Click `OK`.
1. Click `Import Project`.
1. Locate the project directory and click `OK`.
1. Select `Create project from existing sources` and click `Next`.
1. Rename the project if you want. Click `Next`.
1. Ensure that your src folder is checked. Keep clicking `Next`.
1. Click `Finish`.

# Tutorials

Duke Increment | Tutorial
---------------|---------------
`A-Gradle` | [Gradle Tutorial](tutorials/gradleTutorial.md)
`A-TextUiTesting` | [Text UI Testing Tutorial](tutorials/textUiTestingTutorial.md)
`Level-10` | JavaFX tutorials:<br>→ [Part 1: Introduction to JavaFX][fx1]<br>→ [Part 2: Creating a GUI for Duke][fx2]<br>→ [Part 3: Interacting with the user][fx3]<br>→ [Part 4: Introduction to FXML][fx4]

[fx1]: <tutorials/javaFxTutorialPart1.md>
[fx2]: <tutorials/javaFxTutorialPart2.md>
[fx3]: <tutorials/javaFxTutorialPart3.md>
[fx4]: <tutorials/javaFxTutorialPart4.md>

# Feedback, Bug Reports

* If you have feedback or bug reports, please post in [se-edu/duke issue tracker](https://github.com/se-edu/duke/issues).
* We welcome pull requests too.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2019 Shawn Lee Shi Jie

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
222 changes: 192 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,201 @@
# Setting up
# Trackr

**Prerequisites**
Trackr is a **desktop application that helps you to manage tasks**. Trackr is **optimized for users who prefer to work with a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI).

* JDK 11
* Recommended: IntelliJ IDE
* Fork this repo to your GitHub account and clone the fork to your computer
<img src="./READMEMedia/media/app.png" width="254" height="400" />

**Importing the project into IntelliJ**
If you can type fast, Trackr can help you complete your task management process faster than traditional GUI apps.

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.
* Click `Configure` > `Structure for new Projects` (in older versions of Intellij:`Configure` > `Project Defaults` > `Project Structure`).
* 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.
* Click `OK`.
1. Click `Import Project`.
1. Locate the project directory and click `OK`.
1. Select `Create project from existing sources` and click `Next`.
1. Rename the project if you want. Click `Next`.
1. Ensure that your src folder is checked. Keep clicking `Next`.
1. Click `Finish`.
### 1. Quick Start
1. Ensure you have Java `11` or above installed in your computer.
2. Download the latest `trackr.jar` [here](https://github.com/shawnlsj97/duke/releases/tag/v1.0).
3. Copy the file to the folder you want to use as the home folder for your list of tasks.
4. Double-click the file to start to app. The GUI should appear shortly.
<img src="./READMEMedia/media/launch.png" width="254" height="400" />

# Tutorials
5. Type all commands in the command box at the bottom and press "Enter" on your keyboard to execute it.
e.g. typing `help` and pressing "Enter" will show a list of available commands.
* Some example commands you can try:
* `list`: lists all tasks
* `todo 100 pushups`: adds a task to be done called `100 pushups` to the task list
* `delete 1`: deletes the 1st task shown in the list
* `exit`: exits the app
* Refer to the section below for details of available commands in this application

Duke Increment | Tutorial
---------------|---------------
`A-Gradle` | [Gradle Tutorial](tutorials/gradleTutorial.md)
`A-TextUiTesting` | [Text UI Testing Tutorial](tutorials/textUiTestingTutorial.md)
`Level-10` | JavaFX tutorials:<br>→ [Part 1: Introduction to JavaFX][fx1]<br>→ [Part 2: Creating a GUI for Duke][fx2]<br>→ [Part 3: Interacting with the user][fx3]<br>→ [Part 4: Introduction to FXML][fx4]
### 2. Features

[fx1]: <tutorials/javaFxTutorialPart1.md>
[fx2]: <tutorials/javaFxTutorialPart2.md>
[fx3]: <tutorials/javaFxTutorialPart3.md>
[fx4]: <tutorials/javaFxTutorialPart4.md>
Words in `UPPER_CASE` are the parameters to be supplied by the user e.g. in `todo TASK_NAME'`, `TASK_NAME` is a parameter which can be used as `todo gym workout`.

# Feedback, Bug Reports
#### 2.1 Viewing help: `help`
Displays all available commands in the application.

* If you have feedback or bug reports, please post in [se-edu/duke issue tracker](https://github.com/se-edu/duke/issues).
* We welcome pull requests too.
Format: `help`

#### 2.2 Adding a task to be done: `todo` (alias `t`)
Adds a task to be done with the provided `TASK_NAME` to your list.

Format: `todo TASK_NAME` or `t TASK_NAME`

Examples:
* `todo 100 pushups`
* `t 100 pushups`

Adds a task to be done with the name `100 pushups` to your list of tasks.

Expected Outcome:

<img src="./READMEMedia/media/todo.PNG" width="254" height="108" />

#### 2.3 Adding a deadline: `deadline` (alias `d`)
Adds a deadline with the provided `DEADLINE_NAME` and date and time in the format `DD/MM/YYYY HHMM` to your list.

Format: `deadline DEADLINE_NAME /by DD/MM/YYYY HHMM` or `d DEADLINE_NAME /by DD/MM/YYYY HHMM`

Examples:
* `deadline math assignment /by 30/11/2019 2359`
* `d math assignment /by 30/11/2019 2359`

Adds a deadline with the name `math assignment` to be completed by `30/11/2019 2359` to your list.

Expected Outcome:

<img src="./READMEMedia/media/deadline.PNG" width="254" height="109" />

#### 2.4 Adding an event to be attended: `event` (alias `e`)
Adds an event with the provided `EVENT_NAME` and date and time in the format `DD/MM/YYYY HHMM` to your list.

Format: `event EVENT_NAME /at DD/MM/YYYY HHMM` or `e EVENT_NAME /at DD/MM/YYYY HHMM`

Examples:
* `event birthday party /at 28/10/2019 1930`
* `e birthday party /at 28/10/2019 1930`

Adds an event with the name `birthday party` to be attended on `28/10/2019 1930` to your list.

Expected Outcome:

<img src="./READMEMedia/media/event.PNG" width="254" height="110" />

#### 2.5 Listing all tasks: `list` (alias `l`)
Shows all tasks in your list.

Format: `list` or `l`

Expected Outcome:

<img src="./READMEMedia/media/list.PNG" width="254" height="129" />

#### 2.6 Updating name of task in your list: `update` (alias `u`)
Updates name of specified (using `INDEX`) task in your list to `NEW_TASK_NAME`.

Format: `update INDEX NEW_TASK_NAME` or `u INDEX NEW_TASK_NAME`

Examples:
* `update 1 50 situps`
* `u 1 50 situps`

Updates the name of the task in position `1` to `50 situps`.

Expected Outcome:

<img src="./READMEMedia/media/update.PNG" width="254" height="112" />

#### 2.7 Retrieving tasks by name: `find` (alias `f`)
Finds tasks whose names contain any of the given `KEYWORD`. You may input multiple keywords.

Format: `find KEYWORD` or `f KEYWORD`

Examples:
* `find assignment`
* `f assignment`

Retrieves tasks containing the word `assignment` in their name.

Expected Outcome:

<img src="./READMEMedia/media/find.PNG" width="254" height="106" />

#### 2.8 Marking a task as completed: `complete` (alias `c`)
Marks specified (using `INDEX`) task on the list as completed.

Format: `complete INDEX` or `c INDEX`

Examples:
* `complete 1`
* `c 1`

Marks the task in position `1` as completed.

Expected Outcome:

<img src="./READMEMedia/media/complete.PNG" width="254" height="109" />

#### 2.9 Removing a task: `remove` (alias `r`)
Remove specified task from the list.

Format: `remove INDEX` or `r INDEX`

Examples:
* `remove 1`
* `r 1`

Removes the task in position `1` from the list.

Expected Outcome:

<img src="./READMEMedia/media/remove.PNG" width="254" height="113" />

#### 2.10 Undoing previous command: `undo`
Undo previous command and revert changes to the list of tasks.

Format: `undo`

Expected Outcome:

<img src="./READMEMedia/media/undo.PNG" width="254" height="113" />

#### 2.11 Display input history: `history`
Display all input you made into the application during the current session.

Format: `history`

Expected Outcome:

<img src="./READMEMedia/media/history.PNG" width="254" height="148" />

#### 2.12 Exiting the application: `exit`
Exits the program.

Format: `exit`

#### 2.13 Saving data
Task list data is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

### 3. FAQ
*Q*: How can I transfer my task list to a new computer?
*A*: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Trackr folder.

### 4. Feedback, Bug Reports

* If you have feedback or bug reports, please post in [shawnlsj97/duke issue tracker](https://github.com/shawnlsj97/duke/issues).
* We welcome pull requests too.

### 5. License
Trackr is [MIT-licensed](https://github.com/shawnlsj97/duke/blob/master/LICENSE).


### 6. Command Summary
* **Add**
* **Todo**: `todo TASK_NAME`
* **Deadline**: `deadline DEADLINE_NAME /by DD/MM/YYYY HHMM`
* **Event**: `event EVENT_NAME /at DD/MM/YYYY HHMM`
* **Update**: `update INDEX NEW_TASK_NAME`
* **List**: `list`
* **Find**: `find KEYWORD`
* **Complete**: `complete INDEX`
* **Remove**: `remove INDEX`
* **Undo**: `undo`
* **History**: `history`
* **Help**: `help`
* **Exit**: `exit`
Binary file added READMEMedia/media/app.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 READMEMedia/media/complete.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 READMEMedia/media/deadline.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 READMEMedia/media/event.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 READMEMedia/media/find.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 READMEMedia/media/history.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 READMEMedia/media/launch.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 READMEMedia/media/list.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 READMEMedia/media/remove.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 READMEMedia/media/todo.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 READMEMedia/media/undo.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 READMEMedia/media/update.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
66 changes: 66 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
plugins {
id 'java'
id 'application'
id 'checkstyle'
id 'org.openjfx.javafxplugin' version '0.0.7'
id 'com.github.johnrengelman.shadow' version '5.1.0'
}

group 'seedu.duke'
version '0.1.0'

repositories {
mavenCentral()
}

javafx {
version = "11.0.2"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}

shadowJar {
archiveBaseName = "trackr"
archiveVersion = "1.0"
archiveClassifier = null
archiveAppendix = null
}

application {
// Change this to your main class.
mainClassName = "Launcher"
}

run {
standardInput = System.in
}

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter: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'
implementation group: 'org.openjfx', name: 'javafx-media', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-media', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-media', version: javaFxVersion, classifier: 'linux'
implementation group: 'org.openjfx', name: 'javafx-web', version: javaFxVersion, classifier: 'win'
implementation group: 'org.openjfx', name: 'javafx-web', version: javaFxVersion, classifier: 'mac'
implementation group: 'org.openjfx', name: 'javafx-web', version: javaFxVersion, classifier: 'linux'
}

test {
useJUnitPlatform()
}

checkstyle {
toolVersion = '8.23'
}
Empty file added cd
Empty file.
Loading