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

[CS2103T-W15-3] SoConnect #82

Open
wants to merge 998 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
998 commits
Select commit Hold shift + click to select a range
0b47258
Merge branch 'master' into help-window
chunweii Nov 4, 2021
634547a
Fix mark and unmark having to undo twice to revert change
xiangjunn Nov 4, 2021
976076d
Merge pull request #221 from AY2122S1-CS2103T-W15-3/help-window
janjanchen Nov 4, 2021
e109581
Merge branch 'master' into update-ug
janjanchen Nov 4, 2021
0c21bbf
Merge branch 'update-ug'
janjanchen Nov 4, 2021
02e5cc8
Add glossary explanations and redo
janjanchen Nov 4, 2021
28d302b
Merge branch 'master' into update-ug
janjanchen Nov 4, 2021
5177885
Merge branch 'update-ug'
janjanchen Nov 4, 2021
aaa5125
add ToC
janjanchen Nov 4, 2021
4ab7dd1
Add expected output for cadd
janjanchen Nov 4, 2021
472595b
Merge branch 'master' into add-bookmark-command
Gordon25 Nov 5, 2021
e5a8104
Fix bugs
Gordon25 Nov 5, 2021
10b2ae0
Fix bug in detecting invalid indexes
Gordon25 Nov 5, 2021
fd31e34
Remove print statements
Gordon25 Nov 5, 2021
311aa31
Fix typo in c/eunmark line 30
Gordon25 Nov 5, 2021
b773555
Fix bugs
Gordon25 Nov 5, 2021
85761b3
Merge branch 'update-ug'
janjanchen Nov 5, 2021
0c48ae0
add ToC
janjanchen Nov 5, 2021
3a26151
Fix command messages
Gordon25 Nov 5, 2021
a1f4676
Fix bug in mark and unmark parser
Gordon25 Nov 5, 2021
49d922b
Undo changes
Gordon25 Nov 5, 2021
188d2f6
Merge pull request #216 from AY2122S1-CS2103T-W15-3/add-bookmark-command
chunweii Nov 5, 2021
7190a33
Add expected outputs and screenshots for contact managements
janjanchen Nov 5, 2021
cd8b7bb
Merge branch 'update-ug'
janjanchen Nov 5, 2021
3aca9f1
Update glossary
janjanchen Nov 5, 2021
fbe6ff3
Change command syntax format to command format
janjanchen Nov 5, 2021
5ceae01
add test cases for ModelManager and ModelDisplaySetting
pcgiang Nov 5, 2021
cd260fa
Add remaining expected outputs and screenshots
janjanchen Nov 5, 2021
3e63607
Add remaining expected outputs
janjanchen Nov 5, 2021
a028088
Merge branch 'update-ug'
janjanchen Nov 5, 2021
3a6f9fb
Merge branch 'master' into add-test-cases-xiangjun
xiangjunn Nov 5, 2021
e90c1cb
Revamp test util
chunweii Nov 5, 2021
170e5e6
Revert Gemfile changes
chunweii Nov 5, 2021
63651a4
Fix error not caught properly for cfind and efind empty prefix
xiangjunn Nov 5, 2021
da174d6
Add more test cases to CFindCommandParserTest
xiangjunn Nov 5, 2021
a4dce84
Add undo and redo tests
chunweii Nov 5, 2021
6a0daae
Add more test cases for find command parser to cover more code
xiangjunn Nov 5, 2021
95d6550
Add test cases for DateAndTimeTest
janjanchen Nov 5, 2021
17ddcdf
Add test case in AddressBookParserTest
xiangjunn Nov 5, 2021
533ca61
Add test cases for DescriptionTest
janjanchen Nov 5, 2021
9efd099
Add test cases for EventChangerTest
janjanchen Nov 5, 2021
7b916b1
Add test cases for EventDisplaySettingTest and EventContainsKeywordsP…
janjanchen Nov 5, 2021
e7e33a7
Add test cases for EventTest
janjanchen Nov 5, 2021
2bcb819
Add test cases for UniqueEventListTest
janjanchen Nov 5, 2021
28f7be7
fix checkstyle
janjanchen Nov 5, 2021
ab73be0
Add tests for LogicManager
xiangjunn Nov 6, 2021
a54dd1f
Merge pull request #223 from AY2122S1-CS2103T-W15-3/fix-bugs-giang
chunweii Nov 6, 2021
b1b7ab3
Merge branch 'master' into add-test-cases-janice
janjanchen Nov 6, 2021
91a0e59
Add test cases for ContactContainsKeywordsPredicateTest
janjanchen Nov 6, 2021
2508478
Add test cases for ContactDisplaySettingTest
janjanchen Nov 6, 2021
1c8bd3e
Covers all methods in LogicManagerTest
xiangjunn Nov 6, 2021
c5f13f4
Fix checkstyle problems
xiangjunn Nov 6, 2021
122169d
Merge branch 'master' into add-test-cases-xiangjun
xiangjunn Nov 6, 2021
b71575c
Add test cases for ContactTest
janjanchen Nov 6, 2021
ea61c2e
Add test case in LogicManagerTest for execution of not undoable command
xiangjunn Nov 6, 2021
4a9175c
Add even more tests
chunweii Nov 6, 2021
102e781
Fix checkstyle
chunweii Nov 6, 2021
e8d47e8
Improve clist parser test
xiangjunn Nov 6, 2021
0b0fc31
Merge remote-tracking branch 'upstream/master' into test-chunwei
chunweii Nov 6, 2021
71ffd0e
Update CListCommandParserTest and EListCommandParserTest
xiangjunn Nov 6, 2021
2a807f0
Add integration test for undo and redo
chunweii Nov 6, 2021
90585d6
Add integration test for sort/mark
chunweii Nov 6, 2021
ede1031
Remove ModelManager::toString
chunweii Nov 6, 2021
bd47a75
Add more test cases to models
janjanchen Nov 6, 2021
2f4c372
Merge pull request #226 from AY2122S1-CS2103T-W15-3/add-test-cases-ja…
chunweii Nov 6, 2021
3967c0a
Remove unnecessary todo
chunweii Nov 6, 2021
0164894
Merge remote-tracking branch 'upstream/master' into test-chunwei
chunweii Nov 6, 2021
62e6a99
Fix naming issues
chunweii Nov 6, 2021
d513d10
Remove unnecessary parameter isClose
chunweii Nov 6, 2021
8863643
Update PPP
xiangjunn Nov 6, 2021
dd137f1
Merge branch 'master' into update-ppp-xiangjun
xiangjunn Nov 6, 2021
d642f44
Edit PPP
chunweii Nov 6, 2021
40ffcb7
Merge remote-tracking branch 'upstream/master' into ppp-chunwei
chunweii Nov 6, 2021
d5b24e7
Merge pull request #210 from chunweii/ppp-chunwei
xiangjunn Nov 6, 2021
d03e64e
Merge branch 'master' into add-test-cases-xiangjun
xiangjunn Nov 6, 2021
4be1956
Add contributions to PPP
janjanchen Nov 6, 2021
3a696bd
Merge branch 'master' into ppp-janice
janjanchen Nov 6, 2021
0473974
Update undo/redo implementation
pcgiang Nov 6, 2021
51a885c
Resolve pr comments
xiangjunn Nov 6, 2021
71c28c4
Merge pull request #225 from AY2122S1-CS2103T-W15-3/add-test-cases-xi…
janjanchen Nov 6, 2021
d956ebc
Merge remote-tracking branch 'upstream/master' into test-chunwei
chunweii Nov 6, 2021
3a56452
Fix SampleDataUtil link issue
chunweii Nov 6, 2021
da92935
Investigate cause of workflow failure
chunweii Nov 6, 2021
e2b6020
Update gradle.yml to give more logs
chunweii Nov 6, 2021
700fb79
Ensure no null value in uuid
chunweii Nov 6, 2021
f30447f
Remove non-working tests
chunweii Nov 6, 2021
41366f4
Add back failing test case
chunweii Nov 6, 2021
ab10519
update PPP
pcgiang Nov 6, 2021
576d11d
Add contributions to PPP
janjanchen Nov 6, 2021
89a2d75
Merge branch 'master' into ppp-janice
janjanchen Nov 6, 2021
59c2d0a
add uml diagrams
pcgiang Nov 6, 2021
3c0223c
update diagrams
pcgiang Nov 6, 2021
a33d699
Address PR comments
chunweii Nov 7, 2021
56abbe1
Remove one entry from duplicate json
chunweii Nov 7, 2021
f7aa6f7
Update implementation for Elink feature
xiangjunn Nov 7, 2021
10223fb
Merge pull request #224 from AY2122S1-CS2103T-W15-3/test-chunwei
janjanchen Nov 7, 2021
7e60800
Merge branch 'master' into ppp-janice
janjanchen Nov 7, 2021
5b836b4
Merge branch 'master' into update-documentation-giang
pcgiang Nov 7, 2021
a61a3c9
Merge pull request #229 from AY2122S1-CS2103T-W15-3/update-documentat…
janjanchen Nov 7, 2021
f742493
Merge branch 'master' into ppp-janice
janjanchen Nov 7, 2021
7d4f5bf
Merge pull request #228 from AY2122S1-CS2103T-W15-3/ppp-janice
pcgiang Nov 7, 2021
5f4874b
Update design considerations for elink
xiangjunn Nov 7, 2021
885dfeb
Add manual testing instruction
xiangjunn Nov 7, 2021
066fe54
Merge branch 'master' into update-ppp-xiangjun
xiangjunn Nov 7, 2021
c550a3e
Fix the esort and emark bug
chunweii Nov 7, 2021
1c69981
Merge branch 'master' into bugfix-esort-emark
chunweii Nov 7, 2021
57eed7e
Update PPP
xiangjunn Nov 7, 2021
e50b66d
fix checkstyle
pcgiang Nov 7, 2021
d8a51fc
fix another checkstyle
pcgiang Nov 7, 2021
2ff0fe7
Merge pull request #227 from xiangjunn/update-ppp-xiangjun
janjanchen Nov 7, 2021
c874283
Edit Calendar Sequence diagram
chunweii Nov 7, 2021
d8242f9
Add use cases for mark
chunweii Nov 7, 2021
f6c6009
Update spelling to American
chunweii Nov 7, 2021
303fa20
Merge remote-tracking branch 'origin/dg-chunwei' into dg-chunwei
chunweii Nov 7, 2021
7ebf26f
Update italics for glossary terms
chunweii Nov 7, 2021
684e9bc
Add activity diagram for edelete
janjanchen Nov 7, 2021
d19b61a
Fix formatting
janjanchen Nov 7, 2021
b34bc52
Merge remote-tracking branch 'upstream/master' into bugfix-esort-emark
chunweii Nov 7, 2021
a9ee23f
Add changes to PPP
Gordon25 Nov 7, 2021
fe3be6b
Fix message usage mistakes
xiangjunn Nov 7, 2021
0e497f5
Fix duplicate index bug
chunweii Nov 7, 2021
e59d51d
Create gordon25.md
Gordon25 Nov 7, 2021
3e28211
Update gordon25.md
Gordon25 Nov 7, 2021
9ca951a
Add use case for cmark
chunweii Nov 7, 2021
b8023ac
Fix help window summary
xiangjunn Nov 7, 2021
d1f6bb4
Fix code quality
chunweii Nov 7, 2021
77ad471
Update gordon25.md
Gordon25 Nov 7, 2021
43f3e9c
Merge pull request #231 from AY2122S1-CS2103T-W15-3/bugfix-esort-emark
xiangjunn Nov 7, 2021
04ad9ba
Merge branch 'master' into fix-bug
xiangjunn Nov 7, 2021
72d584a
Fix minor bugs
xiangjunn Nov 7, 2021
91675a3
update undo/redo activity diagrams
pcgiang Nov 7, 2021
939ed0c
update undo/redo implementation description
pcgiang Nov 7, 2021
222c9f3
resize diagram
pcgiang Nov 7, 2021
131a8e6
Fix contact and event cards
xiangjunn Nov 7, 2021
430e797
Merge pull request #233 from AY2122S1-CS2103T-W15-3/fix-bug
janjanchen Nov 7, 2021
ace68f3
Edit DG formatting
chunweii Nov 7, 2021
ddbb4b0
Merge branch 'master' into dg-chunwei
chunweii Nov 7, 2021
5af5b96
Fix edelete activiy diagram
janjanchen Nov 7, 2021
1634404
Merge branch 'dg-chunwei' of https://github.com/chunweii/tp into dg-c…
janjanchen Nov 7, 2021
b1dc1c1
Fix developer guide typos
xiangjunn Nov 7, 2021
5d70887
Change model class diagram
janjanchen Nov 7, 2021
681c360
added sectioning for edelete
janjanchen Nov 7, 2021
2afb16e
Change cumark/eumark to cunmark/eunmark
chunweii Nov 7, 2021
44b19d9
Merge remote-tracking branch 'upstream/master' into ug-final-v1.4
chunweii Nov 7, 2021
0884c1e
Change introduction
chunweii Nov 7, 2021
986e19f
Merge remote-tracking branch 'janice/master' into ug-final-v1.4
chunweii Nov 7, 2021
a7eecb2
Update front-portion
chunweii Nov 7, 2021
8c960ea
update event management
pcgiang Nov 7, 2021
89be743
Fix user guide bug
xiangjunn Nov 7, 2021
4e84436
Add note for calendar
xiangjunn Nov 7, 2021
3e1509a
Add contact section for Gordon
chunweii Nov 7, 2021
5aca5e8
Update DG
Gordon25 Nov 7, 2021
e8fce42
Create CMarkActivityDiagram.puml
Gordon25 Nov 7, 2021
2e4e80a
Create CMarkSequenceDiagram.puml
Gordon25 Nov 7, 2021
b24fd3a
Create CUnmarkActivityDiagram.puml
Gordon25 Nov 7, 2021
9d667b9
Create CUnmarkSequenceDiagram.puml
Gordon25 Nov 7, 2021
ed86ca6
FInalise PPP
Gordon25 Nov 7, 2021
154fcb2
Update UserGuide.md
Gordon25 Nov 7, 2021
919b31b
Add further changes to UG
chunweii Nov 8, 2021
9448a45
Update DeveloperGuide.md
Gordon25 Nov 8, 2021
7687424
Merge branch 'master' into ppp-gordon
Gordon25 Nov 8, 2021
8481c60
update images for mark implementation
pcgiang Nov 8, 2021
a1e2740
Fix mark/unmark formatting
xiangjunn Nov 8, 2021
ac835d2
Fix navigation bug
xiangjunn Nov 8, 2021
07dc8a6
Finalize user guide
xiangjunn Nov 8, 2021
3a8b38a
Add more tips
xiangjunn Nov 8, 2021
b38b87e
update model description and cmark/cunmark
pcgiang Nov 8, 2021
f5de6b8
Update user guide
xiangjunn Nov 8, 2021
badf6bc
change phrasing for certain parts
pcgiang Nov 8, 2021
fa2b808
Fix grammar error
xiangjunn Nov 8, 2021
55f1e54
Update gordon25.md
Gordon25 Nov 8, 2021
5019aed
Merge branch 'master' into update-ppp-xiangjun
xiangjunn Nov 8, 2021
246eac2
Fix indentation error
xiangjunn Nov 8, 2021
47dffe3
Update gordon25.md
Gordon25 Nov 8, 2021
b8aff8c
Fix tip in calendar not displaying properly
xiangjunn Nov 8, 2021
1b5794a
Update gordon25.md
Gordon25 Nov 8, 2021
433ee45
Update gordon25.md
Gordon25 Nov 8, 2021
3a6a915
Update gordon25.md
Gordon25 Nov 8, 2021
510881f
Update gordon25.md
Gordon25 Nov 8, 2021
bed1ca1
update manual testing
pcgiang Nov 8, 2021
c0d70c5
Update gordon25.md
Gordon25 Nov 8, 2021
94770ea
fix styling
pcgiang Nov 8, 2021
5bc11f6
Update gordon25.md
Gordon25 Nov 8, 2021
a26dc4a
make styling more consistent
pcgiang Nov 8, 2021
24f46f8
Update images
xiangjunn Nov 8, 2021
62bf89f
Fix navigation bug
xiangjunn Nov 8, 2021
88e6a28
add more manual test cases
pcgiang Nov 8, 2021
ce55d9b
Fix bugs found
xiangjunn Nov 8, 2021
1bffd07
Merge pull request #239 from xiangjunn/update-ppp-xiangjun
chunweii Nov 8, 2021
f931a72
Improve user guide
xiangjunn Nov 8, 2021
90ca76c
add gui manual test case
pcgiang Nov 8, 2021
281e8d2
update gui manual test
pcgiang Nov 8, 2021
dfa2672
update uml diagrams
pcgiang Nov 8, 2021
f247bde
update link test case
pcgiang Nov 8, 2021
45bd250
Merge branch 'master' into ppp-gordon
Gordon25 Nov 8, 2021
61955e5
Merge branch 'master' into dg-chunwei
chunweii Nov 8, 2021
c5c797b
Merge pull request #217 from chunweii/dg-chunwei
xiangjunn Nov 8, 2021
e52afcf
Merge branch 'master' into ppp-gordon
Gordon25 Nov 8, 2021
18e32f2
update ppp
pcgiang Nov 8, 2021
ae9b9fd
Merge branch 'master' into giang-ppp
pcgiang Nov 8, 2021
a354911
Merge pull request #235 from Gordon25/ppp-gordon
pcgiang Nov 8, 2021
8a89a45
Merge branch 'master' into giang-ppp
pcgiang Nov 8, 2021
a32168e
Add eunlink cunmark screenshots
janjanchen Nov 8, 2021
42b50c4
update link for user guide
pcgiang Nov 8, 2021
14b93a3
Update gordon25.md
Gordon25 Nov 8, 2021
a32510a
Update PPP
chunweii Nov 8, 2021
8cb34bf
Update gordon25.md
Gordon25 Nov 8, 2021
092279b
update link to quick start
pcgiang Nov 8, 2021
424683b
Merge branch 'master' into ppp-chunwei
chunweii Nov 8, 2021
4378f11
Merge pull request #240 from AY2122S1-CS2103T-W15-3/giang-ppp
chunweii Nov 8, 2021
4594a93
Merge branch 'master' into ppp-gordon
chunweii Nov 8, 2021
c516888
update PPP
janjanchen Nov 8, 2021
576de35
Merge pull request #241 from Gordon25/ppp-gordon
chunweii Nov 8, 2021
c873648
Merge branch 'master' into ppp-chunwei
chunweii Nov 8, 2021
307724e
update links
janjanchen Nov 8, 2021
67d6afd
Merge remote-tracking branch 'upstream/master' into ug-final-v1.4
chunweii Nov 8, 2021
5d5dd81
Merge branch 'master' into update-ppp-xiangjun
xiangjunn Nov 8, 2021
3d84fd7
Add better model class diagram
chunweii Nov 8, 2021
0733716
Merge pull request #236 from AY2122S1-CS2103T-W15-3/ug-final-v1.4
pcgiang Nov 8, 2021
02b2eee
Merge remote-tracking branch 'upstream/master' into ppp-chunwei
chunweii Nov 8, 2021
6b64f0d
update ppp
xiangjunn Nov 8, 2021
23f2214
Merge branch 'master' into ppp-janice
janjanchen Nov 8, 2021
51d9272
Merge branch 'master' into ppp-janice
chunweii Nov 8, 2021
2650124
Update UG contributions
chunweii Nov 8, 2021
2126619
update links
janjanchen Nov 8, 2021
8c437d4
Merge pull request #243 from AY2122S1-CS2103T-W15-3/ppp-janice
chunweii Nov 8, 2021
72891bd
added PR
janjanchen Nov 8, 2021
71c1831
Merge branch 'master' into ppp-janice
janjanchen Nov 8, 2021
01c73d5
Fix hyperlinks
chunweii Nov 8, 2021
a8b673f
Merge pull request #246 from AY2122S1-CS2103T-W15-3/ug-final-v1.4
xiangjunn Nov 8, 2021
16c650c
Merge branch 'master' into ppp-janice
pcgiang Nov 8, 2021
ed50e0b
Merge pull request #245 from AY2122S1-CS2103T-W15-3/ppp-janice
xiangjunn Nov 8, 2021
cc0d4f1
Merge branch 'master' into ppp-chunwei
chunweii Nov 8, 2021
2d21a5b
Merge pull request #242 from chunweii/ppp-chunwei
xiangjunn Nov 8, 2021
c8adc94
Merge branch 'master' into update-ppp-xiangjun
xiangjunn Nov 8, 2021
954412e
Merge pull request #244 from xiangjunn/update-ppp-xiangjun
chunweii Nov 8, 2021
fb41732
add acknowledgement for helpWindow text wrapping
janjanchen Nov 9, 2021
22b48e0
Merge pull request #247 from AY2122S1-CS2103T-W15-3/janice-acknowledg…
chunweii Nov 9, 2021
d245531
Add author tags in UG
Gordon25 Nov 27, 2021
4065678
Add author tags to claim changes in rebased commit
Gordon25 Nov 28, 2021
a75faf4
Edit author tags
Gordon25 Nov 28, 2021
f31f416
Remove author tag
Gordon25 Nov 28, 2021
16d0056
Finalise author tags
Gordon25 Nov 28, 2021
32ba971
Add closing tag
Gordon25 Nov 28, 2021
40480bf
Merge branch 'master' into add-author-tag
Gordon25 Nov 28, 2021
3c98868
Restore whitespace
Gordon25 Nov 28, 2021
d54a868
Restore whitespace after menu bar
Gordon25 Nov 28, 2021
a9a8dbf
Merge branch 'add-author-tag' of https://github.com/AY2122S1-CS2103T-…
Gordon25 Nov 28, 2021
2636964
Remove indentation
Gordon25 Nov 28, 2021
b474c59
Merge pull request #250 from AY2122S1-CS2103T-W15-3/add-author-tag
janjanchen Nov 28, 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
Prev Previous commit
Next Next commit
Update DG
Gordon25 authored Nov 7, 2021

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 5aca5e83a4eff50405336101afe424a687eba785
131 changes: 131 additions & 0 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
@@ -181,6 +181,137 @@ Classes used by multiple components are in the `seedu.addressbook.commons` packa

