|
|
/**********************************************************************/ /** 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_
|