#ifndef BUTTON_H_INCLUDED
#define BUTTON_H_INCLUDED

#include "label.h"

class button : public label
{
private:
    static int cnt; // Objektumszámláló

protected:
    std::string Text;
    std::string dispText; // A label szövegének képernyőn megjelenő része

    void labelInit(); // Konstuktorok közös parancsai (mezők inicializása)
    void labelDraw() const; // Öröklődés miatti overloading miatt szükség volt a draw függvény törzsének kiemelésére

public:
    /// ---- Mezők ----
    Color borderColor;

    /// ---- Konstruktorok ----
    label(int x0, int y0, unsigned int width0, unsigned int height0);
    label(int x0, int y0, unsigned int width0, unsigned int height0, std::string txt);

    /// ---- Események ----
    virtual void onClick(int posX, int posY, char button) {}
    virtual void onMouseUp(int posX, int posY, char button) {}
    virtual void onMouseMove(int posX, int posY) {}
    virtual void onKeyPress(char keyCode) {}
    virtual void onKeyUp(char keyCode) {}
    virtual void onTick() {}

    /// --- Get/Set ----
    void setText(std::string txt);
    std::string getText() const;

    void setMargin(int mS, int mT);

    /// ---- Kirajzolás ----
    virtual void draw() const;
};

#endif // BUTTON_H_INCLUDED
