bullet3/btgui/Gwen/Controls/TreeNode.h
Erwin Coumans 68f798a2da Start re-organizing demos so the physics setup can be shared easier (explicit create graphics objects, init/exit physics etc)
Add B3G_RETURN key code, only implemented in Windows so far (todo: Mac, Linux)
Fix Windows key management (use WM_CHAR event instead of WM_KEYUP
Add Return (OnKeyReturn) key support TreeNode, so we can select an item using the return key.
2014-06-24 10:14:06 -07:00

102 lines
2.1 KiB
C++

/*
GWEN
Copyright (c) 2011 Facepunch Studios
See license in Gwen.h
*/
#pragma once
#ifndef GWEN_CONTROLS_TREENODE_H
#define GWEN_CONTROLS_TREENODE_H
#include "Gwen/Controls/Base.h"
#include "Gwen/Controls/Button.h"
#include "Gwen/Controls/ScrollControl.h"
enum
{
ITERATE_ACTION_OPEN=1,
ITERATE_ACTION_CLOSE,
ITERATE_ACTION_FIND_SELECTED_INDEX,
ITERATE_ACTION_DESELECT_INDEX,
ITERATE_ACTION_SELECT,
};
namespace Gwen
{
namespace Controls
{
class TreeControl;
class GWEN_EXPORT TreeNode : public Base
{
public:
GWEN_CONTROL( TreeNode, Base );
virtual TreeNode* AddNode( const UnicodeString& strLabel );
virtual TreeNode* AddNode( const String& strLabel );
virtual void SetText( const UnicodeString& text );
virtual void SetText( const String& text );
UnicodeString GetText() const;
virtual void Open();
virtual void Close();
virtual void ExpandAll();
virtual Button* GetButton();
virtual void Render( Skin::Base* skin );
virtual void Layout( Skin::Base* skin );
virtual void PostLayout( Skin::Base* skin );
virtual void SetRoot( bool b ){ m_bRoot = b; }
virtual void SetTreeControl( TreeControl* pCtrl ){ m_TreeControl = pCtrl; }
virtual void SetSelectable( bool b ){ m_bSelectable = b; }
virtual bool IsSelected(){ return m_bSelected; }
virtual void SetSelected( bool b );
virtual void DeselectAll();
virtual void iterate(int action, int* curIndex, int* resultIndex);
virtual bool OnKeyReturn(bool bDown)
{
static bool prevDown = false;
if (!prevDown && bDown)
{
onReturnKeyDown.Call(this);
}
prevDown = bDown;
return Base::OnKeyReturn(bDown);
}
Event::Caller onReturnKeyDown;
Event::Caller onNamePress;
Event::Caller onSelectChange;
Event::Caller onSelect;
Event::Caller onUnselect;
protected:
void OnToggleButtonPress( Base* control );
void OnDoubleClickName( Base* control );
void OnClickName( Base* control );
TreeControl* m_TreeControl;
Button* m_ToggleButton;
Button* m_Title;
bool m_bRoot;
bool m_bSelected;
bool m_bSelectable;
};
}
}
#endif