#pragma once

#include <UIMLView.h>

class ListViewElement : public Framework::UIMLElement
{
public:
    ListViewElement();
    //! prüft, ob dieses UIML Element für ein bestimmtes xml Element zuständig
    //! ist
    bool isApplicableFor(Framework::XML::Element& element) override;
    //! erstellt eine neue Drawable zu einem gegebenen xml Element
    Framework::Drawable* parseElement(Framework::XML::Element& element,
        Framework::UIMLContainer& generalFactory) override;
    bool updateElement(Framework::XML::Element& element,
        Framework::Drawable& z,
        Framework::UIMLContainer& generalFactory) override;
    //! wendet die layout parameter zu einer Drawable an
    void layout(Framework::XML::Element& element,
        Framework::Drawable& z,
        int pWidth,
        int pHeight,
        Framework::UIMLContainer& generalLayouter) override;
};

class ListView : public Framework::Drawable
{
private:
    Framework::SelectionList* list;
    Framework::RCArray<Framework::Text> ids;
    Framework::Text onSelected;
    int lastSelection;

public:
    ListView();

    bool tick(double tickVal) override;
    void render(Framework::Image& rObj) override;
    void doMouseEvent(Framework::MouseEvent& me, bool userRet) override;

    friend ListViewElement;
};