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

[izruff] iP #626

Open
wants to merge 118 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
68c58c1
Add Gradle support
May 24, 2020
03523ec
Bump gradle and lib version
Eclipse-Dominator Aug 5, 2023
81a9c53
build.gradle: Prevent generating a second JAR file
aureliony Jul 16, 2024
edaa970
Rename main class
izruff Aug 21, 2024
2f4d559
Modify greeting message
izruff Aug 21, 2024
dd1abfc
Use code blocks for multi-line string
izruff Aug 21, 2024
5c2c821
Add exit message and modify greeting
izruff Aug 21, 2024
d83548d
Add echo feature
izruff Aug 21, 2024
bdecfd1
Create main loop for receiving user input
izruff Aug 21, 2024
729d3fd
Implement add task and list tasks
izruff Aug 21, 2024
5b35bb3
Add Task class
izruff Aug 21, 2024
e5cbbeb
Task.java: Add toString method
izruff Aug 21, 2024
857012c
Replace string-based tasks with Task instances
izruff Aug 21, 2024
c93d0cf
Add mark and unmark feature
izruff Aug 21, 2024
55e872b
Make Task abstract and improve code quality
izruff Aug 22, 2024
8a7b166
Add Todo, Deadline, and Event subclasses
izruff Aug 22, 2024
75cdc30
Add functionality to new task types
izruff Aug 24, 2024
7b2770c
Replace cat ASCII art
izruff Aug 24, 2024
d13673b
Add text UI testing
izruff Aug 24, 2024
b838af6
Add exception classes
izruff Aug 24, 2024
4fc5773
Add basic error handling
izruff Aug 25, 2024
972b076
Add delete task feature
izruff Aug 25, 2024
7b930d7
Update UI test to include delete
izruff Aug 27, 2024
2cfe70b
Update UI test to include examples of error handling
izruff Aug 27, 2024
40ac380
Add TaskList class
izruff Aug 31, 2024
833c3a6
Implement TaskList partially
izruff Aug 31, 2024
266b31a
Implement save to file with Storage class
izruff Aug 31, 2024
7cfde52
Add data folder to .gitignore
izruff Aug 31, 2024
67c4c4f
Implement Storage and save command on Mittens
izruff Aug 31, 2024
0351a2f
Implement Storage load on program start
izruff Sep 1, 2024
841b6b9
Merge branch 'branch-Level-7'
izruff Sep 1, 2024
5f638fc
Replace String date field on Deadline class with LocalDate
izruff Sep 4, 2024
f44fa76
Replace String date fields on Event class with LocalDate
izruff Sep 4, 2024
f601341
Merge branch 'branch-Level-8'
izruff Sep 4, 2024
790aea2
Add TextUi class
izruff Sep 5, 2024
d64de43
Add abstract Ui class to inherit TextUi
izruff Sep 5, 2024
100f96b
Add abstract Ui class to inherit TextUi
izruff Sep 5, 2024
6cecc3c
Add abstract Command class
izruff Sep 5, 2024
8d684da
Add StorageFileException class and handle errors in save and load met…
izruff Sep 5, 2024
0d99b06
Add InitializationException and handle possible errors
izruff Sep 5, 2024
696e9ba
Fix typo in showCommandCompletion
izruff Sep 5, 2024
5b91e9d
Refactor Mittens to use TaskList methods
izruff Sep 5, 2024
f843463
Rewrite Ui class and implement methods in TextUi
izruff Sep 5, 2024
9d36f62
Add command subclass for adding a new task
izruff Sep 5, 2024
f90170a
Partially implement Command and refactor Mittens
izruff Sep 5, 2024
a66297a
Make small changes for style consistency
izruff Sep 5, 2024
5454335
Overload showRegularMessage method for convenience
izruff Sep 5, 2024
42cb70c
Add command subclass for deleting a task
izruff Sep 5, 2024
18f66e6
Modify Command and its subclasses
izruff Sep 5, 2024
c66182d
Add command subclass for listing all tasks
izruff Sep 5, 2024
be8d194
Overload showRegularMessage with varargs
izruff Sep 5, 2024
39164a7
Add command subclasses for marking and unmarking a task
izruff Sep 5, 2024
9e8333d
Add command subclass for exiting the program
izruff Sep 5, 2024
f097245
Replace class methods in Mittens with use of Command instances
izruff Sep 5, 2024
22079d3
Add CommandParser class
izruff Sep 5, 2024
f6fb1bc
Implement CommandParser in Mittens
izruff Sep 5, 2024
8be896b
Refactor Mittens to utilize all other classes
izruff Sep 5, 2024
9c6640e
Merge branch 'branch-A-MoreOOP'
izruff Sep 5, 2024
0fe3fdc
Move all files to the mittens package
izruff Sep 5, 2024
eea6246
Move UI-related files to mittens.ui
izruff Sep 5, 2024
611e063
Add getter methods to Task and its subclasses
izruff Sep 5, 2024
5e7b078
Use getter methods instead of direct access to fields
izruff Sep 5, 2024
2fc2af5
Move task-related classes to mittens.task
izruff Sep 5, 2024
331666e
Move storage-related classes to mittens.storage
izruff Sep 5, 2024
3e55b1a
Move commands to mittens.commands
izruff Sep 5, 2024
3f45c68
Move parser-related classes to mittens.parser
izruff Sep 5, 2024
d272df3
Merge branch 'branch-A-Packages'
izruff Sep 5, 2024
a470a49
Merge branch 'add-gradle-support'
izruff Sep 5, 2024
0339cd4
Update name to Mittens
izruff Sep 6, 2024
507f25e
Add checkstyle plugin to Gradle
izruff Sep 6, 2024
10d0fe9
Write tests for CommandParser
izruff Sep 8, 2024
2da1cfd
Write tests for Storage
izruff Sep 8, 2024
ae4f677
Merge branch 'branch-A-JUnit'
izruff Sep 8, 2024
48add82
fix: Index off by 1 on delete, mark, and unmark commands
izruff Sep 11, 2024
23b66b6
fix: Remove extra newline from certain messages
izruff Sep 11, 2024
331651c
Add JavaDoc comments to Command and its subclasses
izruff Sep 20, 2024
c47210d
Add JavaDoc comments to Mittens class
izruff Sep 20, 2024
d88c6c2
Add JavaDoc comments to CommandParser and related classes
izruff Sep 20, 2024
fa54976
Add JavaDoc comments to exception classes
izruff Sep 20, 2024
1a98c3f
Add JavaDoc comments to Storage and related classes
izruff Sep 20, 2024
dbe4fba
Add JavaDoc comments to Task and TaskList
izruff Sep 20, 2024
15c92b5
Add JavaDoc comments to Ui and its subclasses
izruff Sep 20, 2024
88ff04d
Enforce explicit import statements
izruff Sep 20, 2024
240fd19
Auto-format code with Intellij code style
izruff Sep 20, 2024
2d252ab
Add find tasks by keyword functionality to TaskList
izruff Sep 20, 2024
5cd7674
Add FindCommand for finding tasks by given keyword
izruff Sep 20, 2024
95d14a3
Restore deleted part of message
izruff Sep 20, 2024
7e209a9
Fix typo
izruff Sep 20, 2024
a93b874
Update CommandParser to detect find commands
izruff Sep 20, 2024
cd0ffc2
Merge branch 'branch-A-JavaDoc'
izruff Sep 20, 2024
083c7c6
Merge branch 'branch-A-CodingStandard'
izruff Sep 20, 2024
8a9c0ef
Merge branch 'branch-Level-9'
izruff Sep 20, 2024
54339a5
Fix missing import statement
izruff Sep 20, 2024
2003c7d
Mittens.java: Refactor code and add method to load task list after in…
izruff Sep 22, 2024
9ce94a4
Update dependencies
izruff Sep 22, 2024
894d8b9
Implement JavaFxUi and refactor Ui class
izruff Sep 22, 2024
e604d36
Implement JavaFX GUI application
izruff Sep 22, 2024
9b28d4c
Remove redundant object
izruff Sep 22, 2024
6f25f39
Fix incorrect error message format
izruff Sep 22, 2024
340e6fe
Use PipedInputStream for user input processing
izruff Sep 23, 2024
f8596c1
Merge branch 'branch-Level-10'
izruff Sep 23, 2024
4dc21dc
Storage.java: Assert valid tasks types on save
izruff Sep 23, 2024
a931cdd
Mittens.java: Assert loaded task list not null
izruff Sep 23, 2024
94db3cf
Add RawCommandElements to represent command string
izruff Sep 23, 2024
0917c2b
Implement RawCommandElements in commands and parser
izruff Sep 23, 2024
07c74b9
Merge pull request #2 from izruff/branch-A-Assertions
izruff Sep 23, 2024
b20c07b
Merge branch 'master' into branch-A-CodeQuality
izruff Sep 23, 2024
5e8c468
Merge pull request #3 from izruff/branch-A-CodeQuality
izruff Sep 23, 2024
80f59aa
Fix unhandled out-of-bounds error
izruff Sep 23, 2024
53c9f07
Remove redundant constructors
izruff Sep 23, 2024
d12070e
Remove unused imports
izruff Sep 23, 2024
197289d
Remove unused method
izruff Sep 23, 2024
c3d4a54
Update Mittens error message
izruff Sep 23, 2024
e13dc97
Modify image size to fit more messages
izruff Sep 23, 2024
c15f4b5
Add UI screenshot for docs
izruff Sep 23, 2024
2bab46e
docs/README.md: Add product website
izruff Sep 23, 2024
ef88c69
Update product website
izruff Sep 23, 2024
32e0dbc
Fix Ui.png not showing on website
izruff Sep 24, 2024
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ bin/

