#pragma once

#include <memory>

class UiEvent
{
public:
    enum class Type {
        Unknown,
        Paint,
        Mouse,
        Keyboard,
        Resize,
        Focus
    };

    UiEvent();

    virtual ~UiEvent();

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

    Type getType() const;

protected:
    UiEvent::Type mType;
};
using UiEventUPtr = std::unique_ptr<UiEvent>;

class FocusEvent : public UiEvent
{
public:
    FocusEvent()
        : UiEvent()
    {

    };

    virtual ~FocusEvent() = default;
};


