/** * @file XTPCoreTreeItem.h * * @copyright * (c) 1998-2025 Codejock Software, All Rights Reserved. * * This source file is the property of Codejock Software and must not be * redistributed by any means without the explicit written permission of * Codejock Software. * * The use of this source code is governed by the terms and conditions specified * in the Toolkit Pro license agreement. Codejock Software grants you, as a * single software developer, the limited right to use this software on one * computer only. * * Contact Information: * support@codejock.com * http://www.codejock.com * */ /** @cond */ #if !defined(__XTPCORETREEITEM_H__) # define __XTPCORETREEITEM_H__ /** @endcond */ # if _MSC_VER > 1000 # pragma once # endif // _MSC_VER > 1000 # include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" class CXTPCoreTreeItems; class CXTPCoreTreeControl; class CXTPImageManagerIcon; class CXTPPropExchange; class CXTPMarkupUIElement; class _XTP_EXT_CLASS CXTPCoreTreeItem : public CObject { DECLARE_SERIAL(CXTPCoreTreeItem); public: CXTPCoreTreeItem(); protected: virtual ~CXTPCoreTreeItem(); public: void SetCaption(LPCTSTR lpszCaption); void SetLabel(BOOL bLabel = TRUE); CString GetCaption() const; BOOL IsLabel() const; CRect GetRect() const; CRect GetScreenRect() const; void SetExpanded(BOOL bExpanded = TRUE); BOOL IsExpanded() const; BOOL IsSelected() const; void ShowCheckbox(BOOL bHasCheckbox = TRUE); BOOL IsCheckboxVisible() const; void SetChecked(int nChecked); int IsChecked() const; void SetIconId(int nIconId); int GetIconId() const; void SetEnabled(BOOL bEnabled); BOOL IsEnabled() const; CXTPImageManagerIcon* GetImage() const; CRect GetButtonRect() const; CRect GetCheckboxRect() const; CRect GetCaptionRect() const; void Remove(); virtual void DoPropExchange(CXTPPropExchange* pPX); /** * @brief * Gets the application-supplied, 32-bit value associated with the item. * @return * The 32-bit value associated with the item. */ DWORD_PTR GetItemData() const; /** * @brief * Sets the 32-bit value associated with the item. * @param dwData 32-bit value to associate with the item. */ void SetItemData(DWORD_PTR dwData); /** * @brief * Retrieves the markup element that renders the caption of the item. * @return * Pointer to a CXTPMarkupUIElement object. */ CXTPMarkupUIElement* GetMarkupUIElement() const; public: DWORD AddRef(); DWORD Release(); public: void Invalidate(); public: BOOL HasChildren() const; CXTPCoreTreeItems* GetChildren() const; CXTPCoreTreeItems* GetParentItems() const; public: CXTPCoreTreeItem* GetNextSiblingItem() const; CXTPCoreTreeItem* GetPrevSiblingItem() const; CXTPCoreTreeItem* GetParentItem() const; CXTPCoreTreeItem* GetFirstChildItem() const; BOOL IsParent(CXTPCoreTreeItem* pItem) const; CXTPCoreTreeControl* GetTreeControl() const; public: virtual CSize CalcSize(CDC* pDC, int nWidth) const; virtual void Draw(CDC* pDC); public: void SetRect(CRect rc); public: static CXTPCoreTreeItem* AFX_CDECL CreateFromOleData(COleDataObject* pDataObject); static CXTPCoreTreeItem* AFX_CDECL CreateFromOleFile(CFile* pFile); HGLOBAL CacheGlobalData(); BOOL PrepareDrag(COleDataSource& srcItem); protected: CString m_strCaption; BOOL m_bLabel; mutable CXTPCoreTreeItems* m_pChildren; CXTPCoreTreeItem* m_pNextItem; CXTPCoreTreeItem* m_pPrevItem; CXTPCoreTreeItems* m_pParentItems; CRect m_rcItem; BOOL m_bExpanded; CXTPCoreTreeControl* m_pControl; BOOL m_bHasCheckBox; int m_nChecked; int m_nIconId; BOOL m_bEnabled; DWORD_PTR m_dwData; long m_dwRef; CXTPMarkupUIElement* m_pMarkupUIElement; /**< Markup element that renders caption. */ friend class CXTPCoreTreeItems; }; class _XTP_EXT_CLASS CXTPCoreTreeItems { public: CXTPCoreTreeItems(); protected: virtual ~CXTPCoreTreeItems(); public: CXTPCoreTreeItem* AddItem(LPCTSTR lpszCaption); CXTPCoreTreeItem* AddItemAfter(CXTPCoreTreeItem* pItem, CXTPCoreTreeItem* pPrevItem = NULL); CXTPCoreTreeItem* AddItemBefore(CXTPCoreTreeItem* pItem, CXTPCoreTreeItem* pNextItem = NULL); void MoveItemAfter(CXTPCoreTreeItem* pItem, CXTPCoreTreeItem* pPrevItem = NULL); void MoveItemBefore(CXTPCoreTreeItem* pItem, CXTPCoreTreeItem* pPrevItem = NULL); public: int GetCount() const; public: void RemoveAll(); void RemoveItem(CXTPCoreTreeItem* pItem); public: POSITION GetHeadPosition() const; CXTPCoreTreeItem* GetNext(POSITION& rPosition) const; public: CXTPCoreTreeItem* GetFirstItem() const; CXTPCoreTreeItem* GetLastItem() const; CXTPCoreTreeItem* GetNextItem(const CXTPCoreTreeItem* pItem) const; CXTPCoreTreeItem* GetPrevItem(const CXTPCoreTreeItem* pItem) const; protected: CXTPCoreTreeItem* m_pFirstItem; CXTPCoreTreeItem* m_pLastItem; CXTPCoreTreeItem* m_pOwnerItem; CXTPCoreTreeControl* m_pControl; int m_nCount; friend class CXTPCoreTreeItem; friend class CXTPCoreTreeControl; }; /** @cond */ AFX_INLINE CString CXTPCoreTreeItem::GetCaption() const { return m_strCaption; } AFX_INLINE BOOL CXTPCoreTreeItem::IsLabel() const { return m_bLabel; } AFX_INLINE void CXTPCoreTreeItem::SetLabel(BOOL bLabel) { m_bLabel = bLabel; Invalidate(); } AFX_INLINE CXTPCoreTreeItems* CXTPCoreTreeItem::GetParentItems() const { return m_pParentItems; } AFX_INLINE void CXTPCoreTreeItem::ShowCheckbox(BOOL bHasCheckbox) { m_bHasCheckBox = bHasCheckbox; } AFX_INLINE BOOL CXTPCoreTreeItem::IsCheckboxVisible() const { return m_bHasCheckBox; } AFX_INLINE void CXTPCoreTreeItem::SetChecked(int nChecked) { m_nChecked = nChecked; Invalidate(); } AFX_INLINE int CXTPCoreTreeItem::IsChecked() const { return m_nChecked; } AFX_INLINE void CXTPCoreTreeItem::SetIconId(int nIconId) { m_nIconId = nIconId; Invalidate(); } AFX_INLINE int CXTPCoreTreeItem::GetIconId() const { return m_nIconId; } AFX_INLINE BOOL CXTPCoreTreeItem::IsEnabled() const { return m_bEnabled; } AFX_INLINE DWORD_PTR CXTPCoreTreeItem::GetItemData() const { return m_dwData; } AFX_INLINE void CXTPCoreTreeItem::SetItemData(DWORD_PTR dwData) { m_dwData = dwData; } AFX_INLINE CXTPMarkupUIElement* CXTPCoreTreeItem::GetMarkupUIElement() const { return m_pMarkupUIElement; } AFX_INLINE CXTPCoreTreeControl* CXTPCoreTreeItem::GetTreeControl() const { return m_pControl; } AFX_INLINE int CXTPCoreTreeItems::GetCount() const { return m_nCount; } AFX_INLINE CXTPCoreTreeItem* CXTPCoreTreeItems::GetFirstItem() const { return m_pFirstItem; } AFX_INLINE CXTPCoreTreeItem* CXTPCoreTreeItems::GetLastItem() const { return m_pLastItem; } /** @endcond */ # include "Common/Base/Diagnostic/XTPEnableNoisyWarnings.h" /** @cond */ #endif // !defined(__XTPCORETREEITEM_H__) /** @endcond */