@startuml
!include style.puml
skinparam arrowThickness 1.1
skinparam arrowColor UI_COLOR_T4
skinparam classBackgroundColor UI_COLOR

package UI <<Rectangle>>{
Interface Ui <<Interface>>
Class "{abstract}\nUiPart" as UiPart
Class UiManager
Class MainWindow
Class HelpWindow
Class ResultDisplay
Class CustomerCard
Class CustomerListPanel
Class OrderCard
Class OrderListPanel
Class ArchivedOrderListPanel
Class PhoneCard
Class PhoneListPanel

Class CalendarPanel
Class StatusBarFooter
Class CommandBox
Class TabPanel
Class StatisticWindow
Class DefaultStatisticWindow
}

package Model <<Rectangle>> {
Class HiddenModel #FFFFFF
}

package Logic <<Rectangle>> {
Class HiddenLogic #FFFFFF
}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Ui

UiManager .left.|> Ui
UiManager -down-> MainWindow
MainWindow --> HelpWindow
MainWindow -----> StatisticWindow
MainWindow -right--> DefaultStatisticWindow
MainWindow *-down-> CommandBox
MainWindow *-down-> ResultDisplay
MainWindow *-down-> TabPanel
MainWindow *-down-> StatusBarFooter


TabPanel *-down-> CustomerListPanel
TabPanel *-down-> PhoneListPanel
TabPanel *-down-> ArchivedOrderListPanel
TabPanel *-down-> OrderListPanel
TabPanel *-down-> CalendarPanel

CustomerListPanel -down-> CustomerCard
PhoneListPanel -down-> PhoneCard
ArchivedOrderListPanel -down->OrderCard
OrderListPanel -down-> OrderCard

MainWindow -left-|> UiPart

ResultDisplay --|> UiPart
CommandBox --|> UiPart

StatusBarFooter --|> UiPart
HelpWindow -down-|> UiPart

UiManager -right-> Logic
MainWindow -right-> Logic

CustomerListPanel ----|> UiPart
PhoneListPanel ----|> UiPart
OrderListPanel----|> UiPart
CalendarPanel ----|> UiPart
StatisticWindow ----|> UiPart
DefaultStatisticWindow ----|> UiPart
CustomerCard -down-|> UiPart
PhoneCard -down-|> UiPart
OrderCard -down-|> UiPart

CustomerCard .right.> Model
PhoneCard .right.> Model
OrderCard .right.> Model
CalendarPanel .right.> Model

TabPanel -[hidden]left- HelpWindow
HelpWindow -[hidden]left- CommandBox
CommandBox -[hidden]left- ResultDisplay
ResultDisplay -[hidden]left- StatusBarFooter
StatisticWindow -[hidden]right- StatusBarFooter

MainWindow -[hidden]-|> UiPart
@enduml
