@startuml

package view {

    interface IView extends photos.downloaders.IObserver {
        +setController(Controller controller): void
        +setLocalFolder(String folder): void
        +setConfigurationFilePath(String path): void
        +setStatus(Status status, String message): void
        +startView(): void
    }

    class Controller {
        - view: IView
        - gPhotos: GooglePhotos

        + setView(IView view): void
        + startDownloadingPhotos(String configurationFile, String localFolder): void
        + stopDownloadingPhotos(): void
    }

    Controller *-- photos.GooglePhotos

    class ConsoleView implements IView {
    }

    note right of ConsoleView
        Just the app logging
    end note

    class SwingView implements IView {
        - frame: JFrame
        - controller: Controller
    }

    note left of SwingView
        Swing framework:
            progressBar,
            statusBar,
            stopDownloading button
    end note

}

@enduml
