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

[Guo Jingxue] iP #237

Open
wants to merge 35 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
3b19ba1
Add Gradle support
May 24, 2020
a75fcee
build.gradle: Update version to 8.29
Aug 29, 2020
44763c2
Add function to greet user and echo user input
Jan 21, 2021
8588ce3
Revert "Add function to greet user and echo user input"
jingxueguo Jan 21, 2021
56655db
Add function to greet user and echo user input
jingxueguo Jan 21, 2021
ed93930
Add functionality to store user input and display in a list when requ…
jingxueguo Jan 22, 2021
c25f3b8
Add functionality to mark task as done
jingxueguo Jan 22, 2021
495fbee
Add support for tracking three types of tasks:
jingxueguo Jan 22, 2021
ff0cc4c
Add input and output for automated text UI testing
jingxueguo Jan 22, 2021
bf603b1
Added error handling capability if the user input is invalid
jingxueguo Jan 22, 2021
20cc099
Add support for deleting tasks from the list.
jingxueguo Jan 22, 2021
c2bb717
- Add ability to save the tasks in the hard disk automatically whenev…
jingxueguo Jan 29, 2021
5fb34bd
- Add ability to recognise date as LocalDate instead of just string
jingxueguo Jan 29, 2021
e7d46e5
Resolve conflict between branch-Level-7 and branch-Level-8
jingxueguo Jan 29, 2021
22d7775
Resolve conflict between branch-Level-7 and branch-Level-8 2
jingxueguo Jan 29, 2021
21cb4ae
Refactor the code to push the design to more OOP approach
jingxueguo Feb 11, 2021
5426211
Debug
jingxueguo Feb 11, 2021
665108e
Consolidate file into duke package
jingxueguo Feb 11, 2021
c575129
Add JUnit Test
jingxueguo Feb 16, 2021
0b4293c
Add Java Doc
jingxueguo Feb 16, 2021
37d77b3
Tweak the code to comply with a coding standard
jingxueguo Feb 16, 2021
4f25391
Add functionality to find tasks according to user keyword
jingxueguo Feb 16, 2021
1530b74
Merge branch 'add-gradle-support' of https://github.com/jingxueguo/ip
jingxueguo Feb 16, 2021
c0ddad6
Add GUI for Duke
jingxueguo Feb 17, 2021
3a1d6c8
Add GUI for Duke using FXML
jingxueguo Feb 18, 2021
fb8d550
Use Assertions
jingxueguo Feb 21, 2021
47a0352
Improve code quality
jingxueguo Feb 21, 2021
e5a0136
Merge pull request #3 from jingxueguo/branch-A-CodeQuality
jingxueguo Feb 21, 2021
5c2fd38
Merge pull request #2 from jingxueguo/branch-A-Assertions
jingxueguo Feb 21, 2021
6443e8d
Add representative screenshot of duke
jingxueguo Feb 21, 2021
29f68cd
Add a user guide
jingxueguo Feb 21, 2021
c9fe54d
Add index for tasks
jingxueguo Feb 22, 2021
35eacaa
Add functionality to return the list of commands available if the use…
jingxueguo Feb 22, 2021
4580a56
Update User Guide
jingxueguo Feb 23, 2021
77e9c55
Change image extension from jpg to png
jingxueguo Feb 25, 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
60 changes: 60 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
plugins {
id 'java'
id 'application'
id 'checkstyle'
id 'com.github.johnrengelman.shadow' version '5.1.0'
}

repositories {
mavenCentral()
}

dependencies {
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'
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'
}

test {
useJUnitPlatform()

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

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

application {
mainClassName = "duke.Launcher"
}

shadowJar {
archiveBaseName = "duke"
archiveClassifier = null
}

checkstyle {
toolVersion = '8.29'
}

run{
standardInput = System.in
}
73 changes: 68 additions & 5 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,80 @@
# User Guide

## Features
This is a User Guide for the chatbox 'Duke!'.

### Feature 1
Description of feature.
## Features

### Load task list from the hard drive.

###### Task list is initialised from loading the data from the hard drive (if available) upon starting the programme, using pre-set file path.

### Add a task given by the user to a list and display upon requested.

###### Task type can be todos with no date/time associated, event within a specific timing and tasks with a deadline

### Mark a task as done

###### Task can be marked as done using the position of the task in the list displayed. Task is displayed after marked done for user reference

### Delete a task from the list

###### Task can be deleted using the position of the task in the list displayed. The deleted task is displayed after deletion for user reference

### Find tasks which match the keyword given

###### Given keyword from user, return all tasks with matching task description

### Store list on hard disk

###### Upon user input "bye", the updated list is stored on the hard disk using the pre-set file path.

## Usage

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

Example:
`todo return book`
Expected outcome:
A todo task with the description of 'return book' is added to the task list

### deadline

Example:
`deadline return book /by 2020-02-02`
Expected outcome:
A deadline task with the description of 'return book' and deadline of 2020-02-02 is added to the task list

### event

Example:
`event birthday party /at Sunday 4pm to 6pm`
Expected outcome:
An event task with the description of 'birthday party' and time of Sunday 4pm to 6pm is added to the task list

### delete

Example:
`delete 2`
Expected outcome:
The second task in the task list is deleted and the information of the task is displayed afterwards

### done

Example:
`done 2`
Expected outcome:
The second task in the task list is marked as done and the updated information of the task is displayed afterwards

### find

Example:
`find book`
Expected outcome:
All tasks containing the word book in their description are displayed on the screen

Describe action and its outcome.

Example of usage:
Example of usage:

`keyword (optional arguments)`

Expand Down
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
183 changes: 183 additions & 0 deletions gradlew
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
#!/usr/bin/env sh

#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null

APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn () {
echo "$*"
}

die () {
echo
echo "$*"
echo
exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi

# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`

# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option

if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi

# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`

# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"

exec "$JAVACMD" "$@"
Loading