#pragma once

#include <vector>
#include <memory>

#include "Window.h"
#include "PaintEvent.h"
#include "MouseEvent.h"
#include "KeyboardEvent.h"

class WindowManager
{

public:

    WindowManager();

    ~WindowManager();

    static std::unique_ptr<WindowManager> Create();

    void AddWindow(WindowUPtr window);

    mt::Window* GetMainWindow() const;

    void OnPaintEvent(const PaintEvent* event);

    void OnMouseEvent(const MouseEvent* event);

    void OnKeyboardEvent(const KeyboardEvent* event);

private:
    std::vector<WindowUPtr> mWindows;
};

using WindowManagerUPtr = std::unique_ptr<WindowManager>;
