User Guide
About Swift+
Swift+ is a project management app designed to help software engineering (SWE) project leads in tracking their daily interactions with contacts. As a project lead, you can easily record down your clients and teammates by creating and editing contacts using Swift+. Using Swift+’s task management system, you can assign tasks to contacts and mark tasks as completed. Finally, you can gain an overview of your project with our intuitive side-by-side user interface.
Perfect for SWE professionals, Swift+ is built around a command line interface, complete with an autocomplete feature. If you have fast fingers, Swift+ can help you manage contacts and tasks more quickly than a traditional point-and-click interface.
This user guide provides details on how to use Swift+ in your daily workflow. This guide covers how to set up Swift+ and use its text-based commands. Get started now by heading over to the How to use this user guide section!
Table of Contents
- About Swift+
- How to use this user guide
- Getting Started
-
Commands
- Contact Commands
-
Task Commands
- Adding a task:
add_task
- Listing all tasks:
list_task
- Finding tasks by name:
find_task
- Editing tasks:
edit_task
- Deleting tasks:
delete_task
- Selecting a task:
select_task
- Marking a task as complete:
mark
- Marking a task as incomplete:
unmark
- Assigning a task to a contact:
assign
- Unassign a task from a contact:
unassign
- Adding a task:
- General Commands
- Command suggestion and autocomplete
- Saving the data
- Editing the data file
- FAQ
- Command Summary
How to use this user guide
Icons
Throughout this website, you may find colored boxes that contain useful information. The icon at the top of the box represents the type of information contained.
Icon | Meaning |
---|---|
Tips to help you make the most out of Swift+. | |
Information you should take note of while using Swift+. | |
Warnings that may corrupt your app and data if not followed. |
Sections
If you have not installed Swift+, head over to the Installation section.
After installing Swift+, you can refer to our Getting Started section on the basics of using Swift+. This includes the app’s,
If you are using Swift+ for the first time, we highly recommend that you read through the Getting Started section before the other sections.
To view each command in detail, you can head over to the Commands section.
If you are an experienced user, you can refer to the Command Summary for a quick overview of the commands in Swift+.
If you have any questions while using the app, please refer to our FAQ section.
For any further queries or suggestions, you may reach out to us here!
Getting Started
This section covers how to install and start using Swift+.
Installation
-
Ensure you have Java 11 installed in your computer.
-
Download the latest release of
swift+.jar
from here. -
Copy the file to an empty folder. This will be your home folder for Swift+.
-
Double-click on the jar file to launch Swift+.
Congratulations! You have successfully set up Swift+.
The app comes with sample contacts and tasks by default. To delete the sample data quickly, you can use the
clear
command.
Layout
After you open Swift+, the app will appear in the form of a graphical user interface, or GUI. In Swift+, you can toggle between the Contact View and the Task View. Let’s take a look at the different components in Swift+ below.
To toggle between Contact View and Task View, you can use the
Ctrl + Tab
command.
Swift+’s GUI:
This table showcases the components shared by both Contact View and Task View.
Component Name | Image |
---|---|
Menu Bar | |
Command Input Box | |
Command Results |
Contact View
The contact view is primarily for viewing contacts. The main panel on the left shows a list of contacts and all of their contact information. The right sidebar contains tasks with essential details.
Component Name | Image |
---|---|
Contact List | |
Task Sidebar |
Task View
The task view is mainly for viewing tasks. The main panel on the left displays a list of tasks and all of their details. The right sidebar contains contacts with essential contact information.
Component Name | Image |
---|---|
Task List | |
Contact Sidebar |
How to use Swift+ commands
Swift+ is built around text-based commands. Before we dive deeper into the details in the Commands section, let’s learn the basic components and format of a command.
Flag
A flag is a delimiter that allows Swift+ to distinguish different input fields. For each flag, you would put in the corresponding parameter immediately after.
Flag | Corresponding Parameter |
---|---|
a/ |
ADDRESS |
c/ |
CONTACT_INDEX |
d/ |
DESCRIPTION |
dl/ |
DEADLINE |
e/ |
EMAIL |
n/ |
NAME |
p/ |
PHONE_NUMBER |
t/ |
TAG , TASK_INDEX
|
Parameter
A parameter represents placeholders where you input data. Usually, parameters follow immediately after their corresponding flag.
Each parameter has unique constraints, which restricts what you can type in for the parameter. Refer to the table below for details.
Some parameters, such as
CONTACT_INDEX
and KEYWORD
, may not follow after flags.
Refer to the Command Format section on how to use flags and parameters together.
Parameter | Corresponding Flag | Description |
---|---|---|
ADDRESS |
a/ |
Specifies the address of a contact. An example use for this field include recording a client’s home or office address. |
CONTACT_INDEX |
c/ |
Refers to the index number shown in the displayed contact list.
|
CONTACT_NAME |
n/ |
Specifies the name of a contact.
|
DEADLINE |
dl/ |
Specifies the due date of a task.
|
DESCRIPTION |
d/ |
Specifies the description and details of a task.
|
EMAIL |
e/ |
Specifies the email of a contact.
|
KEYWORD |
Not applicable |
Specifies the keywords to search for when finding contacts or tasks.
|
PHONE_NUMBER |
p/ |
Specifies the phone number of a contact.
|
TAG |
t/ |
Specifies the tag to categorize a contact under.
|
TASK_INDEX |
t/ |
Refers to the index number shown in the displayed task list.
|
TASK_NAME |
n/ |
Specifies the name of a task.
|
Command Format
To understand how a full command is interpreted, let’s look at the following example.
Example: add_contact n/CONTACT_NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…
Component Name | Meaning | |
---|---|---|
add_contact |
Command Word | Tells Swift+ to execute command to add contact. |
n/ |
Flag | Distinguishes CONTACT_NAME from other input fields. |
CONTACT_NAME |
Parameter | Represents placeholder for name of contact that you wish to input. |
Notice how t/TAG
is wrapped in [ ]
. Items in square brackets are optional.
- For example,
n/CONTACT_NAME [t/TAG]
can be used asn/Mark t/friend
or asn/Mark
.
Furthermore, notice how [t/TAG]
is followed by …
. Items followed by …
can be inputted multiple times, including
zero times.
- For example,
n/CONTACT_NAME [t/TAG]…
can be used asn/Mark
(i.e. 0 times),n/Mark t/friend
,n/Mark t/friend t/family
, and etc.
Note
- Parameters can be in any order.
e.g. if the command specifiesn/CONTACT_NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/CONTACT_NAME
is also acceptable. - If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/1234 p/5678
, onlyp/5678
will be taken. - Extraneous parameters for commands that do not take in parameters (such as
help
,list_contact
,exit
andclear
) will be ignored.
e.g. if your specifyhelp 123
, it will be interpreted ashelp
.
Commands
This section covers how to use each command in detail. You can refer to the Parameter section to view the constraints for each parameter.
Contact Commands
Adding a contact: add_contact
Adds a contact.
Format: add_contact n/CONTACT_NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…
A contact can have any number of tags (including 0).
Examples:
-
add_contact n/Mark Yang p/12345678 e/mark@example.com a/block 123
adds a contact namedMark Yang
with a phone number of12345678
, email ofmark@example.com
, and address ofblock 123
. -
add_contact n/Anne Marie t/developer e/anne@example.com a/Newgate office p/87654321 t/client
adds a contact namedAnne Marie
with adeveloper
tag, afriend
tag, email ofanne@example.com
, address ofNewgate office
, and phone number of87654321
.
Listing all contacts: list_contact
Shows a list of all contacts in the main panel and a list of all tasks in the sidebar.
Format: list_contact
Example:
-
list_contact
displays a list of all contacts, as shown in the diagram below.
Finding contacts by name: find_contact
Finds contacts whose names contain any of the given keywords.
Format: find_contact KEYWORD [MORE_KEYWORDS]
Note
- The search is case-insensitive. e.g.
mark
will matchMark
- The order of the keywords does not matter. e.g.
Mark Wilson
will matchWilson Mark
- Only the name of contacts is searched.
- Only full words will be matched e.g.
Mark
will not matchMarks
- Contacts matching at least one keyword will be returned (i.e.
OR
search).
e.g. As shown in the diagram below,find_contact Alex David
will returnAlex Yeoh
andDavid Li
, since they contain the keywordsAlex
andDavid
respectively.
Examples:
-
find_contact Mark
returnsMark
andmark
. -
find_contact mark wilson
returnsMark Yang
andSteve Wilson
.
Editing a contact: edit_contact
Edits an existing contact.
Format: edit_contact CONTACT_INDEX [n/CONTACT_NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…
Note
- Edits the contact at the specified
CONTACT_INDEX
. - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing tags, the existing tags of the contact will be removed, i.e. adding of tags is not cumulative.
- You can remove all the contact’s tags by typing
t/
without specifying any tags after it.
Examples:
-
edit_contact 1 p/91234567 e/mark@example.com
edits the phone number and email address of the 1st contact to be91234567
andmark@example.com
respectively. -
edit_contact 2 n/Anne t/
edits the name of the 2nd contact to beAnne
and clears all ofAnne
’s tags.
Deleting a contact: delete_contact
Deletes the specified contact.
Format: delete_contact CONTACT_INDEX
Examples:
-
list_contact
followed bydelete_contact 2
deletes the 2nd contact in the entire contact list. -
find_contact Anne
followed bydelete_contact 1
deletes the 1st contact in the results of thefind_contact Anne
command.
Selecting a contact: select_contact
Displays the selected contact in the main panel and displays the tasks assigned to the contact in the sidebar.
Format: select_contact CONTACT_INDEX
Examples:
-
list_contact
followed byselect_contact 1
selects the 1st contact in the entire contact list and shows all tasks assigned to that contact. -
find_contact Bernice
followed byselect_contact 1
selects the 1st contact in the results of thefind_contact Bernice
command and shows all task assigned to that person.
e.g. In the screenshot below, we can see the selected contact on the main panel and their assigned tasks on the sidebar.
Task Commands
Adding a task: add_task
Adds a task.
Format: add_task n/TASK_NAME [d/DESCRIPTION] [dl/DEADLINE] [c/CONTACT_INDEX]…
Examples:
-
add_task n/CS2103T iP d/Finish milestones dl/12-12-2022 2359 c/1
adds a task assigned to the 1st displayed contact. The task has a name ofCS2103T
, description ofFinish milestones
, and deadline of12 December 2022 23:59
. -
add_task n/CS2101 Assignment dl/12-12-2022 2359 c/2 c/3
adds a task assigned to the 2nd and 3rd displayed contact. The task has a name ofCS2101 Assignment
and deadline of12 December 2022 23:59
.
Listing all tasks: list_task
Shows a list of all tasks in the main panel and a list of all contacts in the sidebar.
Format: list_task
Note
- Tasks are sorted chronologically by deadline.
- Tasks without deadlines are listed below tasks with deadlines and sorted by their names alphabetically.
Example:
-
list_task
displays a list of all tasks, as shown in the diagram below. Note that the first 3 tasks with deadlines are ordered chronologically and placed at the top. The last 2 tasks without deadlines are placed below.
Finding tasks by name: find_task
Finds tasks whose names contain any of the given keywords.
Format: find_task KEYWORD [MORE_KEYWORDS]
Note
- The search is case-insensitive. e.g.
book
will matchBook
- The order of the keywords does not matter. e.g.
read book
will matchbook read
- Only the name of the task is searched.
- Only full words will be matched e.g.
Book
will not matchBooks
- Tasks matching at least one keyword will be returned (i.e.
OR
search). e.g.Read book
will returnWrite book
,Find book
Examples:
-
find_task Book
returnsbook
andBook
. -
find_task read book
returnsread novel
andsell book
.
Editing tasks: edit_task
Edits an existing task.
Format: edit_task TASK_INDEX [n/TASK_NAME] [d/DESCRIPTION] [dl/DEADLINE]
Note
- Edits the task at the specified
TASK_INDEX
. - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
Examples:
-
edit_task 1 n/Client meeting d/Gather user stories
edits the task name and description of the 1st task toClient meeting
andGather user stories
respectively. -
edit_task 2 dl/06-12-2022 1200
edits the deadline of the 2nd task to be06-12-2022 1200
.
Deleting tasks: delete_task
Deletes an existing task in task list.
Format: delete_task TASK_INDEX
Examples:
-
delete_task 1
deletes the task at index 1. -
delete_task 3
deletes the task at index 3.
Selecting a task: select_task
Selects the specified task and displays the contacts assigned to the task.
Format: select_task TASK_INDEX
Examples:
-
list_task
followed byselect_task 1
selects the 1st task in the entire task list and shows all contacts assigned to that task. -
find_task discuss
followed byselect_task 1
selects the 1st task in the results of thefind_task discuss
command and shows all contacts assigned to that task.
e.g. In the screenshot below, we can see the selected task on the main panel and its assigned contacts on the sidebar.
Marking a task as complete: mark
Marks the specified task as completed.
Format: mark TASK_INDEX
Note
- Specified task must be currently incomplete for command to succeed.
- As shown in the diagram below, a ticked checkbox indicates a task being completed.
Examples:
-
list_task
followed bymark 1
marks the 1st task in the entire task list as completed. -
find_task sleep
followed bymark 1
marks the 1st task in the results of thefind_task sleep
command as completed.
Marking a task as incomplete: unmark
Marks the specified task as incomplete.
Format: unmark TASK_INDEX
Note
- Specified task must be currently completed for command to succeed.
- As shown in the diagram below, an empty checkbox indicates a task being incomplete.
Examples:
-
list_task
followed byunmark 1
marks the 1st task in the entire task list as incomplete. -
find_task sleep
followed byunmark 1
marks the 1st task in the results of thefind_task sleep
command as incomplete.
Assigning a task to a contact: assign
Assigns a task to a contact.
Format: assign c/CONTACT_INDEX t/TASK_INDEX
Note
- Assigns the task at the specified
TASK_INDEX
to the contact at the specifiedCONTACT_INDEX
. - Existing assignments are not affected.
- To view a task’s assigned contact(s), you can view the labels on the right side of the task list.
e.g. In the diagram below, the 1st task is assigned toAlex Yeoh
.
Examples:
-
assign c/1 t/1
assigns the task at index 1 to the contact at index 1. -
assign c/3 t/2
assigns the task at index 2 to the contact at index 3.
Unassign a task from a contact: unassign
Removes a contact from a task.
Format: unassign c/CONTACT_INDEX t/TASK_INDEX
Note
- Removes the contact at the specified
CONTACT_INDEX
from the task at the specifiedTASK_INDEX
.
Examples:
-
unassign c/1 t/1
removes the contact at index 1 from the task at index 1. -
unassign c/3 t/2
removes the contact at index 3 from the task at index 2.
General Commands
Toggling between contacts and tasks tabs: Ctrl + Tab
Toggles the view between the contacts and tasks tabs.
Format: Ctrl + Tab
Alternatively, you can click on the Contacts and Tasks button in the top toolbar.
Viewing help: help
Shows a message explaining how to access the user guide.
Alternatively, you can click on the Help button in the top toolbar.
Format: help
Clearing all data: clear
Deletes all data in the application.
Format: clear
Executing the
clear
command will cause all of your existing data to be discarded forever and the app will start with an empty data file. There will be no confirmation prompt before clearing data.
Exiting the program : exit
Exits the program.
Format: exit
Alternatively, you can click on the Exit button in the top toolbar.
Command suggestion and autocomplete
To help you familiarize with the commands, Swift+ prompts you with command suggestions as you type and can autocomplete your commands until the next user-required input.
-
Type the first few letters of a command you hope to use and Swift+ will display a suggested command. e.g.
lis
.
-
Press
Tab
to autocomplete your command with the prompted suggestion.
Note
- If multiple commands are possible with the current input, autocomplete only completes up to the longest matching prefix. e.g. pressing
Tab
afterlis
will autocomplete the command tolist_
, since there are two commands (list_contact
andlist_task
) that start withlis
. - If the current input is invalid, command suggestions will not be shown. The current input will also turn red to alert you.
- Autocomplete does not guarantee a valid command, unless the given syntax is followed.
Saving the data
Swift+ data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
Swift+ data are saved as a JSON file [JAR file location]/data/addressbook.json
. Advanced users are welcome to update data directly by editing that data file.
If your changes to the data file makes its format invalid, Swift+ will discard all data and start with an empty data file in the next run.
FAQ
Q: How do I transfer my data to another computer?
A: Install Swift+ in the other computer. Replace the default data file addressbook.json
with the file that contains the data of your previous Swift+.
Q: Why does autocomplete not complete the whole suggestion after pressing Tab?
A: If multiple commands are possible with the current input, autocomplete only completes up to the longest matching prefix. e.g. pressing Tab
after lis
will autocomplete the command to list_
, since there are two commands (list_contact
and list_task
) that start with lis
.
Command Summary
This section contains a summary of all commands in Swift+ listed in alphabetical order.
Action | Format |
---|---|
Add Contact | add_contact n/CONTACT_NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]… |
Add Task | add_task n/TASK_NAME [d/DESCRIPTION] [dl/DEADLINE] [c/CONTACT_INDEX]… |
Assign Task | assign c/CONTACT_INDEX t/TASK_INDEX |
Clear Data | clear |
Delete Contact | delete_contact CONTACT_INDEX |
Delete Task | delete_task TASK_INDEX |
Edit Contact | edit_contact CONTACT_INDEX [n/CONTACT_NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]… |
Edit Task | edit_task TASK_INDEX [n/TASK_NAME] [d/DESCRIPTION] [dl/DEADLINE] |
Find Contacts | find_contact KEYWORD [MORE_KEYWORDS] |
Find Tasks | find_task KEYWORD [MORE_KEYWORDS] |
Help | help |
List Contacts | list_contact |
List Tasks | list_task |
Mark Task | mark TASK_INDEX |
Select Contact | select_contact CONTACT_INDEX |
Select Task | select_task TASK_INDEX |
Unassign Task | unassign c/CONTACT_INDEX t/TASK_INDEX |
Unmark Task | unmark TASK_INDEX |