This section describes some noteworthy details on how certain features are implemented.


## Mark Contacts feature

This section details how the `cmark` command is implemented. This command allows the user to mark freuquently used contacts, with the added feature of allowing the user to specify **more than one** contacts to mark. The marked contacts will appear at the **top** of the contact list and in **reverse order** in which their corresponding indexes are specified.

#### Implementation

Both `CMarkCommandParser` and `CMarkCommand` classes are involved in the execution of the `cmark` command.

The `parse` method inside the `CMarkCommandParser` receives the user input, extracts the required index(es). It then creates a new List of `Index`(es) objects that will encapsulate the indexes of the contacts to be marked.

<div markdown="span" class="alert alert-primary">
:bulb: **Tip:** If the argument is empty or contains invalid values, `CMarkCommandParser#parse` throws a ParseException.
</div>

`CMarkCommandParser#parse` method will then return an `CMarkCommand` with the given List of `Index` object.

Given below is one example usage scenario and explains how the `cmark` feature behaves at each step. You may also refer to the sequence diagram below.

Step 1. The user enters `cmark 1 2` to mark the first and second contact displayed in the contact list. The arguments `1 2` are passed to the `CMarkCommandParser` through the `parse` method call.

Step 2. The user input `1 2` will be subjected to checks by `String#trim` to ensure that argument provided is not empty. A list of `Index` object is created from the argument using `Parserutil#parseMarkIndexes`. Examples of incorrect arguments include `` or `a @`.

