@startuml

actor User 
participant UserAgent
participant Os
participant DatabaseManager
participant TCPNetworkManager

group MinimiserFenetre 
    User -> UserAgent --++ #lightgrey : MinimiserFentre()
    UserAgent -> Os --++ #lightgrey : MinimiserFenetre()
    Os -> Os --++ #lightgrey : MinimiserFenetre()
    opt 
        Os -> Os --: createSysTrayIcon()
    end
end

group CliquerSysTrayIcon
    User -> Os --++ #lightgrey : CliquerIcon()
    Os -> Os -- : RouvrirFenetre()
end

group EnvoyerMessage /' pas d'acquitement de messages car UDP '/
    User -> UserAgent --++ #lightgrey : sendMessage(message, ip, port, id)
    UserAgent -> TCPNetworkManager -- : commute(message, ip, port, id)
    UserAgent -> DatabaseManager -- : storeHistorique(message, id)
end

group EnvoyerFichier /' pas d'acquitement de messages car UDP '/
    User -> UserAgent --++ #lightgrey : sendFichier(fichier)
    UserAgent -> TCPNetworkManager -- : commute(fichier)
    UserAgent -> DatabaseManager -- : storeHistorique(fichier)
end

group recevoirMessage
    TCPNetworkManager -> UserAgent --++ #lightgrey : receptionMessage(message)
    UserAgent -> User -- : afficheMessage(message)
    UserAgent -> DatabaseManager -- : storeHistorique(message)
end

group recevoirFichier
    TCPNetworkManager -> UserAgent --++ #lightgrey : receptionFichier(fichier)
    UserAgent -> User -- : afficheFichier(fichier)
    UserAgent -> DatabaseManager -- : storeHistorique(fichier)
end


@enduml