|
|
/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
FILE HISTORY: kevinl 12-Oct-1991 Created kevinl 05-Nov-1991 Code Review changes attended by: DavidHov, Keithmo, o-simop Yi-HsinS 09-Nov-1992 Added AbandonAllChildren() and DeleteChildren()
*/
#ifndef _HIERLB_HXX_
#define _HIERLB_HXX_
DLL_CLASS HIER_LBI; // declared below
DLL_CLASS HIER_LBI_ITERATOR; // declared below
DLL_CLASS HIER_LISTBOX; // declared below
DLL_CLASS LBITREE; // declared below
/*************************************************************************
NAME: HIER_LBI
SYNOPSIS: Listbox item for HIER_LISTBOX
PARENT: LBI
HISTORY: kevinl 12-Oct-1991 created beng 29-Jun-1992 Outlined SetDestroyable (dll delta)
**************************************************************************/
DLL_CLASS HIER_LBI : public LBI { friend class LBITREE; friend class HIER_LISTBOX; friend class HIER_LBI_ITERATOR;
private: HIER_LBI * _phlbiParent; HIER_LBI * _phlbiChild; HIER_LBI * _phlbiLeft; HIER_LBI * _phlbiRight;
static BOOL _fDestroyable;
BOOL _fShowChildren;
UINT _dDescendants; UINT _dIndentPels;
VOID AdjustDescendantCount( INT iAdjustment ); VOID Adopt( HIER_LBI * phlbi, BOOL fSort );
// Get rid of all children under this node
VOID AbandonAllChildren( VOID ); VOID Abandon();
INT QueryLBIndex();
VOID SetIndentLevel();
UINT QueryDescendants() { return _dDescendants; }
BOOL IsParent( HIER_LBI * phlbiParent );
static VOID SetDestroyable( BOOL f );
virtual BOOL IsDestroyable();
public: HIER_LBI( BOOL fExpanded = FALSE ); ~HIER_LBI();
VOID SetExpanded( BOOL f = TRUE ) { _fShowChildren = f; }
BOOL QueryExpanded() const { return _fShowChildren; }
virtual VOID SetPelIndent( UINT ui );
BOOL HasChildren() { return ( _phlbiChild != NULL ); }
INT QueryPelIndent() const { return _dIndentPels; }
INT QueryIndentLevel( VOID ); };
/*************************************************************************
NAME: HIER_LBI_ITERATOR
SYNOPSIS: Iterator for HIER_LBI
HISTORY: kevinl 12-Oct-1991 created
**************************************************************************/
DLL_CLASS HIER_LBI_ITERATOR { private: HIER_LBI * _phlbiStart; HIER_LBI * _phlbiEnd;
public: HIER_LBI_ITERATOR( HIER_LBI * phlbi, BOOL fChildIterator = FALSE ); ~HIER_LBI_ITERATOR();
HIER_LBI * operator()(); };
/*************************************************************************
NAME: LBITREE
SYNOPSIS: Class that is used by HIER_LISTBOX to anchor the shadow LBI's
PARENT: BASE
HISTORY: kevinl 12-Oct-1991 created
**************************************************************************/
DLL_CLASS LBITREE : public BASE { private: HIER_LBI _hlbiRoot;
public: LBITREE(); ~LBITREE();
INT AddNode( HIER_LBI * phlbiParent, HIER_LBI * phlbiChild, BOOL fSort ); };
/*************************************************************************
NAME: HIER_LISTBOX
SYNOPSIS: Listbox with outline-manipulation support
PARENT: BLT_LISTBOX
HISTORY: kevinl 12-Oct-1991 created beng 22-Apr-1992 Elided classname arg to ctor
**************************************************************************/
DLL_CLASS HIER_LISTBOX : public BLT_LISTBOX { private: BOOL _fMultSel; BOOL _fSort; LBITREE _lbit;
INT ExpandChildren( INT dIndex, HIER_LBI * phlbi );
protected: virtual APIERR AddChildren( HIER_LBI * phlbi ); virtual VOID RefreshChildren( HIER_LBI * phlbi );
public: HIER_LISTBOX( OWNER_WINDOW * powin, CID cid, BOOL fReadOnly = FALSE, enum FontType font = FONT_DEFAULT, BOOL fSort = FALSE ); HIER_LISTBOX( OWNER_WINDOW * powin, CID cid, XYPOINT xy, XYDIMENSION dxy, ULONG flStyle, BOOL fReadOnly = FALSE, enum FontType font = FONT_DEFAULT, BOOL fSort = FALSE );
~HIER_LISTBOX();
INT AddItem( HIER_LBI * phlbi, HIER_LBI * phlbiParent = NULL, BOOL fSaveSelection = TRUE );
void HIER_LISTBOX::AddSortedItems( HIER_LBI * * pphlbi, INT cItems, HIER_LBI * phlbiParent = NULL, BOOL fSaveSelection = TRUE ) ;
INT DeleteItem( INT i, BOOL fSaveSelection = TRUE );
APIERR ExpandItem( INT i ); APIERR ExpandItem( HIER_LBI * phlbi );
VOID CollapseItem( INT i, BOOL fInvalidate = TRUE ); VOID CollapseItem( HIER_LBI * phlbi, BOOL fInvalidate = TRUE );
// Delete all the children of the given HIER_LBI
VOID DeleteChildren( HIER_LBI * phlbi );
VOID OnDoubleClick( HIER_LBI * phlbi );
void SetSortFlag( BOOL fSort = TRUE ) { _fSort = fSort ; } };
#endif // _HIERLB_HXX_
|