/text-ui-test/ACTUAL.TXT
text-ui-test/EXPECTED-UNIX.TXT

/data/
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 '7.1.2'
}

repositories {
mavenCentral()
}

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

String javaFxVersion = '17.0.7'

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 {
mainClass.set("mittens.Mittens")
}

checkstyle {
toolVersion = '10.2'
}

shadowJar {
archiveBaseName = "mittens"
archiveClassifier = null
}

run{
standardInput = System.in
}
77 changes: 61 additions & 16 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,75 @@
# Duke User Guide
# Mittens: User Guide

// Update the title above to match the actual product name
![Screenshot of the UI](/Ui.png)

// Product screenshot goes here
_Mittens_ is a desktop app for managing tasks, optimized for use via a Command Line Interface (CLI). Get through your day with the cute cat _Mittens_ and doing tasks will feel like a breeze!

// Product intro goes here
## Quick start

## Adding deadlines
1. Ensure you have Java `17` installed in your computer.
2. Download the latest `mittens.jar` from [here](izruff.github.io/ip/releases).
3. Open your Mittens app for the first time by running `java -jar mittens.jar` on your command line. A folder named `data` will be created, which Mittens will use to save your task list.
4. Try typing some commands into the input box and hit Enter or the Send button to see Mittens in action! Here are some commands to get you started:
> - `list`: lists all stored tasks
> - `todo Read book`: adds a todo task named "Read book"
> - `deadline Submit work \by 2024-09-30`: adds a deadline task named "Submit work" with a deadline of September 30th
> - `mark 1`: marks the first task in the list as done
> - `bye`: exits the app

