diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 611b3455ebd..3d65905a853 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -26,12 +26,13 @@ Refer to the guide <>. === Architecture .Architecture Diagram -image::Architecture.png[width="600"] +image::ArchitectureDiagram.png[] The *_Architecture Diagram_* given above explains the high-level design of the App. Given below is a quick overview of each component. [TIP] -The `.pptx` files used to create diagrams in this document can be found in the link:{repoURL}/docs/diagrams/[diagrams] folder. To update a diagram, modify the diagram in the pptx file, select the objects of the diagram, and choose `Save as picture`. +The `.puml` files used to create diagrams in this document can be found in the link:{repoURL}/docs/diagrams/[diagrams] folder. +Refer to the <> to learn how to create and edit diagrams. `Main` has two classes called link:{repoURL}/src/main/java/seedu/address/Main.java[`Main`] and link:{repoURL}/src/main/java/seedu/address/MainApp.java[`MainApp`]. It is responsible for, @@ -58,7 +59,7 @@ Each of the four components For example, the `Logic` component (see the class diagram given below) defines it's API in the `Logic.java` interface and exposes its functionality using the `LogicManager.java` class. .Class Diagram of the Logic Component -image::LogicClassDiagram.png[width="800"] +image::LogicClassDiagram.png[] [discrete] ==== How the architecture components interact with each other @@ -66,7 +67,7 @@ image::LogicClassDiagram.png[width="800"] The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. .Component interactions for `delete 1` command -image::SDforDeletePerson.png[width="800"] +image::ArchitectureSequenceDiagram.png[] The sections below give more details of each component. @@ -74,7 +75,7 @@ The sections below give more details of each component. === UI component .Structure of the UI Component -image::UiClassDiagram.png[width="800"] +image::UiClassDiagram.png[] *API* : link:{repoURL}/src/main/java/seedu/address/ui/Ui.java[`Ui.java`] @@ -92,7 +93,7 @@ The `UI` component, [[fig-LogicClassDiagram]] .Structure of the Logic Component -image::LogicClassDiagram.png[width="800"] +image::LogicClassDiagram.png[] *API* : link:{repoURL}/src/main/java/seedu/address/logic/Logic.java[`Logic.java`] @@ -106,13 +107,15 @@ link:{repoURL}/src/main/java/seedu/address/logic/Logic.java[`Logic.java`] Given below is the Sequence Diagram for interactions within the `Logic` component for the `execute("delete 1")` API call. .Interactions Inside the Logic Component for the `delete 1` Command -image::DeletePersonSdForLogic.png[width="800"] +image::DeleteSequenceDiagram.png[] + +NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. [[Design-Model]] === Model component .Structure of the Model Component -image::ModelClassDiagram.png[width="800"] +image::ModelClassDiagram.png[] *API* : link:{repoURL}/src/main/java/seedu/address/model/Model.java[`Model.java`] @@ -126,13 +129,13 @@ The `Model`, [NOTE] As a more OOP model, we can store a `Tag` list in `Address Book`, which `Person` can reference. This would allow `Address Book` to only require one `Tag` object per unique `Tag`, instead of each `Person` needing their own `Tag` object. An example of how such a model may look like is given below. + + -image:ModelClassBetterOopDiagram.png[width="800"] +image:BetterModelClassDiagram.png[] [[Design-Storage]] === Storage component .Structure of the Storage Component -image::StorageClassDiagram.png[width="800"] +image::StorageClassDiagram.png[] *API* : link:{repoURL}/src/main/java/seedu/address/storage/Storage.java[`Storage.java`] @@ -168,29 +171,31 @@ Given below is an example usage scenario and how the undo/redo mechanism behaves Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. -image::UndoRedoStartingStateListDiagram.png[width="800"] +image::UndoRedoState0.png[] Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. -image::UndoRedoNewCommand1StateListDiagram.png[width="800"] +image::UndoRedoState1.png[] Step 3. The user executes `add n/David ...` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. -image::UndoRedoNewCommand2StateListDiagram.png[width="800"] +image::UndoRedoState2.png[] [NOTE] If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. -image::UndoRedoExecuteUndoStateListDiagram.png[width="800"] +image::UndoRedoState3.png[] [NOTE] If the `currentStatePointer` is at index 0, pointing to the initial address book state, then there are no previous address book states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the undo. The following sequence diagram shows how the undo operation works: -image::UndoRedoSequenceDiagram.png[width="800"] +image::UndoSequenceDiagram.png[] + +NOTE: The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. The `redo` command does the opposite -- it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. @@ -199,15 +204,15 @@ If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, poin Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. -image::UndoRedoNewCommand3StateListDiagram.png[width="800"] +image::UndoRedoState4.png[] Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. We designed it this way because it no longer makes sense to redo the `add n/David ...` command. This is the behavior that most modern desktop applications follow. -image::UndoRedoNewCommand4StateListDiagram.png[width="800"] +image::UndoRedoState5.png[] The following activity diagram summarizes what happens when a user executes a new command: -image::UndoRedoActivityDiagram.png[width="650"] +image::CommitActivityDiagram.png[] ==== Design Considerations diff --git a/docs/Documentation.adoc b/docs/Documentation.adoc index 0c3f4f56eb5..ad90ac87bda 100644 --- a/docs/Documentation.adoc +++ b/docs/Documentation.adoc @@ -26,6 +26,10 @@ We chose asciidoc over Markdown because asciidoc, although a bit more complex th See <> to learn how to render `.adoc` files locally to preview the end result of your edits. Alternatively, you can download the AsciiDoc plugin for IntelliJ, which allows you to preview the changes you have made to your `.adoc` files in real-time. +== Editing Diagrams + +See <> to find out how to create and update the UML diagrams in the developer guide. + == Publishing Documentation See <> to learn how to deploy GitHub Pages using Travis. diff --git a/docs/UsingPlantUml.adoc b/docs/UsingPlantUml.adoc new file mode 100644 index 00000000000..cfe2533ea84 --- /dev/null +++ b/docs/UsingPlantUml.adoc @@ -0,0 +1,211 @@ += Using PlantUML +:site-section: DeveloperGuide +:imagesDir: images/plantuml +:stylesDir: stylesheets +:experimental: +ifdef::env-github[] +:tip-caption: :bulb: +:note-caption: :information_source: +endif::[] + +== Introduction to PlantUML + +PlantUML is a tool used in this project to create UML diagrams. +For more information about the basics of PlantUML, head over to http://plantuml.com/[its official website]. + +== Set up PlantUML + +=== Installing Graphviz + +Graphviz is a dependency that PlantUML requires to generate more advanced diagrams. +Head over to the https://www.graphviz.org/download/[downloads page] on the official Graphviz website and follow instructions to install Graphviz. + +=== Installing the `PlantUML integration` plugin for IntelliJ IDEA + +Go to `Settings` > `Plugins` > `Marketplace` and install the plugin `PlantUML integration`. + +Then go to `Settings` > `Other Settings` > `PlantUML` or search for PlantUML. +Configure the path to the `dot` executable. +This executable can be found in the `/bin` directory where you installed GraphViz. + +.Settings - Other Settings - PlantUML: input the path to your dot executable +image::ConfiguringGraphviz.png[] + +== Create/Edit PlantUML diagrams + +After installing the `PlantUML integration` plugin, simply create or open any `.puml` file to start editing it. + +.Editing `DeleteSequenceDiagram.puml` +image::EditingDeleteSequenceDiagram.png[] +Any changes you make in editor pane on the left will be reflected in the preview pane on the right. +However, do take note that these changes _will not_ be reflected in the developers guide until you export the diagram. +//TODO: Discussion about why we're not using asciidoctor-diagram + +== Export PlantUML diagrams + +The `PlantUML integration` plugin allows you to export individual diagrams to a location of your choosing. +Click the `Save Current Diagram Only` button and choose the location to export the image file. + +NOTE: You will have to `git add` any new diagrams generated! + +== Common tasks + +=== Applying consistent formatting to PlantUML diagrams + +It is highly recommended to consistently color your UML diagrams as an visual aid. +You can achieve this by creating a dictionary of colors and import it like CSS. + +For example, you can create a `Style.puml` with the contents: + +.Style.puml +[source] +---- +... +!define LOGIC_COLOR #3333C4 +!define LOGIC_COLOR_T1 #7777DB +!define LOGIC_COLOR_T2 #5252CE +!define LOGIC_COLOR_T3 #1616B0 +!define LOGIC_COLOR_T4 #101086 +... +---- + +Then you can use it in another PlantUML file like this: + +.UndoSequenceDiagram.puml +[source] +---- +!include Style.puml + +box Logic LOGIC_COLOR_T2 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":UndoCommand" as UndoCommand LOGIC_COLOR +end box +---- + +You can fine-tune the formatting of PlantUML diagrams with the `skinparam` command. +For example, `skinparam backgroundColor transparent` turns the background of the diagram transparent. + +For a comprehensive list of ``skinparam``s head over to the https://plantuml-documentation.readthedocs.io/en/latest/[unofficial PlantUML skinparam documentation]. + +*** + +=== Repositioning elements in PlantUML diagrams + +While PlantUML's automatic layout engine usually produces satisfactory results, at times the result can be less than ideal, especially on larger diagrams. +Here is an example where the default layout generated by PlantUML has a lot of overlapping lines that are hard to decipher: + +.The UI class diagram without additional formatting +image::RawUiDiagram.png[] + +NOTE: In most cases, you should consider decomposing the diagram into smaller ones or focusing on a more specific portion of the diagram. + +Here are some of the techniques we used in this project to obtain a more palatable diagram. + +==== Link lengths +By default, a short link (`\->`) points to right and a long link (`-\->`) +points downwards. you can extend any link to make it longer (```--\->```). + +.Length of arrows and its effects +image::ArrowLength.png[] + +==== Link directions +Clever usage of arrow directions will resolve most layout issues. +For example, the table below shows how the way in which you specify arrows can results in drastically different layouts for the same diagram. + +.Link directions +[cols="40a,60a"] +|=== +|Source |Result + +|[source, puml] +---- +A --> Z +B --> Z +C --> Z +D --> Z + +A --> 1 +B --> 2 +C --> 3 +D --> 4 +---- +|image::AllDown.png[] + +|[source, puml] +---- +'default is down +A --> Z +'specify down +B -down-> Z +'shorthand for down +C -d-> Z +'arrow lengths take priority +D -down> Z + +A -up-> 1 +B -up-> 2 +C -up-> 3 +D -up-> 4 + +---- +|image::UpAndDown.png[] + +|[source, puml] +---- +A -up-> Z +B -up-> Z +C -up-> Z +D -up-> Z + +A --> 1 +B --> 2 +C --> 3 +D --> 4 + +'Force A B C D +A -right[hidden]- B +B -right[hidden]- C +C -right[hidden]- D +---- +|image::HiddenArrows.png[] +|=== + +==== Reordering definitions +As a general rule of thumb, the layout engine will attempt to order objects in the order in which they are defined. +If there is no formal definition, the objects is taken to be declared upon its first usage. + +.Definition ordering and outcomes +[cols="70a,30a"] +|=== +|Source |Result + +|[source, puml] +---- +A --> B +C --> D +---- +|image::ABeforeC.png[] + +|[source, puml] +---- +'Class C is defined before A +Class C + +A --> B +C --> D +---- +|image::CBeforeA.png[] + +|[source, puml] +---- +package "Rule Of Thumb"{ + Class C + A --> B + C --> D +} +---- +|image::PackagesAndConsistency.png[] +|=== + +TIP: Explicitly define all symbols to avoid any potential layout mishaps. diff --git a/docs/diagrams/Architecture.pptx b/docs/diagrams/Architecture.pptx deleted file mode 100644 index 7e0ed6f40f8..00000000000 Binary files a/docs/diagrams/Architecture.pptx and /dev/null differ diff --git a/docs/diagrams/ArchitectureDiagram.puml b/docs/diagrams/ArchitectureDiagram.puml new file mode 100644 index 00000000000..d021b3992ed --- /dev/null +++ b/docs/diagrams/ArchitectureDiagram.puml @@ -0,0 +1,42 @@ +@startuml +!include +!include +!include +!include style.puml + +Package " "<>{ + Class UI UI_COLOR + Class Logic LOGIC_COLOR + Class Storage STORAGE_COLOR + Class Model MODEL_COLOR + Class Main MODEL_COLOR_T1 + Class Commons LOGIC_COLOR_T2 + Class "Log Center" as Logs UI_COLOR_T2 + Class Hidden #FFFFFF + Class HiddenUI #FFFFFF + Class HiddenModel #FFFFFF + + +} +Class "<$user>" as User MODEL_COLOR_T2 +Class "<$documents>" as File UI_COLOR_T1 + + +HiddenUI -up[hidden]-> UI +HiddenModel -left[hidden]-> Model +Main -up-> HiddenUI +Main -left-> HiddenModel +UI -> Logic +UI -right-> Model +Logic -> Storage +Logic -down-> Model + +Logs -right- Commons +Hidden .down.> Commons +Hidden .down.> Commons +Hidden .down.> Commons + +Storage .right.>File +User --> UI +Main --> Hidden +@enduml diff --git a/docs/diagrams/ArchitectureSequenceDiagram.puml b/docs/diagrams/ArchitectureSequenceDiagram.puml new file mode 100644 index 00000000000..d1e2ae93675 --- /dev/null +++ b/docs/diagrams/ArchitectureSequenceDiagram.puml @@ -0,0 +1,37 @@ +@startuml +!include style.puml + +Actor User as user USER_COLOR +Participant ":UI" as ui UI_COLOR +Participant ":Logic" as logic LOGIC_COLOR +Participant ":Model" as model MODEL_COLOR +Participant ":Storage" as storage STORAGE_COLOR + +user -[USER_COLOR]> ui : "delete 1" +activate ui UI_COLOR + +ui -[UI_COLOR]> logic : execute("delete 1") +activate logic LOGIC_COLOR + +logic -[LOGIC_COLOR]> model : deletePerson(p) +activate model MODEL_COLOR + +model -[MODEL_COLOR]-> logic +deactivate model + +logic -[LOGIC_COLOR]> storage : saveAddressBook(addressBook) +activate storage STORAGE_COLOR + +storage -[STORAGE_COLOR]> storage : Save to file +activate storage STORAGE_COLOR_T1 +deactivate storage + +storage --[STORAGE_COLOR]> logic +deactivate storage + +logic --[LOGIC_COLOR]> ui +deactivate logic + +ui--[UI_COLOR]> user +deactivate ui +@enduml diff --git a/docs/diagrams/BetterModelClassDiagram.puml b/docs/diagrams/BetterModelClassDiagram.puml new file mode 100644 index 00000000000..7790472da52 --- /dev/null +++ b/docs/diagrams/BetterModelClassDiagram.puml @@ -0,0 +1,21 @@ +@startuml +!include style.puml +skinparam arrowThickness 1.1 +skinparam arrowColor MODEL_COLOR +skinparam classBackgroundColor MODEL_COLOR + +AddressBook *-right-> "1" UniquePersonList +AddressBook *-right-> "1" UniqueTagList +UniqueTagList -[hidden]down- UniquePersonList +UniqueTagList -[hidden]down- UniquePersonList + +UniqueTagList *-right-> "*" Tag +UniquePersonList o-right-> Person + +Person o-up-> "*" Tag + +Person *--> Name +Person *--> Phone +Person *--> Email +Person *--> Address +@enduml diff --git a/docs/diagrams/CommitActivityDiagram.puml b/docs/diagrams/CommitActivityDiagram.puml new file mode 100644 index 00000000000..7f8fe407f89 --- /dev/null +++ b/docs/diagrams/CommitActivityDiagram.puml @@ -0,0 +1,15 @@ +@startuml +start +:User executes command; + +'Since the beta syntax does not support placing the condition outside the +'diamond we place it as the true branch instead. + +if () then ([command commits AddressBook]) + :Purge redunant states; + :Save AddressBook to + addressBookStateList; +else ([else]) +endif +stop +@enduml diff --git a/docs/diagrams/DeletePersonSdForLogic.pptx b/docs/diagrams/DeletePersonSdForLogic.pptx deleted file mode 100644 index c5b6d5fad6e..00000000000 Binary files a/docs/diagrams/DeletePersonSdForLogic.pptx and /dev/null differ diff --git a/docs/diagrams/DeleteSequenceDiagram.puml b/docs/diagrams/DeleteSequenceDiagram.puml new file mode 100644 index 00000000000..1dc2311b245 --- /dev/null +++ b/docs/diagrams/DeleteSequenceDiagram.puml @@ -0,0 +1,69 @@ +@startuml +!include style.puml + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":DeleteCommandParser" as DeleteCommandParser LOGIC_COLOR +participant "d:DeleteCommand" as DeleteCommand LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +end box + +[-> LogicManager : execute("delete 1") +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand("delete 1") +activate AddressBookParser + +create DeleteCommandParser +AddressBookParser -> DeleteCommandParser +activate DeleteCommandParser + +DeleteCommandParser --> AddressBookParser +deactivate DeleteCommandParser + +AddressBookParser -> DeleteCommandParser : parse("1") +activate DeleteCommandParser + +create DeleteCommand +DeleteCommandParser -> DeleteCommand +activate DeleteCommand + +DeleteCommand --> DeleteCommandParser : d +deactivate DeleteCommand + +DeleteCommandParser --> AddressBookParser : d +deactivate DeleteCommandParser +'Hidden arrow to position the destroy marker below the end of the activation bar. +DeleteCommandParser -[hidden]-> AddressBookParser +destroy DeleteCommandParser + +AddressBookParser --> LogicManager : d +deactivate AddressBookParser + +LogicManager -> DeleteCommand : execute() +activate DeleteCommand + +DeleteCommand -> Model : deletePerson(1) +activate Model + +Model --> DeleteCommand +deactivate Model + +create CommandResult +DeleteCommand -> CommandResult +activate CommandResult + +CommandResult --> DeleteCommand +deactivate CommandResult + +DeleteCommand --> LogicManager : result +deactivate DeleteCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/diagrams/DependencyInjection.pptx b/docs/diagrams/DependencyInjection.pptx deleted file mode 100644 index d36e198ca8c..00000000000 Binary files a/docs/diagrams/DependencyInjection.pptx and /dev/null differ diff --git a/docs/diagrams/DependencyInjectionWithoutDIP.pptx b/docs/diagrams/DependencyInjectionWithoutDIP.pptx deleted file mode 100644 index c869a3fffe8..00000000000 Binary files a/docs/diagrams/DependencyInjectionWithoutDIP.pptx and /dev/null differ diff --git a/docs/diagrams/LogicClassDiagram.pptx b/docs/diagrams/LogicClassDiagram.pptx deleted file mode 100644 index 9e7c3a70cdb..00000000000 Binary files a/docs/diagrams/LogicClassDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/LogicClassDiagram.puml b/docs/diagrams/LogicClassDiagram.puml new file mode 100644 index 00000000000..016ef33e2e2 --- /dev/null +++ b/docs/diagrams/LogicClassDiagram.puml @@ -0,0 +1,62 @@ +@startuml +!include style.puml +skinparam arrowThickness 1.1 +skinparam arrowColor LOGIC_COLOR_T4 +skinparam classBackgroundColor LOGIC_COLOR + +package Logic { + +package Parser { +Interface Parser <> +Class AddressBookParser +Class XYZCommandParser +Class CliSyntax +Class ParserUtil +Class ArgumentMultimap +Class ArgumentTokenizer +Class Prefix +} + +package Command { +Class XYZCommand +Class CommandResult +Class "{abstract}\nCommand" as Command +} + +Interface Logic <> +Class LogicManager +} + +package Model{ +Class HiddenModel #FFFFFF +} + +Class HiddenOutside #FFFFFF +HiddenOutside ..> Logic + +LogicManager .up.|> Logic +LogicManager -->"1" AddressBookParser +AddressBookParser .left.> XYZCommandParser: creates > + +XYZCommandParser ..> XYZCommand : creates > +XYZCommandParser ..|> Parser +XYZCommandParser ..> ArgumentMultimap +XYZCommandParser ..> ArgumentTokenizer +ArgumentTokenizer .left.> ArgumentMultimap +XYZCommandParser ..> CliSyntax +CliSyntax ..> Prefix +XYZCommandParser ..> ParserUtil +ParserUtil .down.> Prefix +ArgumentTokenizer .down.> Prefix +XYZCommand -up-|> Command +LogicManager .left.> Command : executes > + +LogicManager --> Model +Command .right.> Model +note right of XYZCommand: XYZCommand = AddCommand, \nFindCommand, etc + +Logic ..> CommandResult +LogicManager .down.> CommandResult +Command .up.> CommandResult +CommandResult -[hidden]-> Parser +@enduml diff --git a/docs/diagrams/LogicStorageDIP.pptx b/docs/diagrams/LogicStorageDIP.pptx deleted file mode 100755 index 4968756b322..00000000000 Binary files a/docs/diagrams/LogicStorageDIP.pptx and /dev/null differ diff --git a/docs/diagrams/ModelClassBetterOopDiagram.pptx b/docs/diagrams/ModelClassBetterOopDiagram.pptx deleted file mode 100644 index f26416dd8e1..00000000000 Binary files a/docs/diagrams/ModelClassBetterOopDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/ModelClassDiagram.pptx b/docs/diagrams/ModelClassDiagram.pptx deleted file mode 100644 index 92f5df517d2..00000000000 Binary files a/docs/diagrams/ModelClassDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/ModelClassDiagram.puml b/docs/diagrams/ModelClassDiagram.puml new file mode 100644 index 00000000000..e85a00d4107 --- /dev/null +++ b/docs/diagrams/ModelClassDiagram.puml @@ -0,0 +1,56 @@ +@startuml +!include style.puml +skinparam arrowThickness 1.1 +skinparam arrowColor MODEL_COLOR +skinparam classBackgroundColor MODEL_COLOR + +Package Model <>{ +Interface ReadOnlyAddressBook <> +Interface Model <> +Interface ObservableList <> +Class AddressBook +Class ReadOnlyAddressBook +Class Model +Class ModelManager +Class UserPrefs +Class ReadOnlyUserPrefs + +Package Person { +Class Person +Class Address +Class Email +Class Name +Class Phone +Class UniquePersonList +} + +Package Tag { +Class Tag +} +} + +Class HiddenOutside #FFFFFF +HiddenOutside ..> Model + +AddressBook .up.|> ReadOnlyAddressBook + +ModelManager .up.|> Model +Model .right.> ObservableList +ModelManager o--> "1" AddressBook +ModelManager o-left-> "1" UserPrefs +UserPrefs .up.|> ReadOnlyUserPrefs + +AddressBook *--> "1" UniquePersonList +UniquePersonList o--> "*" Person +Person *--> Name +Person *--> Phone +Person *--> Email +Person *--> Address +Person *--> "*" Tag + +Name -[hidden]right-> Phone +Phone -[hidden]right-> Address +Address -[hidden]right-> Email + +ModelManager -->"1" Person : filtered list +@enduml diff --git a/docs/diagrams/PrintableInterface.pptx b/docs/diagrams/PrintableInterface.pptx deleted file mode 100755 index c81120f19a2..00000000000 Binary files a/docs/diagrams/PrintableInterface.pptx and /dev/null differ diff --git a/docs/diagrams/ReadOnlyAddressBookUsage.pptx b/docs/diagrams/ReadOnlyAddressBookUsage.pptx deleted file mode 100755 index 002adf77ae0..00000000000 Binary files a/docs/diagrams/ReadOnlyAddressBookUsage.pptx and /dev/null differ diff --git a/docs/diagrams/SDforDeletePerson.pptx b/docs/diagrams/SDforDeletePerson.pptx deleted file mode 100644 index 410277bbd86..00000000000 Binary files a/docs/diagrams/SDforDeletePerson.pptx and /dev/null differ diff --git a/docs/diagrams/StorageClassDiagram.pptx b/docs/diagrams/StorageClassDiagram.pptx deleted file mode 100644 index 4afecd63e21..00000000000 Binary files a/docs/diagrams/StorageClassDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/StorageClassDiagram.puml b/docs/diagrams/StorageClassDiagram.puml new file mode 100644 index 00000000000..6adb2e156bf --- /dev/null +++ b/docs/diagrams/StorageClassDiagram.puml @@ -0,0 +1,24 @@ +@startuml +!include style.puml +skinparam arrowThickness 1.1 +skinparam arrowColor STORAGE_COLOR +skinparam classBackgroundColor STORAGE_COLOR + +Interface Storage <> +Interface UserPrefsStorage <> +Interface AddressBookStorage <> + +Class StorageManager +Class JsonUserPrefsStorage +Class JsonAddressBookStorage + +StorageManager .left.|> Storage +StorageManager o-right-> UserPrefsStorage +StorageManager o--> AddressBookStorage + +JsonUserPrefsStorage .left.|> UserPrefsStorage +JsonAddressBookStorage .left.|> AddressBookStorage +JsonAddressBookStorage .down.> JsonSerializableAddressBookStorage +JsonSerializableAddressBookStorage .right.> JsonSerializablePerson +JsonSerializablePerson .right.> JsonAdaptedTag +@enduml diff --git a/docs/diagrams/UiClassDiagram.pptx b/docs/diagrams/UiClassDiagram.pptx deleted file mode 100644 index 5a78f1e05b7..00000000000 Binary files a/docs/diagrams/UiClassDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UiClassDiagram.puml b/docs/diagrams/UiClassDiagram.puml new file mode 100644 index 00000000000..92746f9fcf7 --- /dev/null +++ b/docs/diagrams/UiClassDiagram.puml @@ -0,0 +1,60 @@ +@startuml +!include style.puml +skinparam arrowThickness 1.1 +skinparam arrowColor UI_COLOR_T4 +skinparam classBackgroundColor UI_COLOR + +package UI <>{ +Interface Ui <> +Class "{abstract}\nUiPart" as UiPart +Class UiManager +Class MainWindow +Class HelpWindow +Class ResultDisplay +Class PersonListPanel +Class PersonCard +Class StatusBarFooter +Class CommandBox +} + +package Model <> { +Class HiddenModel #FFFFFF +} + +package Logic <> { +Class HiddenLogic #FFFFFF +} + +Class HiddenOutside #FFFFFF +HiddenOutside ..> Ui + +UiManager .left.|> Ui +UiManager -down-> MainWindow +MainWindow --> HelpWindow +MainWindow *-down-> CommandBox +MainWindow *-down-> ResultDisplay +MainWindow *-down-> PersonListPanel +MainWindow *-down-> StatusBarFooter + +PersonListPanel -down-> PersonCard + +MainWindow -left-|> UiPart + +ResultDisplay --|> UiPart +CommandBox --|> UiPart +PersonListPanel --|> UiPart +PersonCard --|> UiPart +StatusBarFooter --|> UiPart +HelpWindow -down-|> UiPart + +PersonCard ..> Model +UiManager -right-> Logic +MainWindow -left-> Logic + +PersonListPanel -[hidden]left- HelpWindow +HelpWindow -[hidden]left- CommandBox +CommandBox -[hidden]left- ResultDisplay +ResultDisplay -[hidden]left- StatusBarFooter + +MainWindow -[hidden]-|> UiPart +@enduml diff --git a/docs/diagrams/UndoRedoActivityDiagram.pptx b/docs/diagrams/UndoRedoActivityDiagram.pptx deleted file mode 100644 index 16fec930cf3..00000000000 Binary files a/docs/diagrams/UndoRedoActivityDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoExecuteUndoStateListDiagram.pptx b/docs/diagrams/UndoRedoExecuteUndoStateListDiagram.pptx deleted file mode 100644 index 6fd31b5f3fb..00000000000 Binary files a/docs/diagrams/UndoRedoExecuteUndoStateListDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoNewCommand1StateListDiagram.pptx b/docs/diagrams/UndoRedoNewCommand1StateListDiagram.pptx deleted file mode 100644 index 1f3261976dc..00000000000 Binary files a/docs/diagrams/UndoRedoNewCommand1StateListDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoNewCommand2StateListDiagram.pptx b/docs/diagrams/UndoRedoNewCommand2StateListDiagram.pptx deleted file mode 100644 index e2907d4a9ca..00000000000 Binary files a/docs/diagrams/UndoRedoNewCommand2StateListDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoNewCommand3StateListDiagram.pptx b/docs/diagrams/UndoRedoNewCommand3StateListDiagram.pptx deleted file mode 100644 index 4ecc659bd60..00000000000 Binary files a/docs/diagrams/UndoRedoNewCommand3StateListDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoNewCommand4StateListDiagram.pptx b/docs/diagrams/UndoRedoNewCommand4StateListDiagram.pptx deleted file mode 100644 index 16ebf585ddb..00000000000 Binary files a/docs/diagrams/UndoRedoNewCommand4StateListDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoSequenceDiagram.pptx b/docs/diagrams/UndoRedoSequenceDiagram.pptx deleted file mode 100644 index 5ccc1042caa..00000000000 Binary files a/docs/diagrams/UndoRedoSequenceDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoStartingStateListDiagram.pptx b/docs/diagrams/UndoRedoStartingStateListDiagram.pptx deleted file mode 100644 index 98ce067642f..00000000000 Binary files a/docs/diagrams/UndoRedoStartingStateListDiagram.pptx and /dev/null differ diff --git a/docs/diagrams/UndoRedoState0.puml b/docs/diagrams/UndoRedoState0.puml new file mode 100644 index 00000000000..96e30744d24 --- /dev/null +++ b/docs/diagrams/UndoRedoState0.puml @@ -0,0 +1,20 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title Initial state + +package States { + class State1 as "__ab0:AddressBook__" + class State2 as "__ab1:AddressBook__" + class State3 as "__ab2:AddressBook__" +} +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 +hide State2 +hide State3 + +class Pointer as "Current State" #FFFFF +Pointer -up-> State1 +@end diff --git a/docs/diagrams/UndoRedoState1.puml b/docs/diagrams/UndoRedoState1.puml new file mode 100644 index 00000000000..01fcb9b2b96 --- /dev/null +++ b/docs/diagrams/UndoRedoState1.puml @@ -0,0 +1,22 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title After command "delete 5" + +package States <> { + class State1 as "__ab0:AddressBook__" + class State2 as "__ab1:AddressBook__" + class State3 as "__ab2:AddressBook__" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 + +hide State3 + +class Pointer as "Current State" #FFFFF + +Pointer -up-> State2 +@end diff --git a/docs/diagrams/UndoRedoState2.puml b/docs/diagrams/UndoRedoState2.puml new file mode 100644 index 00000000000..bccc230a5d1 --- /dev/null +++ b/docs/diagrams/UndoRedoState2.puml @@ -0,0 +1,20 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title After command "add n/David" + +package States <> { + class State1 as "__ab0:AddressBook__" + class State2 as "__ab1:AddressBook__" + class State3 as "__ab2:AddressBook__" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 + +class Pointer as "Current State" #FFFFF + +Pointer -up-> State3 +@end diff --git a/docs/diagrams/UndoRedoState3.puml b/docs/diagrams/UndoRedoState3.puml new file mode 100644 index 00000000000..ea29c9483e4 --- /dev/null +++ b/docs/diagrams/UndoRedoState3.puml @@ -0,0 +1,20 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title After command "undo" + +package States <> { + class State1 as "__ab0:AddressBook__" + class State2 as "__ab1:AddressBook__" + class State3 as "__ab2:AddressBook__" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 + +class Pointer as "Current State" #FFFFF + +Pointer -up-> State2 +@end diff --git a/docs/diagrams/UndoRedoState4.puml b/docs/diagrams/UndoRedoState4.puml new file mode 100644 index 00000000000..1b784cece80 --- /dev/null +++ b/docs/diagrams/UndoRedoState4.puml @@ -0,0 +1,20 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title After command "list" + +package States <> { + class State1 as "__ab0:AddressBook__" + class State2 as "__ab1:AddressBook__" + class State3 as "__ab2:AddressBook__" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 + +class Pointer as "Current State" #FFFFF + +Pointer -up-> State2 +@end diff --git a/docs/diagrams/UndoRedoState5.puml b/docs/diagrams/UndoRedoState5.puml new file mode 100644 index 00000000000..88927be32bc --- /dev/null +++ b/docs/diagrams/UndoRedoState5.puml @@ -0,0 +1,21 @@ +@startuml +!include style.puml +skinparam ClassFontColor #000000 +skinparam ClassBorderColor #000000 + +title After command "clear" + +package States <> { + class State1 as "__ab0:AddressBook__" + class State2 as "__ab1:AddressBook__" + class State3 as "__ab3:AddressBook__" +} + +State1 -[hidden]right-> State2 +State2 -[hidden]right-> State3 + +class Pointer as "Current State" #FFFFF + +Pointer -up-> State3 +note right on link: State ab2 deleted. +@end diff --git a/docs/diagrams/UndoSequenceDiagram.puml b/docs/diagrams/UndoSequenceDiagram.puml new file mode 100644 index 00000000000..410aab4e412 --- /dev/null +++ b/docs/diagrams/UndoSequenceDiagram.puml @@ -0,0 +1,53 @@ +@startuml +!include style.puml + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant "u:UndoCommand" as UndoCommand LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +participant ":VersionedAddressBook" as VersionedAddressBook MODEL_COLOR +end box +[-> LogicManager : execute(undo) +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand(undo) +activate AddressBookParser + +create UndoCommand +AddressBookParser -> UndoCommand +activate UndoCommand + +UndoCommand --> AddressBookParser +deactivate UndoCommand + +AddressBookParser --> LogicManager : u +deactivate AddressBookParser + +LogicManager -> UndoCommand : execute() +activate UndoCommand + +UndoCommand -> Model : undoAddressBook() +activate Model + +Model -> VersionedAddressBook : undo() +activate VersionedAddressBook + +VersionedAddressBook -> VersionedAddressBook :resetData(ReadOnlyAddressBook) +VersionedAddressBook --> Model : +deactivate VersionedAddressBook + +Model --> UndoCommand +deactivate Model + +UndoCommand --> LogicManager : result +deactivate UndoCommand +UndoCommand -[hidden]-> LogicManager : result +destroy UndoCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/diagrams/plantuml/AbeforeC.puml b/docs/diagrams/plantuml/AbeforeC.puml new file mode 100644 index 00000000000..b4c86d69e08 --- /dev/null +++ b/docs/diagrams/plantuml/AbeforeC.puml @@ -0,0 +1,11 @@ +@startuml +!include ../style.puml + +Class A LOGIC_COLOR_T3 +Class B LOGIC_COLOR_T3 +Class C UI_COLOR_T3 +Class D UI_COLOR_T3 + +A --> B +C --> D +@enduml diff --git a/docs/diagrams/plantuml/AllDown.puml b/docs/diagrams/plantuml/AllDown.puml new file mode 100644 index 00000000000..6eaf1c8bb00 --- /dev/null +++ b/docs/diagrams/plantuml/AllDown.puml @@ -0,0 +1,25 @@ +@startuml +!include ../style.puml + +Class A LOGIC_COLOR_T3 +Class B LOGIC_COLOR_T3 +Class C LOGIC_COLOR_T3 +Class D LOGIC_COLOR_T3 + +Class 1 MODEL_COLOR_T3 +Class 2 MODEL_COLOR_T3 +Class 3 MODEL_COLOR_T3 +Class 4 MODEL_COLOR_T3 + +Class Z UI_COLOR_T3 + +A --> Z +B --> Z +C --> Z +D --> Z + +A --> 1 +B --> 2 +C --> 3 +D --> 4 +@enduml diff --git a/docs/diagrams/plantuml/ArrowLength.puml b/docs/diagrams/plantuml/ArrowLength.puml new file mode 100644 index 00000000000..99c5abfe062 --- /dev/null +++ b/docs/diagrams/plantuml/ArrowLength.puml @@ -0,0 +1,27 @@ +@startuml +!include ../style.puml + +Package "Short\n->" { +Class A LOGIC_COLOR_T1 +Class B LOGIC_COLOR_T1 +A -> B +} + +Package "Long\n-->" { +Class C LOGIC_COLOR_T2 +Class D LOGIC_COLOR_T2 +C --> D +} + +Package "Longer\n--->" { +Class E LOGIC_COLOR_T3 +Class F LOGIC_COLOR_T3 +E ---> F +} + +Package "Even Longer\n---->" { +Class G LOGIC_COLOR_T4 +Class H LOGIC_COLOR_T4 +G ----> H +} +@enduml diff --git a/docs/diagrams/plantuml/CbeforeA.puml b/docs/diagrams/plantuml/CbeforeA.puml new file mode 100644 index 00000000000..87dbca3f199 --- /dev/null +++ b/docs/diagrams/plantuml/CbeforeA.puml @@ -0,0 +1,11 @@ +@startuml +!include ../style.puml + +Class C UI_COLOR_T3 +Class A LOGIC_COLOR_T3 +Class B LOGIC_COLOR_T3 +Class D UI_COLOR_T3 + +A --> B +C --> D +@enduml diff --git a/docs/diagrams/plantuml/HiddenArrows.puml b/docs/diagrams/plantuml/HiddenArrows.puml new file mode 100644 index 00000000000..c17ef6e4f13 --- /dev/null +++ b/docs/diagrams/plantuml/HiddenArrows.puml @@ -0,0 +1,30 @@ +@startuml +!include ../style.puml + +Class A LOGIC_COLOR_T3 +Class B LOGIC_COLOR_T3 +Class C LOGIC_COLOR_T3 +Class D LOGIC_COLOR_T3 + +Class 1 MODEL_COLOR_T3 +Class 2 MODEL_COLOR_T3 +Class 3 MODEL_COLOR_T3 +Class 4 MODEL_COLOR_T3 + +Class Z UI_COLOR_T3 + +A -up-> Z +B -up-> Z +C -up-> Z +D -up-> Z + +A --> 1 +B --> 2 +C --> 3 +D --> 4 + +'Force A B C D +A -right[hidden]- B +B -right[hidden]- C +C -right[hidden]- D +@enduml diff --git a/docs/diagrams/plantuml/PackagesAndConsistency.puml b/docs/diagrams/plantuml/PackagesAndConsistency.puml new file mode 100644 index 00000000000..6364eb5de03 --- /dev/null +++ b/docs/diagrams/plantuml/PackagesAndConsistency.puml @@ -0,0 +1,14 @@ +@startuml +!include ../style.puml + +package "Rule Of Thumb"{ + Class C UI_COLOR_T3 + Class D UI_COLOR_T3 + Class A LOGIC_COLOR_T3 + Class B LOGIC_COLOR_T3 + + A --> B + C --> D +} + +@enduml diff --git a/docs/diagrams/plantuml/UpAndDown.puml b/docs/diagrams/plantuml/UpAndDown.puml new file mode 100644 index 00000000000..e7a0313ad01 --- /dev/null +++ b/docs/diagrams/plantuml/UpAndDown.puml @@ -0,0 +1,29 @@ +@startuml +!include ../style.puml + +Class A LOGIC_COLOR_T3 +Class B LOGIC_COLOR_T3 +Class C LOGIC_COLOR_T3 +Class D LOGIC_COLOR_T3 + +Class 1 MODEL_COLOR_T3 +Class 2 MODEL_COLOR_T3 +Class 3 MODEL_COLOR_T3 +Class 4 MODEL_COLOR_T3 + +Class Z UI_COLOR_T3 + +'default is down +A --> Z +'specify down +B -down-> Z +'shorthand for down +C -d-> Z +'arrow lengths take priority +D -down> Z + +A -up-> 1 +B -up-> 2 +C -up-> 3 +D -up-> 4 +@enduml diff --git a/docs/diagrams/style.puml b/docs/diagrams/style.puml new file mode 100644 index 00000000000..fad8b0adeaa --- /dev/null +++ b/docs/diagrams/style.puml @@ -0,0 +1,75 @@ +/' + 'Commonly used styles and colors across diagrams. + 'Refer to https://plantuml-documentation.readthedocs.io/en/latest for a more + 'comprehensive list of skinparams. + '/ + + +'T1 through T4 are shades of the original color from lightest to darkest + +!define UI_COLOR #1D8900 +!define UI_COLOR_T1 #83E769 +!define UI_COLOR_T2 #3FC71B +!define UI_COLOR_T3 #166800 +!define UI_COLOR_T4 #0E4100 + +!define LOGIC_COLOR #3333C4 +!define LOGIC_COLOR_T1 #C8C8FA +!define LOGIC_COLOR_T2 #6A6ADC +!define LOGIC_COLOR_T3 #1616B0 +!define LOGIC_COLOR_T4 #101086 + +!define MODEL_COLOR #9D0012 +!define MODEL_COLOR_T1 #F97181 +!define MODEL_COLOR_T2 #E41F36 +!define MODEL_COLOR_T3 #7B000E +!define MODEL_COLOR_T4 #51000A + +!define STORAGE_COLOR #A38300 +!define STORAGE_COLOR_T1 #FFE374 +!define STORAGE_COLOR_T2 #EDC520 +!define STORAGE_COLOR_T3 #806600 +!define STORAGE_COLOR_T2 #544400 + +!define USER_COLOR #000000 + +skinparam BackgroundColor #FFFFFFF + +skinparam Shadowing false + +skinparam Class { + FontColor #FFFFFF + BorderThickness 1 + BorderColor #FFFFFF + StereotypeFontColor #FFFFFF + FontName Arial +} + +skinparam Actor { + BorderColor USER_COLOR + Color USER_COLOR + FontName Arial +} + +skinparam Sequence { + MessageAlign center + BoxFontSize 15 + BoxPadding 0 + BoxFontColor #FFFFFF + FontName Arial +} + +skinparam Participant { + FontColor #FFFFFFF + Padding 20 +} + +skinparam MinClassWidth 50 +skinparam ParticipantPadding 10 +skinparam Shadowing false +skinparam DefaultTextAlignment center +skinparam packageStyle Rectangle + +hide footbox +hide members +hide circle diff --git a/docs/images/Architecture.png b/docs/images/Architecture.png deleted file mode 100644 index 16ffb7f77b7..00000000000 Binary files a/docs/images/Architecture.png and /dev/null differ diff --git a/docs/images/ArchitectureDiagram.png b/docs/images/ArchitectureDiagram.png new file mode 100644 index 00000000000..aa2d337d932 Binary files /dev/null and b/docs/images/ArchitectureDiagram.png differ diff --git a/docs/images/ArchitectureSequenceDiagram.png b/docs/images/ArchitectureSequenceDiagram.png new file mode 100644 index 00000000000..aa198138f8f Binary files /dev/null and b/docs/images/ArchitectureSequenceDiagram.png differ diff --git a/docs/images/BetterModelClassDiagram.png b/docs/images/BetterModelClassDiagram.png new file mode 100644 index 00000000000..bc7ed18ae29 Binary files /dev/null and b/docs/images/BetterModelClassDiagram.png differ diff --git a/docs/images/CommitActivityDiagram.png b/docs/images/CommitActivityDiagram.png new file mode 100644 index 00000000000..4de4fa4bf2b Binary files /dev/null and b/docs/images/CommitActivityDiagram.png differ diff --git a/docs/images/DeletePersonSdForLogic.png b/docs/images/DeletePersonSdForLogic.png deleted file mode 100644 index 0462b9b7be6..00000000000 Binary files a/docs/images/DeletePersonSdForLogic.png and /dev/null differ diff --git a/docs/images/DeleteSequenceDiagram.png b/docs/images/DeleteSequenceDiagram.png new file mode 100644 index 00000000000..fa327b39618 Binary files /dev/null and b/docs/images/DeleteSequenceDiagram.png differ diff --git a/docs/images/LogicClassDiagram.png b/docs/images/LogicClassDiagram.png index dce88c11e48..b9e853cef12 100644 Binary files a/docs/images/LogicClassDiagram.png and b/docs/images/LogicClassDiagram.png differ diff --git a/docs/images/ModelClassBetterOopDiagram.png b/docs/images/ModelClassBetterOopDiagram.png deleted file mode 100644 index 9c788bee794..00000000000 Binary files a/docs/images/ModelClassBetterOopDiagram.png and /dev/null differ diff --git a/docs/images/ModelClassDiagram.png b/docs/images/ModelClassDiagram.png index 3a784055450..280064118cf 100644 Binary files a/docs/images/ModelClassDiagram.png and b/docs/images/ModelClassDiagram.png differ diff --git a/docs/images/SDforDeletePerson.png b/docs/images/SDforDeletePerson.png deleted file mode 100644 index ae171fda762..00000000000 Binary files a/docs/images/SDforDeletePerson.png and /dev/null differ diff --git a/docs/images/StorageClassDiagram.png b/docs/images/StorageClassDiagram.png index e5527ecac45..d87c1216820 100644 Binary files a/docs/images/StorageClassDiagram.png and b/docs/images/StorageClassDiagram.png differ diff --git a/docs/images/UiClassDiagram.png b/docs/images/UiClassDiagram.png index ebfeba4648f..7b4b3dbea45 100644 Binary files a/docs/images/UiClassDiagram.png and b/docs/images/UiClassDiagram.png differ diff --git a/docs/images/UndoRedoActivityDiagram.png b/docs/images/UndoRedoActivityDiagram.png deleted file mode 100644 index 55e4138cc64..00000000000 Binary files a/docs/images/UndoRedoActivityDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoExecuteUndoStateListDiagram.png b/docs/images/UndoRedoExecuteUndoStateListDiagram.png deleted file mode 100644 index 29c365d6b4a..00000000000 Binary files a/docs/images/UndoRedoExecuteUndoStateListDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoNewCommand1StateListDiagram.png b/docs/images/UndoRedoNewCommand1StateListDiagram.png deleted file mode 100644 index 76e661d6202..00000000000 Binary files a/docs/images/UndoRedoNewCommand1StateListDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoNewCommand2StateListDiagram.png b/docs/images/UndoRedoNewCommand2StateListDiagram.png deleted file mode 100644 index adcb9aeadc5..00000000000 Binary files a/docs/images/UndoRedoNewCommand2StateListDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoNewCommand3StateListDiagram.png b/docs/images/UndoRedoNewCommand3StateListDiagram.png deleted file mode 100644 index aac9c5fe05d..00000000000 Binary files a/docs/images/UndoRedoNewCommand3StateListDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoNewCommand4StateListDiagram.png b/docs/images/UndoRedoNewCommand4StateListDiagram.png deleted file mode 100644 index 66a0a3b5f32..00000000000 Binary files a/docs/images/UndoRedoNewCommand4StateListDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoSequenceDiagram.png b/docs/images/UndoRedoSequenceDiagram.png deleted file mode 100644 index 5c9d5936f09..00000000000 Binary files a/docs/images/UndoRedoSequenceDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoStartingStateListDiagram.png b/docs/images/UndoRedoStartingStateListDiagram.png deleted file mode 100644 index 002f3e2bbf7..00000000000 Binary files a/docs/images/UndoRedoStartingStateListDiagram.png and /dev/null differ diff --git a/docs/images/UndoRedoState0.png b/docs/images/UndoRedoState0.png new file mode 100644 index 00000000000..8f7538cd884 Binary files /dev/null and b/docs/images/UndoRedoState0.png differ diff --git a/docs/images/UndoRedoState1.png b/docs/images/UndoRedoState1.png new file mode 100644 index 00000000000..df9908d0948 Binary files /dev/null and b/docs/images/UndoRedoState1.png differ diff --git a/docs/images/UndoRedoState2.png b/docs/images/UndoRedoState2.png new file mode 100644 index 00000000000..36519c1015b Binary files /dev/null and b/docs/images/UndoRedoState2.png differ diff --git a/docs/images/UndoRedoState3.png b/docs/images/UndoRedoState3.png new file mode 100644 index 00000000000..19959d01712 Binary files /dev/null and b/docs/images/UndoRedoState3.png differ diff --git a/docs/images/UndoRedoState4.png b/docs/images/UndoRedoState4.png new file mode 100644 index 00000000000..4c623e4f2c5 Binary files /dev/null and b/docs/images/UndoRedoState4.png differ diff --git a/docs/images/UndoRedoState5.png b/docs/images/UndoRedoState5.png new file mode 100644 index 00000000000..84ad2afa6bd Binary files /dev/null and b/docs/images/UndoRedoState5.png differ diff --git a/docs/images/UndoSequenceDiagram.png b/docs/images/UndoSequenceDiagram.png new file mode 100644 index 00000000000..6addcd3a8d9 Binary files /dev/null and b/docs/images/UndoSequenceDiagram.png differ diff --git a/docs/images/plantuml/ABeforeC.png b/docs/images/plantuml/ABeforeC.png new file mode 100644 index 00000000000..39f28934ad5 Binary files /dev/null and b/docs/images/plantuml/ABeforeC.png differ diff --git a/docs/images/plantuml/AllDown.png b/docs/images/plantuml/AllDown.png new file mode 100644 index 00000000000..a922ed70173 Binary files /dev/null and b/docs/images/plantuml/AllDown.png differ diff --git a/docs/images/plantuml/ArrowLength.png b/docs/images/plantuml/ArrowLength.png new file mode 100644 index 00000000000..01befd58ee5 Binary files /dev/null and b/docs/images/plantuml/ArrowLength.png differ diff --git a/docs/images/plantuml/CBeforeA.png b/docs/images/plantuml/CBeforeA.png new file mode 100644 index 00000000000..b4157db03e8 Binary files /dev/null and b/docs/images/plantuml/CBeforeA.png differ diff --git a/docs/images/plantuml/ConfiguringGraphviz.png b/docs/images/plantuml/ConfiguringGraphviz.png new file mode 100644 index 00000000000..19a9cdb23d6 Binary files /dev/null and b/docs/images/plantuml/ConfiguringGraphviz.png differ diff --git a/docs/images/plantuml/EditingDeleteSequenceDiagram.png b/docs/images/plantuml/EditingDeleteSequenceDiagram.png new file mode 100644 index 00000000000..88e90d4269b Binary files /dev/null and b/docs/images/plantuml/EditingDeleteSequenceDiagram.png differ diff --git a/docs/images/plantuml/HiddenArrows.png b/docs/images/plantuml/HiddenArrows.png new file mode 100644 index 00000000000..43c138a8bbf Binary files /dev/null and b/docs/images/plantuml/HiddenArrows.png differ diff --git a/docs/images/plantuml/PackagesAndConsistency.png b/docs/images/plantuml/PackagesAndConsistency.png new file mode 100644 index 00000000000..28b9787d170 Binary files /dev/null and b/docs/images/plantuml/PackagesAndConsistency.png differ diff --git a/docs/images/plantuml/RawUiDiagram.png b/docs/images/plantuml/RawUiDiagram.png new file mode 100644 index 00000000000..b7f3cbe55e3 Binary files /dev/null and b/docs/images/plantuml/RawUiDiagram.png differ diff --git a/docs/images/plantuml/UpAndDown.png b/docs/images/plantuml/UpAndDown.png new file mode 100644 index 00000000000..b60d53a0258 Binary files /dev/null and b/docs/images/plantuml/UpAndDown.png differ