@startuml
!include style.puml
skinparam ArrowFontStyle plain

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR
participant ":ShowCommandParser" as ShowCommandParser LOGIC_COLOR
participant "d:ShowCommand" as ShowCommand LOGIC_COLOR
participant ":CommandResult" as CommandResult LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
end box

box UI UI_COLOR_T1
participant ":UI" as UI MODEL_COLOR
end box

[-> LogicManager : execute("show 1")
activate LogicManager

LogicManager -> AddressBookParser : parseCommand("show 1")
activate AddressBookParser

create ShowCommandParser
AddressBookParser -> ShowCommandParser
activate ShowCommandParser

ShowCommandParser --> AddressBookParser
deactivate ShowCommandParser

AddressBookParser -> ShowCommandParser : parse("1")
activate ShowCommandParser

create ShowCommand
ShowCommandParser -> ShowCommand
activate ShowCommand

ShowCommand --> ShowCommandParser : d
deactivate ShowCommand

ShowCommandParser --> AddressBookParser : d
deactivate ShowCommandParser
'Hidden arrow to position the destroy marker below the end of the activation bar.
ShowCommandParser -[hidden]-> AddressBookParser
destroy ShowCommandParser

AddressBookParser --> LogicManager : d
deactivate AddressBookParser

LogicManager -> ShowCommand : execute()
activate ShowCommand

ShowCommand -> Model : showPerson(1)
activate Model

Model -> UI : showPersonDetails(1)
activate UI

UI --> Model
deactivate UI

Model --> ShowCommand
deactivate Model

create CommandResult
ShowCommand -> CommandResult
activate CommandResult

CommandResult --> ShowCommand
deactivate CommandResult

ShowCommand --> LogicManager : result
deactivate ShowCommand

[<--LogicManager
deactivate LogicManager
@enduml