Step 3. A List of `Index` object is created based on the input arguments.
* From this example, the List of `Indexes` created will contain element two elements both of which are `Indexes` and contains the integer value `1` and `2` respectively.

Step 4. A new `CMarkCommand` object is returned to the `LogicManager`.

Step 5. During the execution of the command, the `CMarkCommand` object gets the `filteredContactList` in the `Model` and gets the relevant contacts using the object created in step 3. For each contact identified, the command will check if the contact is originally marked, if so it will generate a message saying the particular contact is already marked. Otherwise, a new marked `Contact` containing the same details as the original contact is created and replaces the original contact in the `Model`. Thereafter, the list of contact in the model is rearranged using `Model#rearrangeContactsInOrder`, which will cause newly marked contacts to be placed at the top of the contact list.

Step 6. A `CommandResult` with all newly marked contacts is returned and will be displayed to the user.

#### Sequence Diagram

The following sequence diagram shows how the `elist` feature works for the example:

//![CMarkSequenceDiagram](images/CMarkSequenceDiagram.png)

#### Activity Diagram

The following activity diagram summarizes what happens when the `cmark` feature is triggered:

//![CMarkActivityDiagram](images/CMarkActivityDiagram.png)

#### Design Considerations

**Aspect: Marking of contacts:**

* **Alternative implementation 1:** Not have command to mark contacts (current).
* Pros: No need to implement this command and the corresponding parser, code base is prone to bugs.
* Cons: User may have to scroll through or use `cfind` command to refer to contact(s) used frequently.
* **Alternative implementation 2 (current choice):** CMarkCommand that does not place newly marked contacts at the top of the list.
* Pros: Easier to implement as there is no need to keep track of which contacts are marked and the order in which they are marked.
* Cons: While user can more easily find marked contacts than in the first alternative, they still have to scroll through the entire contact list to find the marked contact(s).

