@startuml
!include style.puml
!define LOGIC_COLOR_T1 #7777DB

box UI UI_COLOR_T1
participant ":MainWindow" as MainWindow UI_COLOR
end box

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR
participant ":ListProcCommand" as ListProcCommand LOGIC_COLOR
end box

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

create MainWindow
activate MainWindow
[-> MainWindow
MainWindow -> MainWindow : executeCommand("listProc 1")

'LogicManager column'
activate LogicManager
MainWindow -> LogicManager : execute("listProc 1")
LogicManager -> AddressBookParser : parseCommand("listProc 1")

'ListProcCommand column'
LogicManager <-- AddressBookParser : listProcCommand
deactivate AddressBookParser

LogicManager -> ListProcCommand : execute()
activate ListProcCommand

ListProcCommand -> ModelManager : getFilteredClientList()
activate ModelManager
ListProcCommand <-- ModelManager : lastShownList
deactivate ModelManager

ListProcCommand -> ModelManager : setProcedures(targetClient)
activate ModelManager
deactivate ModelManager

ListProcCommand -> ModelManager : updateFilteredProcedureList\n(targetClient, predicate)
activate ModelManager
deactivate ModelManager

LogicManager <-- ListProcCommand
deactivate ListProcCommand

MainWindow <-- LogicManager
deactivate LogicManager

'updateUi self invocation from MainWindow'
MainWindow -> MainWindow : updateUi()
activate MainWindow
MainWindow --> MainWindow

'End of MainWindow'
deactivate MainWindow

@enduml
