2018-10-10 01:06:03 +08:00
|
|
|
#ifndef FTXUI_COMPONENT_DELEGATE_HPP
|
|
|
|
#define FTXUI_COMPONENT_DELEGATE_HPP
|
|
|
|
|
|
|
|
#include "ftxui/dom/elements.hpp"
|
|
|
|
|
2019-01-07 00:10:35 +08:00
|
|
|
namespace ftxui::component {
|
2018-10-10 01:06:03 +08:00
|
|
|
|
|
|
|
class Component;
|
|
|
|
|
|
|
|
class Delegate {
|
|
|
|
public:
|
|
|
|
Delegate() {}
|
|
|
|
virtual ~Delegate() {}
|
|
|
|
|
|
|
|
// A Delegate shadows a component.
|
|
|
|
virtual void Register(Component* component) = 0;
|
|
|
|
virtual Component* component() = 0;
|
|
|
|
|
|
|
|
// Create new children.
|
|
|
|
virtual Delegate* NewChild() = 0;
|
|
|
|
virtual std::vector<Delegate*> children() = 0;
|
|
|
|
|
|
|
|
// Navigate in the tree.
|
|
|
|
virtual Delegate* PreviousSibling() = 0;
|
|
|
|
virtual Delegate* NextSibling() = 0;
|
|
|
|
virtual Delegate* Parent() = 0;
|
|
|
|
virtual Delegate* Root() = 0;
|
|
|
|
};
|
|
|
|
|
2019-01-07 00:10:35 +08:00
|
|
|
} // namespace ftxui::component
|
2018-10-10 01:06:03 +08:00
|
|
|
|
|
|
|
#endif /* end of include guard: FTXUI_COMPONENT_DELEGATE_HPP */
|