/* GWEN Copyright (c) 2010 Facepunch Studios See license in Gwen.h */ #pragma once #ifndef GWEN_CONTROLS_DOCKBASE_H #define GWEN_CONTROLS_DOCKBASE_H #include "Gwen/Controls/Base.h" #include "Gwen/Controls/Button.h" namespace Gwen { namespace Controls { class DockedTabControl; class TabControl; class GWEN_EXPORT DockBase : public Base { public: GWEN_CONTROL(DockBase, Base); virtual void Render(Skin::Base* skin); virtual void RenderOver(Skin::Base* skin); virtual bool IsEmpty(); virtual TabControl* GetTabControl(); virtual DockBase* GetRight() { return GetChildDock(Pos::Right); } virtual DockBase* GetLeft() { return GetChildDock(Pos::Left); } virtual DockBase* GetTop() { return GetChildDock(Pos::Top); } virtual DockBase* GetBottom() { return GetChildDock(Pos::Bottom); } // No action on space (default button action is to press) virtual bool OnKeySpace(bool /*bDown*/) { return false; } private: // Drag n Drop virtual bool DragAndDrop_HandleDrop(Gwen::DragAndDrop::Package* pPackage, int x, int y); virtual bool DragAndDrop_CanAcceptPackage(Gwen::DragAndDrop::Package* pPackage); virtual void DragAndDrop_HoverEnter(Gwen::DragAndDrop::Package* pPackage, int x, int y); virtual void DragAndDrop_HoverLeave(Gwen::DragAndDrop::Package* pPackage); virtual void DragAndDrop_Hover(Gwen::DragAndDrop::Package* pPackage, int x, int y); virtual void SetupChildDock(int iPos); virtual void DoRedundancyCheck(); virtual void DoConsolidateCheck(); virtual void OnRedundantChildDock(DockBase* pDockBase); virtual int GetDroppedTabDirection(int x, int y); virtual void OnTabRemoved(Gwen::Controls::Base* pControl); DockBase* GetChildDock(int iPos); DockBase** GetChildDockPtr(int iPos); DockBase* m_Left; DockBase* m_Right; DockBase* m_Top; DockBase* m_Bottom; // Only CHILD dockpanels have a tabcontrol. DockedTabControl* m_DockedTabControl; bool m_bDrawHover; bool m_bDropFar; Gwen::Rect m_HoverRect; }; } // namespace Controls } // namespace Gwen #endif