**Aspect: Allowing users to specify more than one index:**

* **Alternative implementation 1:** Not allowing users to specify more than one index.
* Pros: Easier to implement as there is no need to keep track of the order in which the indexes are specified.
* Cons: User may have to scroll through or use `cmark` command to mark multiple contact(s).
* **Alternative implementation 2 (current choice):** Allowing users to specify more than one index.
* Pros: Command is more efficient as users can mark more than one contact at the same time.
* Cons: Harder to implement as more code is needed to facilitate the marking of multiple contacts in the correct order.


## Unmark Contacts feature

This section details how the `cunmark` command is implemented. This command allows the user to unmark marked contacts, with the added feature of allowing the user to specify **more than one** contacts to unmark. The marked contacts will appear after all marked contacts and **in order** in which their corresponding indexes are specified.

#### Implementation

Both `CUnmarkCommandParser` and `CUnmarkCommand` classes are involved in the execution of the `cunmark` command.

The `parse` method inside the `CUnmarkCommandParser` receives the user input, extracts the required index(es). It then creates a new List of `Index`(es) objects that will encapsulate the indexes of the marked contacts to be unmarked.

<div markdown="span" class="alert alert-primary">
:bulb: **Tip:** If the argument is empty or contains invalid values, `CUnmarkCommandParser#parse` throws a ParseException.
</div>

