You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

274 lines
7.0 KiB
C

2 years ago
// XTPCoreTreeItem.h: interface for the CXTPCoreTreeItem class.
//
// This file is a part of the XTREME CONTROLS MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPCORETREEITEM_H__)
#define __XTPCORETREEITEM_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
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);
//-----------------------------------------------------------------------
// Summary:
// This method retrieves the application-supplied 32-bit value
// associated with the item
// Returns:
// The 32-bit value associated with the item
//-----------------------------------------------------------------------
DWORD_PTR GetItemData() const;
//-----------------------------------------------------------------------
// Summary:
// This method sets the 32-bit value associated with the item.
// Parameters:
// dwData - Contains the new value to associate with the item.
//-----------------------------------------------------------------------
void SetItemData(DWORD_PTR dwData);
//-----------------------------------------------------------------------
// Summary: Returns Markup element that renders Caption of item
// Returns: Pointer to CXTPMarkupUIElement element
//-----------------------------------------------------------------------
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;
};
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;
}
#endif // !defined(__XTPCORETREEITEM_H__)