/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/ /* olb.hxx Header file for the outline listbox This outline listbox is not a general purpose outline listbox. Rather, it only supports the Enterprise/Domain/Server outline in the Winnet browsing subsystem. FILE HISTORY: rustanl 16-Nov-1991 Created rustanl 22-Mar-1991 Rolled in code review changes from CR on 21-Mar-1991 attended by ChuckC, TerryK, BenG, AnnMc, RustanL. gregj 01-May-1991 Added GUILTT support. Johnl 14-Jun-1991 Added +/- support to LM_OLLB KeithMo 23-Oct-1991 Added forward references. Chuckc 23-Feb-1992 Added SELECTION_TYPE KeithMo 23-Jul-1992 Added maskDomainSources and pszDefaultSelection to LM_OLLB. KeithMo 16-Nov-1992 Performance tuning. YiHsinS 10-Mar-1993 Add a second constructor for LM_OLLB that initially contains no data. Also added FillAllInfo. */ #ifndef _OLB_HXX_ #define _OLB_HXX_ extern "C" { #include "domenum.h" // for BROWSE_*_DOMAIN[S] flags } // extern "C" #include "focus.hxx" // for SELECTION_TYPE #include "lmoesrv.hxx" // for SERVER1_ENUM #include "domenum.hxx" // for BROWSE_DOMAIN_ENUM enum OUTLINE_LB_LEVEL { // Note, these numbers also indicate the indent level. Hence, // the order nor the starting point must not be tampered with. #if ENTERPRISE OLLBL_ENTERPRISE, #endif OLLBL_DOMAIN, OLLBL_SERVER, }; // // Forward references. // DLL_CLASS OLLB_ENTRY; DLL_CLASS OUTLINE_LISTBOX; DLL_CLASS LM_OLLB; /************************************************************************* NAME: OLLB_ENTRY SYNOPSIS: Entry in an outline listbox. PARENT: LBI USES: NLS_STR NOTES: OLLB_ENTRY:OUTLINE_LISTBOX :: LBI:BLT_LISTBOX HISTORY: beng 05-Oct-1991 Win32 conversion beng 21-Apr-1992 BLT_LISTBOX -> LISTBOX **************************************************************************/ DLL_CLASS OLLB_ENTRY : public LBI { friend class OUTLINE_LISTBOX; private: OUTLINE_LB_LEVEL _ollbl; BOOL _fExpanded; NLS_STR _nlsDomain; NLS_STR _nlsServer; NLS_STR _nlsComment; VOID SetExpanded( BOOL f = TRUE ) // called only by OUTLINE_LISTBOX { _fExpanded = f; } public: OLLB_ENTRY( OUTLINE_LB_LEVEL ollbl, BOOL fExpanded, const TCHAR * pszDomain, const TCHAR * pszServer, const TCHAR * pszComment ); virtual ~OLLB_ENTRY(); INT QueryLevel() const { return (INT) _ollbl ; } /* Query the type of this LBI, currently returns an OUTLINE_LB_LEVEL */ OUTLINE_LB_LEVEL QueryType() const { return _ollbl; } BOOL IsExpanded() const { return _fExpanded; } #if ENTERPRISE const TCHAR * QueryEnterprise() const { return _achServer; } #endif const TCHAR * QueryDomain( VOID ) const { return _nlsDomain.QueryPch(); } const TCHAR * QueryServer( VOID ) const { return _nlsServer.QueryPch(); } const TCHAR * QueryComment( VOID ) const { return _nlsComment.QueryPch(); } virtual VOID Paint( LISTBOX * plb, HDC hdc, const RECT * prect, GUILTT_INFO * pGUILTT ) const; virtual INT Compare( const LBI * plbi ) const; virtual WCHAR QueryLeadingChar() const; }; /************************************************************************* NAME: OUTLINE_LISTBOX SYNOPSIS: Listbox with outline-manipulation support PARENT: BLT_LISTBOX USES: DMID_DTE, DM_DTE HISTORY: beng 05-Oct-1991 Win32 conversion beng 21-Feb-1992 Make ctor use CID type **************************************************************************/ DLL_CLASS OUTLINE_LISTBOX : public BLT_LISTBOX { private: #if ENTERPRISE DMID_DTE * _pdmiddteEnterprise; #endif DMID_DTE * _pdmiddteDomain; DMID_DTE * _pdmiddteDomainExpanded; DMID_DTE * _pdmiddteServer; INT _nS; protected: INT AddItem( OUTLINE_LB_LEVEL ollbl, BOOL fExpanded, const TCHAR * pszDomain, const TCHAR * pszServerName, const TCHAR * pszComment ); INT CD_Char( WCHAR wch, USHORT nLastPos ); public: OUTLINE_LISTBOX( OWNER_WINDOW * powin, CID cid, BOOL fCanExpand = TRUE ) ; ~OUTLINE_LISTBOX(); DECLARE_LB_QUERY_ITEM( OLLB_ENTRY ); INT FindItem( const TCHAR * pszDomain, const TCHAR * pszServer = NULL ) const; #if ENTERPRISE INT AddEnterprise( const TCHAR * pszEnterprise, const TCHAR * pszComment ); #endif INT AddDomain( const TCHAR * pszDomain, const TCHAR * pszComment, BOOL fExpanded = FALSE ); INT AddServer( const TCHAR * pszDomain, const TCHAR * pszServer, const TCHAR * pszComment ); VOID SetDomainExpanded( INT i, BOOL f = TRUE ); BOOL IsS() { return ( _nS < 0 ); } // The following method provides the listbox items with access to the // different display maps. // DM_DTE * QueryDmDte( OUTLINE_LB_LEVEL ollbl, BOOL fExpanded ) const; }; /************************************************************************* NAME: LM_OLLB SYNOPSIS: Listbox that hierarchically list servers, domains and eventually enterprises. INTERFACE: See class def. PARENT: OUTLINE_LISTBOX USES: NOTES: HISTORY: JohnL 14-Jun-1991 Added CD_Char to support +/- expansion of domains. beng 21-Aug-1991 Removed LC_CURRENT_ITEM magic number beng 05-Oct-1991 Win32 conversion KeithMo 23-Jul-1992 Added maskDomainSources and pszDefaultSelection. **************************************************************************/ DLL_CLASS LM_OLLB : public OUTLINE_LISTBOX { private: #if ENTERPRISE APIERR FillEnterprise(); #endif APIERR FillDomains( ULONG maskDomainSources, const TCHAR * pszDefaultSelection ); APIERR FillServers( const TCHAR * pszDomain, UINT * pcServersAdded ); INT AddIdempDomain( const TCHAR * pszDomain, const TCHAR * pszComment ); SELECTION_TYPE _seltype ; ULONG _nServerTypes; protected: APIERR OnUserAction( const CONTROL_EVENT & e ); INT CD_Char( WCHAR wch, USHORT nLastPos ); public: LM_OLLB( OWNER_WINDOW * powin, CID cid, SELECTION_TYPE seltype, const TCHAR * pszDefaultSelection = NULL, ULONG maskDomainSources = BROWSE_LM2X_DOMAINS, ULONG nServerTypes = (ULONG)-1L ); /* * This form of constructor does not get the data initially and * the listbox is disabled. FillAllInfo is used to fill this * kind of listbox. */ LM_OLLB( OWNER_WINDOW * powin, CID cid, SELECTION_TYPE seltype, ULONG nServerTypes ); VOID FillAllInfo( BROWSE_DOMAIN_ENUM *pEnumDomains, SERVER1_ENUM *pEnumServers, const TCHAR *pszSelection ); APIERR ToggleDomain( INT iDomain ); APIERR ToggleDomain() { return ToggleDomain(QueryCurrentItem()); } APIERR ExpandDomain( INT iDomain ); APIERR ExpandDomain() { return ExpandDomain(QueryCurrentItem()); } APIERR CollapseDomain( INT iDomain ); APIERR CollapseDomain() { return CollapseDomain(QueryCurrentItem()); } }; #endif // _OLB_HXX_