diff --git a/build.gradle b/build.gradle
index b7f9789849f..c061806df41 100644
--- a/build.gradle
+++ b/build.gradle
@@ -66,7 +66,7 @@ dependencies {
}
shadowJar {
- archiveFileName = 'tp_new.jar'
+ archiveFileName = '[CS2103T-W08-4][DevPlanPro].jar'
}
run {
diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 5046be87122..813c3f503b3 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -11,14 +11,15 @@ Welcome to the user guide for our CLI-based project management application! This
+- [Tips on using this User Guide](#tips-on-using-this-user-guide)
- [Quick start](#quick-start)
- [Features](#features)
- [Adding a project: `add project`](#adding-a-project-add-project)
- [Deleting a project : `delete project`](#deleting-a-project--delete-project)
+ - [Show Project : `show project`](#show-project--show-project)
- [Add task : `add task`](#add-task--add-task)
- [Delete task : `delete task`](#delete-task--delete-task)
- - [Show Project : `show project`](#show-project--show-project)
- - [Set deadline of project : `set deadline`](#set-deadline-to-project--set-deadline)
+ - [Set deadline to project : `set deadline`](#set-deadline-to-project--set-deadline)
- [Set deadline to task : `set deadline`](#set-deadline-to-task--set-deadline)
- [Set Project Status : `set status`](#set-project-status--set-status)
- [Set Task Status : `set status`](#set-task-status--set-status)
@@ -42,30 +43,46 @@ Welcome to the user guide for our CLI-based project management application! This
+## Tips on using this User Guide
+
+- Follow the [Quick start](#quick-start) to get DevPlan Pro set up on your device.
+- Check out the detailed command list from the [Features](#features) section.
+- For get to a more specific command or section quickly, click the corresponding section in the [Table of Contents](#table-of-contents)
+- If you are finding unexpected behaviors in the UI or the app itself, try checking out the [FAQ](#faq) or the [Known issues](#known-issues) section.
+
## Quick start
1. Ensure you have Java `11` or above installed in your Computer.
-1. Download the latest `tp_new.jar` from [here](https://github.com/AY2324S2-CS2103T-W08-4/tp/releases/tag/v1.2).
+2. Download the latest `[CS2103T-W08-4][DevPlanPro].jar` from [here](https://github.com/AY2324S2-CS2103T-W08-4/tp/releases/tag/v1.4).
-1. Copy the file to the folder you want to use as the _home folder_ for your app.
+3. Copy the file to the folder you want to use as the _home folder_ for your app.
-1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar tp_new.jar` command to run the application.
+4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar [CS2103T-W08-4][DevPlanPro].jar` command to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
![Ui](images/Ui.png)
+ Some notes about the UI:
+
+ - On the top left is the menu bar. There are 2 buttons: File and Help. File can be used as an alternative way to exit the app, and Help is used to open up the help window.
+ - Below the menu bar is the command box. This is where you will be typing the commands to use the app. See 5. for more details.
+ - Below the command box is the result box. In the [Features](#features) section the "expected result" of each commands will be stated. Those results are expected to be displayed here in this result box.
+ - Below the result box is the project list. This is where your projects will appear after you've added them.
+ - Now on the right side is the details of the project. To choose which project you would like to see the details, use the [show project](#show-project--show-project) command.
+
+ ⚠️ If you are finding unexpected behaviors in the UI or the app itself, try checking out the [FAQ](#faq) or the [Known issues](#known-issues) sections of this User Guide.
-1. Type the command in the command box and press Enter to execute it.
+5. Type the command in the command box and press Enter to execute it.
Some example commands you can try:
- `add project Duke` : Adds a project named `Duke` to the project list.
- `delete project Duke` : Deletes the Duke project from the project list.
- - `clear` : Deletes all projects and tasks.
+ - `clear project` : Deletes all projects and tasks.
- - `exit` : Exits the app.
+ - `exit program` : Exits the app.
-1. Refer to the [Features](#features) below for details of each command.
+6. Refer to the [Features](#features) section below for details of each command.
---
@@ -75,25 +92,27 @@ Welcome to the user guide for our CLI-based project management application! This
**:information_source: Notes about the commands:**
-- Words in `` are the parameters to be supplied by the user.
+- Words in `` are the parameters to be supplied by you, the user.
e.g. in `add project `, `` is a parameter which can be used as `add project CS2103`.
- Extraneous parameters for commands that do not take in parameters (namely `list project`) will be ignored.
e.g. if the command specifies `list project 123`, it will be interpreted as `list project`.
- If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
-
-- 🚨 Some commands that interact with the UI are laggy in V1.3. If you use a command and doesn't notice a change in the UI then try to **click on the project cards and tasks** and it should update to it's current data.
### Adding a project: `add project`
+The added projects will appear on the project list on the left.
+
**Format:** `add project `
⚠️ **Warning:** Project name needs to be unique.
⚠️ **Warning:** Project name is alphanumeric: slashes, commas, or any other punctuation mark aren't accepted.
+⚠️ **Warning:** A long project name can result in incomplete display of the project name, status, and category. To see more text, you can resize the window horizontally or maximize the window.
+
**Examples:**
- `add project CS2103T Duke Chatbot Project`
@@ -102,7 +121,12 @@ Welcome to the user guide for our CLI-based project management application! This
**Expected output:**
- Success: ` has been added to the project list.`
-- Failure: `Project already exists.`
+- Failure:
+ - `Project already exists.`
+ - `Project name should be alphanumerical and not empty.`
+
+![AddProjectCommandResult](images/AddProjectCommandResult.png)
+Description: An example of the result after executing the "add project" command.
### Deleting a project : `delete project`
@@ -117,7 +141,31 @@ Welcome to the user guide for our CLI-based project management application! This
**Expected output:**
- Success: ` has been deleted from the project list.`
-- Failure: `Project not found: Please make sure the project exists.`
+- Failure:
+ - `Project not found: Please make sure the project exists.`
+ - `Project name should be alphanumerical and not empty.`
+
+### Show Project : `show project`
+
+Sets the current showing project as the specified project.
+
+⚠️ **Warning:** The specified project must be in the current project list. Try using `list project` before using this command if you couldn't see your project in the current project list.
+
+**Format:** `show project `
+
+**Examples:**
+
+- `show project CS2101 Presentation`
+
+**Expected output:**
+
+- Success: The UI now shows the project’s information.
+- Failure:
+ - `Project not found: Please make sure the project exists.`
+ - `Project name should be alphanumerical and not empty.`
+
+![Show Project Command Result](images/Ui.png)
+Description: An example of the result after executing the "show project" command, displaying project information in the UI.
### Add task : `add task`
@@ -127,10 +175,12 @@ Adds the specified task to a project.
⚠️ **Warning:** The specified project must exist.
-⚠️ **Warning:** The task name has to be unique within the project.
+⚠️ **Warning:** Task name has to be unique within the project.
⚠️ **Warning:** Task name is alphanumeric: slashes, commas, or any other punctuation mark aren't accepted.
+⚠️ **Warning:** Task name should be within 30 characters long. A longer name can result in incomplete display (see [known-issues](#known-issues)).
+
**Examples:**
- `add task Prepare slides for presentation /to CS2101 Presentation`
@@ -141,6 +191,10 @@ Adds the specified task to a project.
- Failure:
- `Project not found: Please make sure the project exists.`
- `Task already exists in .`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! add task TASK_NAME /to PROJECT_NAME`
+
+![AddTaskCommandResult](images/AddTaskCommandResult.png)
### Delete task : `delete task`
@@ -162,26 +216,8 @@ Deletes the specified task from a project.
- Failure:
- `Project not found: Please make sure the project exists.`
- `Task not found: Please make sure the task exists.`
-
-### Show Project : `show project`
-
-Sets the current showing project as the specified project.
-
-⚠️ **Warning:** The specified project must be in the current project list. Try using `list project` before using this command if you couldn't see your project in the current project list.
-
-**Format:** `show project `
-
-**Examples:**
-
-- `show project CS2101 Presentation`
-
-**Expected output:**
-
-- Success: The UI now shows the project’s information.
-- Failure: `Project not found: Please make sure the project exists.`
-
-![Show Project Command Result](images/Ui.png)
-Description: An example of the result after executing the "show project" command, displaying project information in the UI.
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! delete task TASK_NAME /in PROJECT_NAME`
### Set deadline to project : `set deadline`
@@ -200,8 +236,11 @@ Description: An example of the result after executing the "show project" command
**Expected output:**
- Success: `The project has been set with the following deadline .`
-- Failure: `The deadline has been entered in the wrong format. An example of the correct format is Mar 15 2024`
-- Failure: `Project not found: Please make sure the project exists.`
+- Failure:
+ - `The deadline has been entered in the wrong format. An example of the correct format is Mar 15 2024.`
+ - `Project not found: Please make sure the project exists.`
+ - `Please enter valid date.`
+ - `Names should be alphanumerical and not empty.`
### Set deadline to task : `set deadline`
@@ -222,17 +261,23 @@ Description: An example of the result after executing the "show project" command
**Expected output:**
- Success: `Deadline has been assigned to :.`
-- Failure: `The deadline has been entered in the wrong format. An example of the correct format is Mar 15 2024`
-- Failure: `Project not found: Please make sure the project exists.`
-- Failure: `Task not found: Please make sure the task exists.`
+- Failure:
+ - `The deadline has been entered in the wrong format. An example of the correct format is Mar 15 2024`
+ - `Project not found: Please make sure the project exists.`
+ - `Task not found: Please make sure the task exists.`
+ - `Please enter valid date.`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! set deadline DEADLINE /to TASK_NAME /in PROJECT_NAME`
### Set Project Status : `set status`
+Projects set as `complete` will have a green `complete` status text beside its name. New projects are initially set as `incomplete`.
+
**Format:** `set status /of `
⚠️ **Warning:** The specified project must exist.
-⚠️ **Warning:** The status should only be `complete` or `incomplete`. Typing something else as a status might not prompt an error, but the project might be considered as `incomplete`.
+⚠️ **Warning:** The status can only be `complete` or `incomplete`.
**Examples:**
@@ -243,20 +288,26 @@ Description: An example of the result after executing the "show project" command
- Success: `Project is set as .`
- Failure:
- `Project not found: Please make sure the project exists.`
+ - `Please enter a valid status: complete/incomplete.`
+ - `Names should be alphanumerical and not empty.`
+
+![SetProjectStatusCommandResult](images/SetProjectStatusCommandResult.png)
### Set Task Status : `set status`
+Tasks set as `complete` will me moved to the `Done` column on the right side of the ui. New tasks are initially set as `incomplete`.
+
⚠️ **Warning:** The specified project must exist.
⚠️ **Warning:** The specified task must exist.
-⚠️ **Warning:** The status can only be `complete` or `incomplete`. Typing something else as a status might not prompt an error, but the task might be considered as `incomplete`.
+⚠️ **Warning:** The status can only be `complete` or `incomplete`.
**Format:** `set status /of /in `
**Examples:**
-- `set status complete /of unit test /in CS2103T Duke Chatbot Project`
+- `set status complete /of Prepare slides for presentation /in CS2101 Presentation`
**Expected output:**
@@ -264,6 +315,11 @@ Description: An example of the result after executing the "show project" command
- Failure:
- `Task not found: Please make sure the task exists.`
- `Project not found: Please make sure the project exists.`
+ - `Please enter a valid status: complete/incomplete.`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! set status [complete/incomplete] /of TASK_NAME /in PROJECT_NAME`
+
+![SetTaskStatusCommandResult](images/SetTaskStatusCommandResult.png)
### Assign team to project: `assign team`
@@ -277,10 +333,12 @@ Description: An example of the result after executing the "show project" command
⚠️ **Warning:** Duplicate person names are allowed, but not recommended. It can cause confusion for both you and the app.
-⚠️ **Warning:** Person name is alphanumeric: slashes, commas, or any other punctuation mark aren't accepted.
+⚠️ **Warning:** Each person name is alphanumeric: slashes, commas, or any other punctuation mark aren't accepted.
🔔 **Note**: The part of the format in `[ ]` is optional
+⚠️ **Warning:** Each person name should be within 25 characters long. A longer name can result in incomplete display (see [known-issues](#known-issues)).
+
**Examples:**
- `assign team Joe, Cody /to CS2103_TP`
@@ -288,7 +346,11 @@ Description: An example of the result after executing the "show project" command
**Expected output:**
- Success: `The team [, , , ...] has been added to `
-- Failure: `Project not found: Please make sure the project exists.`
+- Failure:
+ - `Project not found: Please make sure the project exists.`
+ - `Names should be alphanumerical and not empty.`
+ - `Please enter the project and team fields.`
+ - `Invalid command format! assign team PERSON_NAME, PERSON_NAME, PERSON_NAME /to PROJECT_NAME`
### Add member to project : `add person`
@@ -300,6 +362,8 @@ Description: An example of the result after executing the "show project" command
⚠️ **Warning:** Person name is alphanumeric: slashes, commas, or any other punctuation mark aren't accepted.
+⚠️ **Warning:** Person name should be within 25 characters long. A longer name can result in incomplete display (see [known-issues](#known-issues)).
+
**Examples:**
- `add person Joe /to CS2103_TP`
@@ -307,7 +371,11 @@ Description: An example of the result after executing the "show project" command
**Expected output:**
- Success: `The person has been assigned to the following project `
-- Failure: `Project not found: Please make sure the project exists.`
+- Failure:
+ - `Project not found: Please make sure the project exists.`
+ - `Please enter the member and project fields.`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! add person /to PROJECT_NAME`
### Remove member from project : `delete person`
@@ -329,6 +397,8 @@ Description: An example of the result after executing the "show project" command
- Failure:
- `Project not found: Please make sure the project exists.`
- `Member not found: Please make sure the person exists in project .`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! delete person PERSON_NAME /in PROJECT_NAME`
### Assign member to task : `assign person`
@@ -353,6 +423,9 @@ Description: An example of the result after executing the "show project" command
- `Project not found: Please make sure the project exists.`
- `Task not found: Please make sure the task exists`
- `Member not found: Please make sure the person exists.`
+ - `Please enter the task, project and member fields.`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! assign person PERSON_NAME /to TASK_NAME/ in PROJECT_NAME`
### Rename a project: `set name`
@@ -367,7 +440,10 @@ Description: An example of the result after executing the "show project" command
**Expected output:**
- Success: `Project has been renamed to `
-- Failure: `Project not found: Please make sure the project exists.`
+- Failure:
+ - `Project not found: Please make sure the project exists.`
+ - `Project already exists: Please set the name of the project to be unique.`
+ - `Names should be alphanumerical and not empty.`
### Rename a task: `set name`
@@ -387,23 +463,36 @@ Description: An example of the result after executing the "show project" command
- Failure:
- `Project not found: Please make sure the project exists.`
- `Task not found: Please make sure the task exists in project `
+ - `Task already exists. Please set the name of the task in project %2$s to be unique.`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! set name NEW_TASK_NAME /of TARGET_TASK_NAME /in PROJECT_NAME`
### Set project category: `set category`
-Similar to adding a tag to the project
+Similar to adding a tag to the project. The category will be shown as the orange text beside the project's name (it comes after the project status).
**Format:** `set category /to `
⚠️ **Warning:** The specified project must exist.
+⚠️ **Warning:** Each project is limited to one category. Setting a new category overrides the old one.
+
+⚠️ **Warning:** A long category can result in incomplete display of the project name, status, and category. To see more text, you can resize the window horizontally or maximize the window.
+
**Examples:**
-- `set category urgent /to 2103`
+- `set category urgent /to 2103 TP`
**Expected output:**
- Success: `The project category is set as .`
-- Failure: `Project not found: Please make sure the project exists.`
+- Failure:
+ - `Project not found: Please make sure the project exists.`
+ - `Names should be alphanumerical and not empty.`
+ - `Please enter the category.`
+ - `Invalid command format! set category CATEGORY /to PROJECT_NAME`
+
+![SetProjectCategoryCommandResult](images/SetProjectCategoryCommandResult.png)
### Filter projects by category: `filter category`
@@ -415,7 +504,9 @@ Similar to adding a tag to the project
**Expected output:**
-The project list will only show projects with the specified category.
+The project list will list the projects with the specified category.
+
+![FilterCategoryCommandResult](images/FilterCategoryCommandResult.png)
### Add comments to project: `add comment`
@@ -425,6 +516,8 @@ The project list will only show projects with the specified category.
⚠️ **Warning:** The specified member must exist in the project.
+⚠️ **Warning:** The comments will not be deleted even if the person who made the comment is removed from the project.
+
**Examples:**
- `add comment delete task can only be started after add task is implemented /from Mary /to 2103`
@@ -435,6 +528,9 @@ The project list will only show projects with the specified category.
- Failure:
- `Project not found: Please make sure the project exists.`
- `Team member not found: Please make sure the person exists.`
+ - `Please enter a comment.`
+ - `Names should be alphanumerical and not empty.`
+ - `Invalid command format! add comment /from PERSON_NAME /to PROJECT_NAME`
### Locating projects by name: `find project`
@@ -448,7 +544,7 @@ Finds projects whose names contain any of the given keywords. The updated projec
**Expected output:**
-- Returns projects containing the specified keyword(s).
+- The project list will list the projects containing the specified keyword(s).
### Listing all projects: `list project`
@@ -468,6 +564,8 @@ Opens a help window containing the url to this user guide.
**Format:** `show help`
+![ShowHelpCommandResult](images/ShowHelpCommandResult.png)
+
### Exit DevPlan Pro: `exit program`
**Format:** `exit program`
@@ -485,7 +583,7 @@ Opens a help window containing the url to this user guide.
1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.
-2. **When using v1.3 features**, sometimes the UI doesn't update once the commands are executed. The remedy is to click on the project cards and task cards to update the UI so that it shows the latest data.
+2. **When viewing tasks in the UI**, if the name of the task is longer than 30 characters, the UI will not be able to display the full name of the task. A similar limit of 25 characters is applied to the name of the member set to the task.
---
@@ -498,7 +596,7 @@ Opens a help window containing the url to this user guide.
| **Add task** | `add task /to ` Example: `add task Prepare slides for presentation /to CS2101 Presentation` |
| **Delete task** | `delete task /in ` Example: `delete task Prepare slides for presentation /in CS2101 Presentation` |
| **Show Project** | `show project ` Example: `show project CS2101 Presentation` |
-| **Set deadline of project** | `set deadline /to ` Example: `set deadline Feb 25 2024 /to CS2103_TP` |
+| **Set deadline to project** | `set deadline /to ` Example: `set deadline Feb 25 2024 /to CS2103_TP` |
| **Set deadline to task** | `set deadline /to /in ` Example: `Set deadline Feb 25 2024 /to submit feature list /in CS2103_TP` |
| **Set Project Status** | `set status /of ` Example: `set status complete /of CS2103T Duke Chatbot Project` |
| **Set Task Status** | `set status /of /in ` Example: `set status complete /of unit test /in CS2103T Duke Chatbot Project` |
diff --git a/docs/images/AddProjectCommandResult.png b/docs/images/AddProjectCommandResult.png
new file mode 100644
index 00000000000..af945b9ae47
Binary files /dev/null and b/docs/images/AddProjectCommandResult.png differ
diff --git a/docs/images/AddTaskCommandResult.png b/docs/images/AddTaskCommandResult.png
new file mode 100644
index 00000000000..9770ced3dcc
Binary files /dev/null and b/docs/images/AddTaskCommandResult.png differ
diff --git a/docs/images/FilterCategoryCommandResult.png b/docs/images/FilterCategoryCommandResult.png
new file mode 100644
index 00000000000..770fb58f629
Binary files /dev/null and b/docs/images/FilterCategoryCommandResult.png differ
diff --git a/docs/images/SetProjectCategoryCommandResult.png b/docs/images/SetProjectCategoryCommandResult.png
new file mode 100644
index 00000000000..605d0bcd05d
Binary files /dev/null and b/docs/images/SetProjectCategoryCommandResult.png differ
diff --git a/docs/images/SetProjectStatusCommandResult.png b/docs/images/SetProjectStatusCommandResult.png
new file mode 100644
index 00000000000..7a4712dc993
Binary files /dev/null and b/docs/images/SetProjectStatusCommandResult.png differ
diff --git a/docs/images/SetTaskStatusCommandResult.png b/docs/images/SetTaskStatusCommandResult.png
new file mode 100644
index 00000000000..333f0298bb3
Binary files /dev/null and b/docs/images/SetTaskStatusCommandResult.png differ
diff --git a/docs/images/ShowHelpCommandResult.png b/docs/images/ShowHelpCommandResult.png
new file mode 100644
index 00000000000..800600c836d
Binary files /dev/null and b/docs/images/ShowHelpCommandResult.png differ
diff --git a/docs/images/Ui.png b/docs/images/Ui.png
index ea4e499d443..ce250d11475 100644
Binary files a/docs/images/Ui.png and b/docs/images/Ui.png differ
diff --git a/src/main/java/seedu/address/logic/commands/AssignPersonCommand.java b/src/main/java/seedu/address/logic/commands/AssignPersonCommand.java
index 3d27819df09..89ba652c89f 100644
--- a/src/main/java/seedu/address/logic/commands/AssignPersonCommand.java
+++ b/src/main/java/seedu/address/logic/commands/AssignPersonCommand.java
@@ -18,9 +18,9 @@ public class AssignPersonCommand extends Command {
public static final String COMMAND_WORD = "assign person";
- public static final String MESSAGE_USAGE = COMMAND_WORD + "PERSON_NAME"
- + "/to TASK_NAME"
- + "/in PROJECT_NAME";
+ public static final String MESSAGE_USAGE = COMMAND_WORD + " PERSON_NAME"
+ + " /to TASK_NAME"
+ + " /in PROJECT_NAME";
public static final String MESSAGE_PROJECT_NOT_FOUND = "Project %1$s not found: "
+ "Please make sure the project exists.";
diff --git a/src/main/java/seedu/address/logic/commands/AssignTeamCommand.java b/src/main/java/seedu/address/logic/commands/AssignTeamCommand.java
index 1d5fed42b33..744e4963e4b 100644
--- a/src/main/java/seedu/address/logic/commands/AssignTeamCommand.java
+++ b/src/main/java/seedu/address/logic/commands/AssignTeamCommand.java
@@ -20,8 +20,8 @@ public class AssignTeamCommand extends Command {
public static final String COMMAND_WORD = "assign team";
- public static final String MESSAGE_USAGE = COMMAND_WORD + "PERSON_NAME, PERSON_NAME, PERSON_NAME"
- + "/to PROJECT_NAME";
+ public static final String MESSAGE_USAGE = COMMAND_WORD + " PERSON_NAME, PERSON_NAME, PERSON_NAME"
+ + " /to PROJECT_NAME";
public static final String MESSAGE_PROJECT_NOT_FOUND = "Project %1$s not found: "
+ "Please make sure the project exists.";
diff --git a/src/main/java/seedu/address/logic/commands/EditTaskNameCommand.java b/src/main/java/seedu/address/logic/commands/EditTaskNameCommand.java
index b7de447d6d4..957b9718de7 100644
--- a/src/main/java/seedu/address/logic/commands/EditTaskNameCommand.java
+++ b/src/main/java/seedu/address/logic/commands/EditTaskNameCommand.java
@@ -18,8 +18,8 @@
*/
public class EditTaskNameCommand extends RenameCommand {
public static final String MESSAGE_USAGE = RenameCommand.COMMAND_WORD
- + "NEW_TASK_NAME /of TARGET_TASK_NAME"
- + "/in PROJECT_NAME";
+ + " NEW_TASK_NAME /of TARGET_TASK_NAME"
+ + " /in PROJECT_NAME";
public static final String MESSAGE_SUCCESS = "Task %1$s of project %2$s has been renamed to %3$s";
diff --git a/src/main/java/seedu/address/logic/commands/SetDeadlineProjectCommand.java b/src/main/java/seedu/address/logic/commands/SetDeadlineProjectCommand.java
index 674cb818104..f618f0a6915 100644
--- a/src/main/java/seedu/address/logic/commands/SetDeadlineProjectCommand.java
+++ b/src/main/java/seedu/address/logic/commands/SetDeadlineProjectCommand.java
@@ -25,7 +25,7 @@ public class SetDeadlineProjectCommand extends SetDeadlineCommand {
public static final String MESSAGE_WRONG_FORMAT_DEADLINE = "The deadline %1s has been entered in the wrong format. "
- + "An example of the correct format is Mar 15 2024";
+ + "An example of the correct format is Mar 15 2024.";
private final String deadline;
private final Project project;
diff --git a/src/main/java/seedu/address/logic/commands/SetProjectStatusCommand.java b/src/main/java/seedu/address/logic/commands/SetProjectStatusCommand.java
index 26bf98fc7ac..c8a74ba8eef 100644
--- a/src/main/java/seedu/address/logic/commands/SetProjectStatusCommand.java
+++ b/src/main/java/seedu/address/logic/commands/SetProjectStatusCommand.java
@@ -56,9 +56,8 @@ public CommandResult execute(Model model) throws CommandException {
} else if (isIncompleted()) {
realProject.setIncomplete();
resultString = String.format(MESSAGE_SUCCESS, Messages.format(statusProject), "incomplete");
- } else {
- throw new CommandException(String.format(MESSAGE_WRONG_FORMAT_STATUS));
}
+
model.setProject(dupProject, realProject);
model.updateFilteredProjectList(PREDICATE_SHOW_ALL_PROJECTS);
diff --git a/src/main/java/seedu/address/logic/commands/SetStatusCommand.java b/src/main/java/seedu/address/logic/commands/SetStatusCommand.java
index 2532471e5f1..33a23792cd1 100644
--- a/src/main/java/seedu/address/logic/commands/SetStatusCommand.java
+++ b/src/main/java/seedu/address/logic/commands/SetStatusCommand.java
@@ -11,8 +11,6 @@ public abstract class SetStatusCommand extends Command {
public static final String COMMAND_WORD = "set status";
- public static final String MESSAGE_WRONG_FORMAT_STATUS = "The status has been entered in the wrong format.";
-
private final String status;
/**
diff --git a/src/main/java/seedu/address/logic/commands/SetTaskStatusCommand.java b/src/main/java/seedu/address/logic/commands/SetTaskStatusCommand.java
index 33789eed789..445429caf93 100644
--- a/src/main/java/seedu/address/logic/commands/SetTaskStatusCommand.java
+++ b/src/main/java/seedu/address/logic/commands/SetTaskStatusCommand.java
@@ -61,8 +61,6 @@ public CommandResult execute(Model model) throws CommandException {
} else if (isIncompleted()) {
statusTask.setIncomplete();
resultString = String.format(MESSAGE_SUCCESS, Messages.format(statusTask), "incomplete");
- } else {
- throw new CommandException(String.format(MESSAGE_WRONG_FORMAT_STATUS));
}
model.updateCurrentProject(
new NameEqualsPredicate(
diff --git a/src/main/java/seedu/address/logic/parser/AddCommentCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommentCommandParser.java
index b68de0b37a8..770314a490d 100644
--- a/src/main/java/seedu/address/logic/parser/AddCommentCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/AddCommentCommandParser.java
@@ -3,7 +3,6 @@
import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import seedu.address.logic.commands.AddCommentCommand;
-import seedu.address.logic.commands.AddTaskCommand;
import seedu.address.logic.parser.exceptions.ParseException;
import seedu.address.model.person.Name;
import seedu.address.model.project.Member;
@@ -31,14 +30,13 @@ public AddCommentCommand parse(String args) throws ParseException {
String comment = args.split(" /from ")[0].trim();
String memberAndProject = args.split(" /from ")[1];
if (comment.length() == 0) {
- throw new ParseException("Please enter a comment");
+ throw new ParseException("Please enter a comment.");
}
String memberName = memberAndProject.split(" /to ")[0];
String projectName = memberAndProject.split(" /to ")[1];
- if (memberName.length() == 0 || projectName.length() == 0) {
- throw new ParseException(String.format(
- MESSAGE_INVALID_COMMAND_FORMAT,
- AddTaskCommand.MESSAGE_USAGE));
+ if (memberName.length() == 0 || projectName.length() == 0
+ || !Name.isValidName(projectName) || !Name.isValidName(memberName)) {
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
Member member = new Member(memberName);
Name name = ParserUtil.parseName(projectName);
diff --git a/src/main/java/seedu/address/logic/parser/AddPersonCommandParser.java b/src/main/java/seedu/address/logic/parser/AddPersonCommandParser.java
index 771081ac6e7..88415519131 100644
--- a/src/main/java/seedu/address/logic/parser/AddPersonCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/AddPersonCommandParser.java
@@ -30,7 +30,7 @@ public AddPersonCommand parse(String args) throws ParseException {
memberName = memberName.trim();
projectName = projectName.trim();
if ((memberName.length() == 0) || (projectName.length() == 0)) {
- throw new ParseException("Please enter the member and project fields");
+ throw new ParseException("Please enter the member and project fields.");
}
Member member = new Member(memberName);
Name name = ParserUtil.parseName(projectName);
@@ -41,7 +41,7 @@ public AddPersonCommand parse(String args) throws ParseException {
MESSAGE_INVALID_COMMAND_FORMAT,
AddPersonCommand.MESSAGE_USAGE));
} catch (IllegalArgumentException e) {
- throw new ParseException("Please enter valid names.");
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
}
}
diff --git a/src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java b/src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java
index f8e5b9416c2..e2a45ff12c4 100644
--- a/src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java
@@ -28,16 +28,14 @@ public AddTaskCommand parse(String args) throws ParseException {
}
String taskName = args.split(" /to")[0];
String projectName = args.split("/to ")[1];
- if ((taskName.length() == 0) || (projectName.length() == 0)) {
- throw new ParseException("Please enter the task and project fields");
+ if (!Name.isValidName(projectName) || !Name.isValidName(taskName)) {
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
ParserUtil.parseName(taskName);
Task task = new Task(taskName);
Name name = ParserUtil.parseName(projectName);
Project project = new Project(name);
return new AddTaskCommand(task, project);
- } catch (ParseException e) {
- throw e;
} catch (ArrayIndexOutOfBoundsException e) {
throw new ParseException(String.format(
MESSAGE_INVALID_COMMAND_FORMAT,
diff --git a/src/main/java/seedu/address/logic/parser/AssignPersonCommandParser.java b/src/main/java/seedu/address/logic/parser/AssignPersonCommandParser.java
index 605661b3ab7..eba6b099968 100644
--- a/src/main/java/seedu/address/logic/parser/AssignPersonCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/AssignPersonCommandParser.java
@@ -21,16 +21,15 @@ public class AssignPersonCommandParser implements Parser {
public AssignPersonCommand parse(String args) throws ParseException {
try {
if (!args.contains(" /to ") || !args.contains(" /in ")) {
- throw new ParseException("Whoops! When referring to another field like a task,"
- + " always remember to put /to instead of just to."
- + " When referring to a project, use /in instead of just in. ");
+ throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,
+ AssignPersonCommand.MESSAGE_USAGE));
}
String member = args.split(" /to")[0].trim();
String taskAndProject = args.split(" /to")[1].trim();
String taskName = taskAndProject.split("/in ")[0].trim();
String projectName = taskAndProject.split("/in ")[1].trim();
if ((taskName.length() == 0) || (projectName.length() == 0) || (member.length() == 0)) {
- throw new ParseException("Please enter the task, project and member fields");
+ throw new ParseException("Please enter the task, project and member fields.");
}
Project project = new Project(ParserUtil.parseName(projectName));
Task newTask = new Task(taskName);
@@ -39,7 +38,7 @@ public AssignPersonCommand parse(String args) throws ParseException {
throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,
AssignPersonCommand.MESSAGE_USAGE));
} catch (IllegalArgumentException e) {
- throw new ParseException("Please enter valid names.");
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
}
}
diff --git a/src/main/java/seedu/address/logic/parser/AssignTeamCommandParser.java b/src/main/java/seedu/address/logic/parser/AssignTeamCommandParser.java
index 5ee4e7180b5..0118d83a58a 100644
--- a/src/main/java/seedu/address/logic/parser/AssignTeamCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/AssignTeamCommandParser.java
@@ -25,8 +25,8 @@ public class AssignTeamCommandParser implements Parser {
public AssignTeamCommand parse(String args) throws ParseException {
try {
if (!args.contains(" /to ")) {
- throw new ParseException("Whoops! When referring to another field like a project,"
- + " always remember to put /to instead of just to.");
+ throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,
+ AssignTeamCommand.MESSAGE_USAGE));
}
String members = args.split(" /to")[0].trim();
String projectName = args.split(" /to")[1].trim();
@@ -34,10 +34,10 @@ public AssignTeamCommand parse(String args) throws ParseException {
.map(String::trim)
.collect(Collectors.toList());
if (team.stream().anyMatch(member -> (member.length() == 0 || !Name.isValidName(member)))) {
- throw new ParseException("Please enter valid names");
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
if ((team.size() == 0) || (projectName.length() == 0)) {
- throw new ParseException("Please enter the project and team fields");
+ throw new ParseException("Please enter the project and team fields.");
}
Project project = new Project(ParserUtil.parseName(projectName));
return new AssignTeamCommand(team, project);
diff --git a/src/main/java/seedu/address/logic/parser/DeletePersonCommandParser.java b/src/main/java/seedu/address/logic/parser/DeletePersonCommandParser.java
index e1a26c2bba0..5a987c26b8a 100644
--- a/src/main/java/seedu/address/logic/parser/DeletePersonCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/DeletePersonCommandParser.java
@@ -28,16 +28,9 @@ public DeletePersonCommand parse(String args) throws ParseException {
String memberName = args.split(" /in")[0];
String projectName = args.split("/in ")[1];
- if ((memberName.length() == 0) || (projectName.length() == 0)) {
- throw new ParseException("Please enter the member and the project field");
- }
return new DeletePersonCommand(new Member(memberName), new Project(new Name(projectName)));
} catch (IllegalArgumentException e) {
- throw new ParseException("Please enter valid names.");
- } catch (Exception e) {
- throw new ParseException(String.format(
- MESSAGE_INVALID_COMMAND_FORMAT,
- DeletePersonCommand.MESSAGE_USAGE));
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
}
diff --git a/src/main/java/seedu/address/logic/parser/DeleteProjectCommandParser.java b/src/main/java/seedu/address/logic/parser/DeleteProjectCommandParser.java
index 7152353cce3..be1d54d4fb9 100644
--- a/src/main/java/seedu/address/logic/parser/DeleteProjectCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/DeleteProjectCommandParser.java
@@ -1,9 +1,8 @@
package seedu.address.logic.parser;
-import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
-
import seedu.address.logic.commands.DeleteProjectCommand;
import seedu.address.logic.parser.exceptions.ParseException;
+import seedu.address.model.person.Name;
/**
* Parses input arguments and creates a new DeleteProjectCommand object
@@ -16,19 +15,11 @@ public class DeleteProjectCommandParser implements Parser
* @throws ParseException if the user input does not conform the expected format
*/
public DeleteProjectCommand parse(String args) throws ParseException {
- try {
- args = args.trim();
- if (args.length() == 0) {
- throw new ParseException("Please enter the project field.");
- }
-
- System.out.println(args);
- return new DeleteProjectCommand(args);
- } catch (Exception e) {
- throw new ParseException(String.format(
- MESSAGE_INVALID_COMMAND_FORMAT,
- DeleteProjectCommand.MESSAGE_USAGE));
+ args = args.trim();
+ if (args.length() == 0 || !Name.isValidName(args)) {
+ throw new ParseException("Project name should be alphanumerical and not empty.");
}
+ return new DeleteProjectCommand(args);
}
}
diff --git a/src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java b/src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java
index 914d7d0cc3e..8cc5d5084fa 100644
--- a/src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java
@@ -28,10 +28,11 @@ public DeleteTaskCommand parse(String args) throws ParseException {
}
String taskName = args.split(" /in")[0];
String projectName = args.split("/in ")[1];
- Task task = new Task(taskName);
- if ((taskName.length() == 0) || (projectName.length() == 0)) {
- throw new ParseException("Please enter the project and the task field");
+ if ((taskName.length() == 0) || (projectName.length() == 0
+ || (!Name.isValidName(projectName) || (!Name.isValidName(taskName))))) {
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
+ Task task = new Task(taskName);
Name name = ParserUtil.parseName(projectName);
Project project = new Project(name);
return new DeleteTaskCommand(task, project);
diff --git a/src/main/java/seedu/address/logic/parser/RenameCommandParser.java b/src/main/java/seedu/address/logic/parser/RenameCommandParser.java
index af5a9150b98..7aefe3cfc31 100644
--- a/src/main/java/seedu/address/logic/parser/RenameCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/RenameCommandParser.java
@@ -23,15 +23,12 @@ public class RenameCommandParser implements Parser {
public RenameCommand parse(String args) throws ParseException {
try {
if (!args.contains(" /of ")) {
- throw new ParseException("Whoops! When referring to another field like a project or task,"
- + " always remember to put /of instead of just of.");
- }
- String newName = args.split(" /of ")[0];
- String possibleTargetName = args.split(" /of ")[1];
- if ((newName.length() == 0) || (possibleTargetName.length() == 0)) {
- throw new ParseException("Please enter both the target and new project name or both target task and "
- + "the project it belongs to if you want to rename a specific task");
+ throw new ParseException(String.format(
+ MESSAGE_INVALID_COMMAND_FORMAT,
+ EditTaskNameCommand.MESSAGE_USAGE));
}
+ String newName = args.split(" /of ")[0].trim();
+ String possibleTargetName = args.split(" /of ")[1].trim();
Name changedTo = ParserUtil.parseName(newName);
if (args.contains(" /in ")) {
return parseEditTaskNameCommand(possibleTargetName, changedTo);
@@ -55,8 +52,8 @@ private EditTaskNameCommand parseEditTaskNameCommand(String possibleTargetName,
Name changedTo) throws ParseException {
String taskName = possibleTargetName.split(" /in ")[0];
String projectName = possibleTargetName.split(" /in ")[1];
- if ((taskName.length() == 0) || (projectName.length() == 0)) {
- throw new ParseException("Please enter both the target task name and the project it belongs to");
+ if (!Name.isValidName(taskName)) {
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
Name targetProjectName = ParserUtil.parseName(projectName);
Project targetProject = new Project(targetProjectName);
diff --git a/src/main/java/seedu/address/logic/parser/SetDeadlineCommandParser.java b/src/main/java/seedu/address/logic/parser/SetDeadlineCommandParser.java
index 8d03246bd8a..05c43e6c59c 100644
--- a/src/main/java/seedu/address/logic/parser/SetDeadlineCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/SetDeadlineCommandParser.java
@@ -11,6 +11,7 @@
import seedu.address.logic.commands.SetDeadlineProjectCommand;
import seedu.address.logic.commands.SetDeadlineTaskCommand;
import seedu.address.logic.parser.exceptions.ParseException;
+import seedu.address.model.person.Name;
import seedu.address.model.project.Project;
import seedu.address.model.project.Task;
@@ -39,9 +40,6 @@ public SetDeadlineCommand parse(String args) throws ParseException {
if (!args.contains(" /in ")) {
//SetDeadlineProjectCommand
String projectName = args.split("/to ")[1];
- if ((projectName.length() == 0)) {
- throw new ParseException("Please enter the project field");
- }
Project project = new Project(ParserUtil.parseName(projectName));
return new SetDeadlineProjectCommand(deadline, project);
} else {
@@ -61,8 +59,8 @@ private SetDeadlineTaskCommand parseSetDeadlineTaskCommand(String args) throws P
String taskAndProject = args.split(" /to")[1].trim();
String taskName = taskAndProject.split("/in ")[0].trim();
String projectName = taskAndProject.split("/in ")[1];
- if ((projectName.length() == 0) || (taskName.length() == 0)) {
- throw new ParseException("Please enter the project and task fields");
+ if (!Name.isValidName(taskName)) {
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
Project project = new Project(ParserUtil.parseName(projectName));
Task newTask = new Task(taskName);
diff --git a/src/main/java/seedu/address/logic/parser/SetProjectCategoryCommandParser.java b/src/main/java/seedu/address/logic/parser/SetProjectCategoryCommandParser.java
index 07c5b59bc3b..07b4bec2ada 100644
--- a/src/main/java/seedu/address/logic/parser/SetProjectCategoryCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/SetProjectCategoryCommandParser.java
@@ -25,16 +25,18 @@ public SetProjectCategoryCommand parse(String args) throws ParseException {
}
String category = args.split(" /to")[0].trim();
String projectName = args.split("/to ")[1];
- if ((projectName.length() == 0) || category.length() == 0) {
- throw new ParseException("Please enter the project field");
+ if (category.length() == 0) {
+ throw new ParseException("Please enter the category.");
}
Project project = new Project(ParserUtil.parseName(projectName));
return new SetProjectCategoryCommand(category, project);
- } catch (Exception e) {
+ } catch (IllegalArgumentException e) {
+ throw new ParseException("Names should be alphanumerical and not empty.");
+ } catch (ArrayIndexOutOfBoundsException e) {
throw new ParseException(String.format(
- MESSAGE_INVALID_COMMAND_FORMAT,
- SetProjectCategoryCommand.MESSAGE_USAGE));
+ MESSAGE_INVALID_COMMAND_FORMAT,
+ SetProjectCategoryCommand.MESSAGE_USAGE));
}
}
diff --git a/src/main/java/seedu/address/logic/parser/SetStatusCommandParser.java b/src/main/java/seedu/address/logic/parser/SetStatusCommandParser.java
index 23e939c131d..21b78e00dd6 100644
--- a/src/main/java/seedu/address/logic/parser/SetStatusCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/SetStatusCommandParser.java
@@ -6,6 +6,7 @@
import seedu.address.logic.commands.SetStatusCommand;
import seedu.address.logic.commands.SetTaskStatusCommand;
import seedu.address.logic.parser.exceptions.ParseException;
+import seedu.address.model.person.Name;
import seedu.address.model.project.Project;
import seedu.address.model.project.Task;
@@ -33,9 +34,6 @@ public SetStatusCommand parse(String args) throws ParseException {
}
String taskAndProject = args.split(" /of")[1].trim();
if (!args.contains(" /in ")) {
- if ((taskAndProject.length() == 0) || (status.length() == 0)) {
- throw new ParseException("Please enter the status and project fields");
- }
Project project = new Project(ParserUtil.parseName(taskAndProject));
return new SetProjectStatusCommand(status, project);
}
@@ -53,13 +51,11 @@ public SetStatusCommand parse(String args) throws ParseException {
}
private SetTaskStatusCommand parseSetTaskStatusCommand(String taskAndProject, String status) throws ParseException {
- if ((taskAndProject.length() == 0) || (status.length() == 0)) {
- throw new ParseException("Please enter the status, project and task fields");
- }
String taskName = taskAndProject.split("/in ")[0].trim();
String projectName = taskAndProject.split("/in ")[1];
- if ((projectName.length() == 0) || (taskName.length() == 0) || (status.length() == 0)) {
- throw new ParseException("Please enter the status, project and task fields");
+ if ((projectName.length() == 0) || (taskName.length() == 0)
+ || (!Name.isValidName(projectName)) || (!Name.isValidName(taskName))) {
+ throw new ParseException("Names should be alphanumerical and not empty.");
}
Project project = new Project(ParserUtil.parseName(projectName));
Task newTask = new Task(taskName);
diff --git a/src/main/java/seedu/address/logic/parser/ShowProjectCommandParser.java b/src/main/java/seedu/address/logic/parser/ShowProjectCommandParser.java
index b27d2c3315a..eb02bad2347 100644
--- a/src/main/java/seedu/address/logic/parser/ShowProjectCommandParser.java
+++ b/src/main/java/seedu/address/logic/parser/ShowProjectCommandParser.java
@@ -1,9 +1,8 @@
package seedu.address.logic.parser;
-import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
-
import seedu.address.logic.commands.ShowProjectCommand;
import seedu.address.logic.parser.exceptions.ParseException;
+import seedu.address.model.person.Name;
/**
* Parses input arguments and creates a new ShowProjectCommand object
@@ -16,19 +15,12 @@ public class ShowProjectCommandParser implements Parser {
* @throws ParseException if the user input does not conform the expected format
*/
public ShowProjectCommand parse(String args) throws ParseException {
- try {
- args = args.trim();
- if (args.length() == 0) {
- throw new ParseException("Please enter the project field");
- }
-
- System.out.println(args);
- return new ShowProjectCommand(args);
- } catch (Exception e) {
- throw new ParseException(String.format(
- MESSAGE_INVALID_COMMAND_FORMAT,
- ShowProjectCommand.MESSAGE_USAGE));
+ args = args.trim();
+ if (args.length() == 0 || !Name.isValidName(args)) {
+ throw new ParseException("Project name should be alphanumerical and not empty.");
}
+ System.out.println(args);
+ return new ShowProjectCommand(args);
}
}
diff --git a/src/main/java/seedu/address/model/person/Name.java b/src/main/java/seedu/address/model/person/Name.java
index 173f15b9b00..f7470103bd8 100644
--- a/src/main/java/seedu/address/model/person/Name.java
+++ b/src/main/java/seedu/address/model/person/Name.java
@@ -10,7 +10,7 @@
public class Name {
public static final String MESSAGE_CONSTRAINTS =
- "Names should only contain alphanumeric characters and spaces, and it should not be blank";
+ "Names should be alphanumerical and not empty.";
/*
* The first character of the address must not be a whitespace,
diff --git a/src/main/resources/view/CommentListCard.fxml b/src/main/resources/view/CommentListCard.fxml
index 186c2b5df49..ee03f80589d 100644
--- a/src/main/resources/view/CommentListCard.fxml
+++ b/src/main/resources/view/CommentListCard.fxml
@@ -21,11 +21,11 @@
-
-
-
+
+
+
-
+
diff --git a/src/main/resources/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css
index 950a11914bd..621dee58d94 100644
--- a/src/main/resources/view/DarkTheme.css
+++ b/src/main/resources/view/DarkTheme.css
@@ -134,11 +134,11 @@
}
.scroll-pane {
- -fx-background-color: transparent;
+ -fx-background-color: transparent;
}
.scroll-pane > .viewport {
- -fx-background-color: transparent;
+ -fx-background-color: transparent;
}
.pane-with-border {
-fx-background-color: derive(#1d1d1d, 20%);
@@ -146,8 +146,6 @@
-fx-border-top-width: 1px;
}
-
-
.status-bar {
-fx-background-color: derive(#1d1d1d, 30%);
}
@@ -298,6 +296,14 @@
-fx-background-insets: 3;
}
+.scroll-bar .corner {
+ -fx-background-color: transparent;
+}
+
+.scroll-bar .filler {
+ -fx-background-color: transparent;
+}
+
.scroll-bar .increment-button,
.scroll-bar .decrement-button {
-fx-background-color: transparent;
@@ -311,12 +317,12 @@
.scroll-bar:vertical .increment-arrow,
.scroll-bar:vertical .decrement-arrow {
- -fx-padding: 1 8 1 8;
+ -fx-padding: 1 4 1 4;
}
.scroll-bar:horizontal .increment-arrow,
.scroll-bar:horizontal .decrement-arrow {
- -fx-padding: 8 1 8 1;
+ -fx-padding: 4 1 4 1;
}
#cardPane {
@@ -374,11 +380,10 @@
}
.centeredTextArea {
- -fx-background-color: transparent;
- -fx-control-inner-background: transparent;
+ -fx-background-color: transparent;
+ -fx-control-inner-background: transparent;
}
-
.centeredTextArea .scroll-pane .content .text {
- -fx-text-alignment: center;
+ -fx-text-alignment: center;
}
diff --git a/src/test/java/seedu/address/logic/parser/AssignPersonCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AssignPersonCommandParserTest.java
index 1bd85ecd02b..380ca59e2a9 100644
--- a/src/test/java/seedu/address/logic/parser/AssignPersonCommandParserTest.java
+++ b/src/test/java/seedu/address/logic/parser/AssignPersonCommandParserTest.java
@@ -32,7 +32,7 @@ public void parse_emptyArgs_throwsParseException() {
assertParseFailure(
parser,
" /to testing /in Code",
- "Please enter the task, project and member fields");
+ "Please enter the task, project and member fields.");
assertParseFailure(
parser,
@@ -42,6 +42,6 @@ public void parse_emptyArgs_throwsParseException() {
assertParseFailure(
parser,
"James /to /in Code",
- "Please enter the task, project and member fields");
+ "Please enter the task, project and member fields.");
}
}
diff --git a/src/test/java/seedu/address/logic/parser/AssignTeamCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AssignTeamCommandParserTest.java
index 0d007d13b19..5d24540cc95 100644
--- a/src/test/java/seedu/address/logic/parser/AssignTeamCommandParserTest.java
+++ b/src/test/java/seedu/address/logic/parser/AssignTeamCommandParserTest.java
@@ -10,12 +10,10 @@
import seedu.address.logic.commands.AssignTeamCommand;
import seedu.address.model.person.Name;
-import seedu.address.model.project.Member;
import seedu.address.model.project.Project;
class AssignTeamCommandParserTest {
private Project taskProject = new Project(new Name("Code"));
- private Member member = new Member("James");
private List team = new ArrayList<>();
private AssignTeamCommandParser parser = new AssignTeamCommandParser();
@@ -32,11 +30,11 @@ public void parse_emptyArgs_throwsParseException() {
assertParseFailure(
parser,
" /to Code",
- "Please enter valid names");
+ "Names should be alphanumerical and not empty.");
assertParseFailure(
parser,
"James /to ",
- "Please enter the project and team fields");
+ "Please enter the project and team fields.");
}
}
diff --git a/src/test/java/seedu/address/logic/parser/DeleteProjectCommandParserTest.java b/src/test/java/seedu/address/logic/parser/DeleteProjectCommandParserTest.java
index 6b9998fd6fc..f6c14c0a082 100644
--- a/src/test/java/seedu/address/logic/parser/DeleteProjectCommandParserTest.java
+++ b/src/test/java/seedu/address/logic/parser/DeleteProjectCommandParserTest.java
@@ -1,6 +1,5 @@
package seedu.address.logic.parser;
-import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;
@@ -29,6 +28,6 @@ public void parse_emptyArgs_throwsParseException() {
assertParseFailure(
parser,
"",
- String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteProjectCommand.MESSAGE_USAGE));
+ "Project name should be alphanumerical and not empty.");
}
}
diff --git a/src/test/java/seedu/address/logic/parser/RenameCommandParserTest.java b/src/test/java/seedu/address/logic/parser/RenameCommandParserTest.java
index 563274def5b..42ccf8c4266 100644
--- a/src/test/java/seedu/address/logic/parser/RenameCommandParserTest.java
+++ b/src/test/java/seedu/address/logic/parser/RenameCommandParserTest.java
@@ -44,7 +44,7 @@ public void parse_missingFields_failure() {
// missing task name
assertParseFailure(parser, "A /of /in proj",
- "Please enter both the target task name and the project it belongs to");
+ expectedMessageTask);
}
}
diff --git a/src/test/java/seedu/address/logic/parser/SetProjectCategoryCommandParserTest.java b/src/test/java/seedu/address/logic/parser/SetProjectCategoryCommandParserTest.java
index c0a8c99c60b..f79cbeebc02 100644
--- a/src/test/java/seedu/address/logic/parser/SetProjectCategoryCommandParserTest.java
+++ b/src/test/java/seedu/address/logic/parser/SetProjectCategoryCommandParserTest.java
@@ -9,9 +9,6 @@
import seedu.address.logic.commands.SetProjectCategoryCommand;
import seedu.address.model.person.Name;
import seedu.address.model.project.Project;
-import seedu.address.model.project.Task;
-
-
class SetProjectCategoryCommandParserTest {
private SetProjectCategoryCommandParser parser = new SetProjectCategoryCommandParser();
@@ -19,7 +16,6 @@ class SetProjectCategoryCommandParserTest {
@Test
public void parse_allFieldsPresent_success() {
Project project = new Project(new Name("project"));
- Task task = new Task("task");
assertParseSuccess(parser, "A /to project",
new SetProjectCategoryCommand("A", project));
@@ -39,6 +35,6 @@ public void parse_missingFields_failure() {
// missing category name
assertParseFailure(parser, " /to project",
- expectedMessage);
+ "Please enter the category.");
}
}
diff --git a/src/test/java/seedu/address/logic/parser/SetStatusCommandParserTest.java b/src/test/java/seedu/address/logic/parser/SetStatusCommandParserTest.java
index ac3d88ea322..3201b172631 100644
--- a/src/test/java/seedu/address/logic/parser/SetStatusCommandParserTest.java
+++ b/src/test/java/seedu/address/logic/parser/SetStatusCommandParserTest.java
@@ -35,14 +35,14 @@ public void parse_missingFields_failure() {
// missing project name
assertParseFailure(parser, "complete /of ",
- "Please enter the status and project fields");
+ "Names should be alphanumerical and not empty.");
assertParseFailure(parser, "complete /of task /in ",
expectedMessageTask);
// missing task name
assertParseFailure(parser, "complete /of /in proj",
- "Please enter the status, project and task fields");
+ "Names should be alphanumerical and not empty.");
}
}
diff --git a/src/test/java/seedu/address/logic/parser/ShowProjectCommandParserTest.java b/src/test/java/seedu/address/logic/parser/ShowProjectCommandParserTest.java
index 65c8203d718..5687c39d246 100644
--- a/src/test/java/seedu/address/logic/parser/ShowProjectCommandParserTest.java
+++ b/src/test/java/seedu/address/logic/parser/ShowProjectCommandParserTest.java
@@ -1,23 +1,17 @@
package seedu.address.logic.parser;
-import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;
import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;
import org.junit.jupiter.api.Test;
import seedu.address.logic.commands.ShowProjectCommand;
-import seedu.address.model.person.Name;
-import seedu.address.model.person.Person;
-import seedu.address.model.project.Task;
class ShowProjectCommandParserTest {
private ShowProjectCommandParser parser = new ShowProjectCommandParser();
@Test
public void parse_allFieldsPresent_success() {
- Person project = new Person(new Name("project"));
- Task task = new Task("task");
assertParseSuccess(parser, "project", new ShowProjectCommand("project"));
@@ -25,11 +19,10 @@ public void parse_allFieldsPresent_success() {
@Test
public void parse_compulsoryFieldMissing_failure() {
- String expectedMessage = String.format(MESSAGE_INVALID_COMMAND_FORMAT, ShowProjectCommand.MESSAGE_USAGE);
// missing project name
assertParseFailure(parser, "",
- expectedMessage);
+ "Project name should be alphanumerical and not empty.");
}
}