// Describe the action and its outcome.
## Adding tasks: `todo`, `deadline`, `event`

// Give examples of usage
There are three types of tasks you can add:

Example: `keyword (optional arguments)`
- `todo`: A simple task with a description, no dates or times.
- `deadline`: A task with a description and the deadline date.
- `event`: A task with a description and a date range of when the event is happening.

// A description of the expected outcome goes here
Format:

```
expected output
```
- `todo <description>`
- `deadline <description> \by <date>`
- `event <description> \from <start-date> \to <end-date>`

## Feature ABC
Example:

// Feature details
- `todo Read book`
- `deadline Submit work \by 2024-09-30`
- `event Meeting \from 2024-09-30 \to 2024-10-01`

## List tasks: `list`

## Feature XYZ
You can list all tasks you have stored in Mittens by typing `list`.

// Feature details
Each task is displayed in the following format:
> `[<task-type>][<done-status>] <description>`

For example, a done deadline task will be displayed as:
> `[D][X] Submit work (due Sep 30 2024)`

Format: `list`

## Mark tasks as done or not done: `mark`, `unmark`

You can mark a certain task as done or not done using `mark` and `unmark`.

Format:
- `mark <task-number>`
- `unmark <task-number>`

## Delete tasks: `delete`

You can delete a certain task using `delete`.

Format: `delete <task-number>`

## Find tasks: `find`

You can find tasks that contain a certain keyword using `find`.

Format: `find <keyword>`

## Exit the app: `bye`

You can exit the app by typing `bye`. Or, you can just exit through the window's close button.

Format: `bye`
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.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading