#ifndef FRAMETREE_H
#define FRAMETREE_H

/*
 * Eine Abstrakte Basisklasse für einen Knoten in dem Objekt Baum der GUI
 */
class FrameTreeNode
{
protected:

    int index; // Der Index des Knotens in der Liste aller Kindknoten des Elternknotens
    FrameTreeNode *parent; // Der Elternknoten
    int depth; // Die Tieve des Knotens im Baum

public:

    // Erstellt den Knoten
    //  index: Die Position des Knotens in der Liste mit Kindknoten des
    // Elternknotens
    //  parent: Der Elternknoten
    //  depth: Der Abstand des Knotens zur Baumwurzel
    FrameTreeNode(int            index,
                  FrameTreeNode *parent,
                  int            depth);
    ~FrameTreeNode();

    // Gibt den Index des Knotens in der Liste mit Kindknoten des Elternknotens
    // zurück
    int            getIndex() const;

    // Gibt den Elternknoten zurück
    FrameTreeNode* getParent() const;

    // Gibt den Abstand zur Wurzel des Baumes zurück
    int            getDepth() const;

    // Gibt die Anzahl an Kindknoten zurück
    virtual int    getChildCount() const;

    // Gibt den aktuellen Knoten zurück (this Zeiger auf das Objekt der Klasse
    // welche von dieser erbt)
    virtual void*  getNodeObject() const = 0;
};

#endif // FRAMETREE_H