`CUnmarkCommandParser#parse` method will then return an `CUnmarkCommand` with the given List of `Index` object.

Given below is one example usage scenario and explains how the `cunmark` feature behaves at each step. You may also refer to the sequence diagram below.

Step 1. The user enters `cunmark 4 5` to mark the fourth and fifth ***marked** contact displayed in the contact list. The arguments `4 5` are passed to the `CUnmarkCommandParser` through the `parse` method call.

Step 2. The user input `4 5` will be subjected to checks by `String#trim` to ensure that argument provided is not empty. `Parserutil#parseMarkIndexes` is used to create the list of `Index` from the argument. Examples of incorrect arguments include `` or `a @`.

Step 3. A List of `Index` object is created based on the input arguments.
* From this example, the List of `Indexes` created will contain element two elements both of which are `Indexes` and contains the integer value `4` and `5` respectively.

Step 4. A new `CUnmarkCommand` object is returned to the `LogicManager`.

Step 5. During the execution of the command, the `CUnmarkCommand` object retrives the `filteredContactList` in the `Model` and get the relevant contacts using the object created in step 3. For each contact identified, the command will check if the contact is not marked, if so a message saying the contact is not marked will be generated. Otherwise, a new unmarked `Contact` object containing the same details as the original contact is created and replaces the original contact in `Model`. Thereafter, the list of contact in the model is rearranged using `Model#rearrangeContactsInOrder`, which will cause newly unmarked contacts to be placed below all marked contacts in the contact list.

Step 6. A `CommandResult` with all newly unmarked contacts is returned and will be displayed to the user.

#### Sequence Diagram

The following sequence diagram shows how the `elist` feature works for the example:

//![CUnmarkSequenceDiagram](images/CUnmarkSequenceDiagram.png)

#### Activity Diagram

The following activity diagram summarizes what happens when the `cmark` feature is triggered:

//![CUnmarkActivityDiagram](images/CUnmarkActivityDiagram.png)

#### Design Considerations

**Aspect: Marking of contacts:**

* **Alternative implementation 1:** Not have command to unmark contacts (current).
* Pros: No need to implement this command and the corresponding parser, code base is prone to bugs.
* Cons: The list of marked contacts may grow and become to large for user to meaningfully use.
* **Alternative implementation 2 (current choice):** CMarkCommand that does not replace newly unmarked contacts after all marked contacts.
* Pros: Easier to implement as there is no need to keep track of which the newly unmarked contacts.
* Cons: The marked contacts will no longer be at the top of the contact list, users would still have to scroll through the entire list of unmark and marked contacts to find a specific marked contact(s).


**Aspect: Whether to allow users to specify more than one index:**

* **Alternative implementation 1:** Only allow users to specify one `Index`.
* Pros: Easy to implement as the newly marked contacts is simply removed and added after all marked contacts.
* Cons: The user may want to unmark multiple contacts, which result in calling `cunmark` command multiple times.

* **Alternative implementation 2 (current choice):** Allow users to specify one or more `Index`(es).
* Pros: This command is more efficient, users can now unmark more than one contacts at the same time, saving time from having to call `cunmark` repeatedly.
* Cons: More code will have to be written in order to facilitate unmarking multiple contacts and ensuring they are rearranged in the correct order.


### Delete Events feature

This section details how an `Event` or multiple `Event` objects are deleted using the `edelete` command.