|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: dlgcreat.h
//
//--------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////
// dlgcreat.h
//
// Class definition for dialogs that create new ADs objects.
//
// HISTORY
// 24-Aug-97 Dan Morin Creation.
//
/////////////////////////////////////////////////////////////////////
#ifndef _DLGCREAT_H
#define _DLGCREAT_H
#include <objsel.h> // object picker
#include "util.h"
#include "uiutil.h"
#include "querysup.h"
// FORWARD DECLARATIONS
class CNewADsObjectCreateInfo; // Defined in newobj.h
class CWizExtensionSite; class CWizExtensionSiteManager;
class CCreateNewObjectWizardBase;
class CCreateNewObjectPageBase; class CCreateNewObjectDataPage; class CCreateNewObjectFinishPage;
///////////////////////////////////////////////////////////////////////////
// CHPropSheetPageArr
class CHPropSheetPageArr { public: CHPropSheetPageArr(); ~CHPropSheetPageArr() { free(m_pArr); } void AddHPage(HPROPSHEETPAGE hPage); HPROPSHEETPAGE* GetArr(){ return m_pArr;} ULONG GetCount() {return m_nCount;} private: HPROPSHEETPAGE* m_pArr; ULONG m_nSize; ULONG m_nCount; };
///////////////////////////////////////////////////////////////////////////
// CDsAdminNewObjSiteImpl
class CDsAdminNewObjSiteImpl : public IDsAdminNewObj, public IDsAdminNewObjPrimarySite, public CComObjectRoot { DECLARE_NOT_AGGREGATABLE(CDsAdminNewObjSiteImpl) BEGIN_COM_MAP(CDsAdminNewObjSiteImpl) COM_INTERFACE_ENTRY(IDsAdminNewObj) COM_INTERFACE_ENTRY(IDsAdminNewObjPrimarySite) END_COM_MAP()
public: CDsAdminNewObjSiteImpl() { m_pSite = NULL; } ~CDsAdminNewObjSiteImpl() {}
// IDsAdminNewObj methods
STDMETHOD(SetButtons)(THIS_ /*IN*/ ULONG nCurrIndex, /*IN*/ BOOL bValid); STDMETHOD(GetPageCounts)(THIS_ /*OUT*/ LONG* pnTotal, /*OUT*/ LONG* pnStartIndex);
// IDsAdminNewObjPrimarySite methods
STDMETHOD(CreateNew)(THIS_ /*IN*/ LPCWSTR pszName); STDMETHOD(Commit)(THIS_ );
// Implementation
public: void Init(CWizExtensionSite* pSite) { m_pSite = pSite; }
private:
BOOL _IsPrimarySite(); CWizExtensionSite* m_pSite; // back pointer
};
///////////////////////////////////////////////////////////////////////////
// CWizExtensionSite
class CWizExtensionSite { public:
CWizExtensionSite(CWizExtensionSiteManager* pSiteManager) { ASSERT(pSiteManager != NULL); m_pSiteManager = pSiteManager; m_pSiteImplComObject = NULL; } ~CWizExtensionSite() { // if created during InitializeExtension(), it has
// a ref count of 1, so need to release once to
// destroy
if (m_pSiteImplComObject != NULL) { m_pSiteImplComObject->Release(); } }
HRESULT InitializeExtension(GUID* pGuid); BOOL GetSummaryInfo(CString& s);
IDsAdminNewObjExt* GetNewObjExt() { ASSERT(m_spIDsAdminNewObjExt != NULL); return m_spIDsAdminNewObjExt; }
CWizExtensionSiteManager* GetSiteManager() { return m_pSiteManager;} CHPropSheetPageArr* GetHPageArr() { return &m_pageArray;}
private: static BOOL CALLBACK FAR _OnAddPage(HPROPSHEETPAGE hsheetpage, LPARAM lParam);
CWizExtensionSiteManager* m_pSiteManager; // back pointer
CComPtr<IDsAdminNewObjExt> m_spIDsAdminNewObjExt; // extension interface pointer
CHPropSheetPageArr m_pageArray; // array of property page handles
CComObject<CDsAdminNewObjSiteImpl>* m_pSiteImplComObject; // fully formed COM object
};
///////////////////////////////////////////////////////////////////////////
// CWizExtensionSiteManager
class CWizExtensionSiteList : public CList<CWizExtensionSite*, CWizExtensionSite*> { public: ~CWizExtensionSiteList() { while (!IsEmpty()) delete RemoveTail(); } };
class CWizExtensionSiteManager { public: CWizExtensionSiteManager(CCreateNewObjectWizardBase* pWiz) { ASSERT(pWiz != NULL); m_pWiz = pWiz; m_pPrimaryExtensionSite = NULL; }
~CWizExtensionSiteManager() { if (m_pPrimaryExtensionSite != NULL) delete m_pPrimaryExtensionSite; }
CCreateNewObjectWizardBase* GetWiz() { return m_pWiz;} CWizExtensionSite* GetPrimaryExtensionSite() { return m_pPrimaryExtensionSite;} CWizExtensionSiteList* GetExtensionSiteList() { return &m_extensionSiteList;}
HRESULT CreatePrimaryExtension(GUID* pGuid, IADsContainer* pADsContainerObj, LPCWSTR lpszClassName);
HRESULT CreateExtensions(GUID* aCreateWizExtGUIDArr, ULONG nCount, IADsContainer* pADsContainerObj, LPCWSTR lpszClassName);
UINT GetTotalHPageCount();
void SetObject(IADs* pADsObj); HRESULT WriteExtensionData(HWND hWnd, ULONG uContext); HRESULT NotifyExtensionsOnError(HWND hWnd, HRESULT hr, ULONG uContext); void GetExtensionsSummaryInfo(CString& s);
private: CCreateNewObjectWizardBase* m_pWiz; // back pointer to wizard
CWizExtensionSite* m_pPrimaryExtensionSite; CWizExtensionSiteList m_extensionSiteList; };
/////////////////////////////////////////////////////////////////////
// CCreateNewObjectWizardBase
typedef CArray<CCreateNewObjectPageBase*, CCreateNewObjectPageBase*> CWizPagePtrArr;
class CCreateNewObjectWizardBase { public: CCreateNewObjectWizardBase(CNewADsObjectCreateInfo* m_pNewADsObjectCreateInfo); virtual ~CCreateNewObjectWizardBase();
HRESULT InitPrimaryExtension(); HRESULT DoModal();
virtual BOOL OnFinish();
HWND GetWnd(); void SetWizardButtonsFirst(BOOL bValid) { SetWizardButtons(bValid ? PSWIZB_NEXT : 0); } void SetWizardButtonsMiddle(BOOL bValid) { SetWizardButtons(bValid ? (PSWIZB_BACK|PSWIZB_NEXT) : PSWIZB_BACK); } void SetWizardButtonsLast(BOOL bValid) { SetWizardButtons(bValid ? (PSWIZB_BACK|PSWIZB_FINISH) : (PSWIZB_BACK|PSWIZB_DISABLEDFINISH)); } void EnableOKButton(BOOL bValid) { SetWizardButtons(bValid ? PSWIZB_FINISH : PSWIZB_DISABLEDFINISH); } void SetWizardOKCancel() { PropSheet_SetFinishText(GetWnd(), (LPCWSTR)m_szOKButtonCaption); }
CNewADsObjectCreateInfo* GetInfo() { ASSERT(m_pNewADsObjectCreateInfo != NULL); return m_pNewADsObjectCreateInfo; }
void SetWizardButtons(CCreateNewObjectPageBase* pPage, BOOL bValid); HRESULT SetWizardButtons(CWizExtensionSite* pSite, ULONG nCurrIndex, BOOL bValid);
void SetObjectForExtensions(CCreateNewObjectPageBase* pPage); LPCWSTR GetCaption() { return m_szCaption;} HICON GetClassIcon(); void GetSummaryInfo(CString& s);
HRESULT CreateNewFromPrimaryExtension(LPCWSTR pszName); void GetPageCounts(CWizExtensionSite* pSite, /*OUT*/ LONG* pnTotal, /*OUT*/ LONG* pnStartIndex); BOOL HasFinishPage() { return m_pFinishPage != NULL; }
protected: void AddPage(CCreateNewObjectPageBase* pPage);
void SetWizardButtons(DWORD dwFlags) { ::PropSheet_SetWizButtons(GetWnd(), dwFlags); }
virtual void GetSummaryInfoHeader(CString& s); virtual void OnFinishSetInfoFailed(HRESULT hr);
private: void LoadCaptions();
HRESULT WriteData(ULONG uContext); HRESULT RecreateObject();
CNewADsObjectCreateInfo * m_pNewADsObjectCreateInfo; CCreateNewObjectFinishPage* m_pFinishPage;
private:
CWizExtensionSiteManager m_siteManager;
CString m_szCaption; CString m_szOKButtonCaption;
HICON m_hClassIcon; PROPSHEETHEADER m_psh; HWND m_hWnd; // cached HWND
CWizPagePtrArr m_pages; // pages we own
HRESULT m_hrReturnValue;
static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam);
};
/////////////////////////////////////////////////////////////////////
// CIconCtrl
class CIconCtrl : public CStatic { public: CIconCtrl() { m_hIcon;} ~CIconCtrl() { DestroyIcon(m_hIcon); } void SetIcon(HICON hIcon) { ASSERT(hIcon != NULL); m_hIcon = hIcon; } protected: HICON m_hIcon; afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() };
/////////////////////////////////////////////////////////////////////
// CCreateNewObjectPageBase
class CCreateNewObjectPageBase : public CPropertyPageEx_Mine { public: CCreateNewObjectPageBase(UINT nIDTemplate);
// Implementation
protected: virtual BOOL OnInitDialog(); virtual BOOL OnSetActive();
virtual void GetSummaryInfo(CString&) { }; protected: CCreateNewObjectWizardBase* GetWiz() { ASSERT(m_pWiz != NULL); return m_pWiz;}
private: CIconCtrl m_iconCtrl; // to display class icon
CCreateNewObjectWizardBase* m_pWiz; // back pointer to wizard object
friend class CCreateNewObjectWizardBase; // sets the m_pWiz member
DECLARE_MESSAGE_MAP() protected: afx_msg LONG OnFormatCaption(WPARAM wParam, LPARAM lParam);
};
/////////////////////////////////////////////////////////////////////
// CCreateNewObjectDataPage
class CCreateNewObjectDataPage : public CCreateNewObjectPageBase { public: CCreateNewObjectDataPage(UINT nIDTemplate);
// Implementation
protected: virtual BOOL OnSetActive(); virtual BOOL OnKillActive(); virtual LRESULT OnWizardNext(); virtual LRESULT OnWizardBack(); virtual BOOL OnWizardFinish();
// interface to exchange data: need to override
// SetData(): called to write data from the UI to the temp. object
// return successful HRESULT to allow a kill focus/page dismissal
virtual HRESULT SetData(BOOL bSilent = FALSE) = 0; // GetData(): called to load data from temporary object to UI
// return TRUE if want the Next/OK button to be enabled
// when called with a non NULL IADs
virtual BOOL GetData(IADs* pIADsCopyFrom) = 0;
// function called after the finish page has done the commit,
// need to implement if the page needs to do something after SetInfo()
// has been called
public: virtual HRESULT OnPostCommit(BOOL = FALSE) { return S_OK;} virtual HRESULT OnPreCommit(BOOL bSilent = FALSE) { return SetData(bSilent);}
private: BOOL m_bFirstTimeGetDataCalled; };
/////////////////////////////////////////////////////////////////////
// CCreateNewObjectFinishPage
class CCreateNewObjectFinishPage : public CCreateNewObjectPageBase { public: enum { IDD = IDD_CREATE_NEW_FINISH };
CCreateNewObjectFinishPage();
// Implementation
protected: virtual BOOL OnSetActive(); virtual BOOL OnKillActive(); virtual BOOL OnWizardFinish();
afx_msg void OnSetFocusEdit();
DECLARE_MESSAGE_MAP() private: void WriteSummary(LPCWSTR lpszSummaryText); BOOL m_bNeedSetFocus; };
///////////////////////////////////////////////////////////////////
// CCreateNewNamedObjectPage
class CCreateNewNamedObjectPage : public CCreateNewObjectDataPage { protected:
CCreateNewNamedObjectPage(UINT nIDTemplate) : CCreateNewObjectDataPage(nIDTemplate) {}
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
protected: virtual BOOL OnInitDialog(); afx_msg void OnNameChange();
virtual BOOL ValidateName(LPCTSTR pcszName); CString m_strName; // Name of object
DECLARE_MESSAGE_MAP() };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW CN WIZARD
// Create a new object where the only mandatory attribute is "cn"
class CCreateNewObjectCnPage : public CCreateNewNamedObjectPage { protected: enum { IDD = IDD_CREATE_NEW_OBJECT_CN }; public: CCreateNewObjectCnPage() : CCreateNewNamedObjectPage(IDD) {} };
class CCreateNewObjectCnWizard : public CCreateNewObjectWizardBase { public: CCreateNewObjectCnWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo) : CCreateNewObjectWizardBase(pNewADsObjectCreateInfo) { AddPage(&m_page1); }
protected: CCreateNewObjectCnPage m_page1; };
// NTRAID#NTBUG9-283026-2001/06/13-lucios - Begin
// This new class will be used to detect the <automatically generated>
// at OnFinish time only for the creation of a new connection
//
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW OBJECT CONNECTION WIZARD
class CCreateNewObjectConnectionWizard : public CCreateNewObjectCnWizard { public: virtual BOOL OnFinish();
CCreateNewObjectConnectionWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo) : CCreateNewObjectCnWizard(pNewADsObjectCreateInfo) { } };
// NTRAID#NTBUG9-283026-2001/06/13-lucios - End
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW VOLUME WIZARD
//
// Create a new volume object (friendly name: shared folder)
//
//
class CCreateNewVolumePage : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_VOLUME }; CCreateNewVolumePage();
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
protected: virtual BOOL OnInitDialog(); afx_msg void OnNameChange(); afx_msg void OnPathChange();
void _UpdateUI(); CString m_strName; // Name of object
CString m_strUncPath; // UNC path of the object
DECLARE_MESSAGE_MAP() };
class CCreateNewVolumeWizard : public CCreateNewObjectWizardBase { public: CCreateNewVolumeWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
private: CCreateNewVolumePage m_page1; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW COMPUTER WIZARD
class CCreateNewComputerPage : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_COMPUTER }; CCreateNewComputerPage();
BOOL OnError(HRESULT hr);
protected: // interface to exchange data
virtual BOOL OnInitDialog(); virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
virtual HRESULT OnPostCommit(BOOL bSilent = FALSE); virtual void GetSummaryInfo(CString& s);
protected: afx_msg void OnNameChange(); afx_msg void OnSamNameChange(); afx_msg void OnChangePrincipalButton();
DECLARE_MESSAGE_MAP()
private: CString m_strName; // DNS Name of computer
CString m_strSamName; // Downlevel Name of computer
// security
void UpdateSecurityPrincipalUI(PDS_SELECTION pDsSelection); HRESULT BuildNewAccessList(PACL pDacl, CSimpleAclHolder& Dacl); HRESULT GetDefaultSecurityDescriptorFromSchema( CSimpleSecurityDescriptorHolder& sdHolder); HRESULT InitializeSchemaSearcher( const CString& schemaPath, CDSSearch& schemaSearcher); HRESULT CCreateNewComputerPage::AddCreatorOwnerAccessForSID( PACL defaultAcl, PACL acl, PSID securityPrincipalSID, CSimpleAclHolder& newDacl);
HRESULT SetSecurity();
CSidHolder m_securityPrincipalSidHolder;
HRESULT _LookupSamAccountNameFromSid(PSID pSid, CString& szSamAccountName);
HRESULT _ValidateName(); HRESULT _ValidateSamName();
};
class CCreateNewComputerWizard : public CCreateNewObjectWizardBase { public: CCreateNewComputerWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
protected: virtual void OnFinishSetInfoFailed(HRESULT hr);
private: CCreateNewComputerPage m_page1; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW OU WIZARD
class CCreateNewOUPage : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_OBJECT_CN }; CCreateNewOUPage();
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
protected: virtual BOOL OnInitDialog(); afx_msg void OnNameChange(); virtual BOOL OnWizardFinish(); virtual BOOL OnSetActive();
CString m_strOUName; // Name of OU
DECLARE_MESSAGE_MAP() };
class CCreateNewOUWizard : public CCreateNewObjectWizardBase { public: CCreateNewOUWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
private: CCreateNewOUPage m_page1; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW GROUP WIZARD
class CCreateNewGroupPage : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_GROUP }; CCreateNewGroupPage();
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
protected: virtual BOOL OnInitDialog(); virtual BOOL OnSetActive(); afx_msg void OnNameChange(); afx_msg void OnSamNameChange(); afx_msg void OnSecurityOrTypeChange();
CString m_strGroupName; // Name of Group
CString m_strSamName; // downlevel name of group
BOOL m_fMixed; UINT m_SAMLength;
private: BOOL _InitUI();
DECLARE_MESSAGE_MAP() };
class CCreateNewGroupWizard : public CCreateNewObjectWizardBase { public: CCreateNewGroupWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
private: CCreateNewGroupPage m_page1; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW CONTACT WIZARD
class CCreateNewContactPage : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_CONTACT }; CCreateNewContactPage();
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
protected: virtual BOOL OnInitDialog(); afx_msg void OnNameChange(); afx_msg void OnFullNameChange(); afx_msg void OnDispNameChange();
CString m_strFirstName; // First Name of user
CString m_strInitials; // Initials of user
CString m_strLastName; // Last Name of user
CString m_strFullName; // Full Name of user (and obj CN)
CString m_strDispName; // Display Name of user (and obj CN)
CUserNameFormatter m_nameFormatter; // name ordering for given name and surname
DECLARE_MESSAGE_MAP() };
class CCreateNewContactWizard : public CCreateNewObjectWizardBase { public: CCreateNewContactWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
private: CCreateNewContactPage m_page1; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW USER WIZARD
class CCreateNewUserPage1 : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_USER1 }; CCreateNewUserPage1();
LPCWSTR GetFullName() { return m_strFullName;}; BOOL OnError( HRESULT hr );
protected: virtual BOOL OnInitDialog(); virtual BOOL OnSetActive(); virtual void GetSummaryInfo(CString& s);
// interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
protected: afx_msg void OnNameChange(); afx_msg void OnLoginNameChange(); afx_msg void OnSAMNameChange(); afx_msg void OnFullNameChange();
CString m_strFirstName; // First Name of user
CString m_strInitials; // Initials of user
CString m_strLastName; // Last Name of user
CString m_strFullName; // Full Name of user (and obj CN)
CString m_strLoginName; // Login name of user
CString m_strSAMName; // NT4 Login name of user
CString m_LocalDomain; // Current Domain
CUserNameFormatter m_nameFormatter; // name ordering for given name and surname
private: BOOL _InitUI();
void UpdateComboBoxDropWidth(CComboBox* comboBox);
BOOL m_bForcingNameChange; DECLARE_MESSAGE_MAP() };
class CCreateNewUserPage2 : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_USER2 }; CCreateNewUserPage2();
void SetPage1(CCreateNewUserPage1* p) { ASSERT(p != NULL); m_pPage1 = p; }
protected: virtual void GetSummaryInfo(CString& s);
virtual BOOL OnInitDialog();
// interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
virtual HRESULT OnPostCommit(BOOL bSilent = FALSE);
protected: afx_msg void OnNameChange(); afx_msg void OnLoginNameChange(); afx_msg void OnPasswordPropsClick();
DECLARE_MESSAGE_MAP()
private: CCreateNewUserPage1* m_pPage1; void _GetCheckBoxSummaryInfo(UINT nCtrlID, UINT nStringID, CString& s); };
class CCreateNewUserWizard : public CCreateNewObjectWizardBase { public: CCreateNewUserWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
protected: virtual void GetSummaryInfoHeader(CString& s); virtual void OnFinishSetInfoFailed(HRESULT hr);
private: CCreateNewUserPage1 m_page1; CCreateNewUserPage2 m_page2; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW PRINT QUEUE WIZARD
//
// Create a new PrintQueue object. the only mandatory props
// are "cn" and "uNCName".
//
class CCreateNewPrintQPage : public CCreateNewObjectDataPage { public: enum { IDD = IDD_CREATE_NEW_PRINTQ }; CCreateNewPrintQPage();
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom);
protected: afx_msg void OnPathChange();
CString m_strUncPath; // UNC path of the object
CString m_strContainer; // UNC path of the object
LPWSTR m_pwszNewObj; // Path to created object
void _UpdateUI();
DECLARE_MESSAGE_MAP() };
class CCreateNewPrintQWizard : public CCreateNewObjectWizardBase { public: CCreateNewPrintQWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
private: CCreateNewPrintQPage m_page1; };
#ifdef FRS_CREATE
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW FRS SUBSCRIBER WIZARD
class CCreateNewFrsSubscriberPage : public CCreateNewNamedObjectPage { public: enum { IDD = IDD_CREATE_NEW_FRS_SUBSCRIBER }; CCreateNewFrsSubscriberPage() : CCreateNewNamedObjectPage(IDD) {}
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE);
protected: CString m_strRootPath; // FRS root path
CString m_strStagingPath; // FRS staging path
private: BOOL ReadAbsolutePath( int ctrlID, OUT CString& strrefValue ); };
class CCreateNewFrsSubscriberWizard : public CCreateNewObjectWizardBase { public: CCreateNewFrsSubscriberWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo) : CCreateNewObjectWizardBase(pNewADsObjectCreateInfo) { AddPage(&m_page1); } private: CCreateNewFrsSubscriberPage m_page1; }; #endif // FRS_CREATE
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW SITE WIZARD AND NEW SUBNET WIZARD (NEWSITE.CPP)
class CreateAndChoosePage : public CCreateNewNamedObjectPage { public:
CreateAndChoosePage(UINT nIDTemplate);
protected:
// CWnd overrides
afx_msg void OnDestroy();
// CDialog overrides
virtual BOOL OnInitDialog() = 0;
// CPropertyPage overrides
BOOL OnSetActive();
typedef CCreateNewObjectDataPage Base;
private:
virtual void initListContents(LPCWSTR containerPath) = 0;
protected:
HWND listview; HIMAGELIST listview_imagelist;
DECLARE_MESSAGE_MAP(); };
class CreateNewSitePage : public CreateAndChoosePage { public:
CreateNewSitePage();
protected:
// CDialog overrides
virtual BOOL OnInitDialog();
// CCreateNewObjectDataPage overrides
virtual HRESULT SetData(BOOL bSilent = FALSE);
// JonN 5/11/01 251560 Disable OK until site link chosen
DECLARE_MESSAGE_MAP() afx_msg void OnChange(); afx_msg void OnSelChange( NMHDR*, LRESULT* );
virtual BOOL ValidateName(LPCTSTR pcszName);
virtual HRESULT OnPostCommit(BOOL bSilent = FALSE);
virtual void initListContents(LPCWSTR containerPath);
private:
HRESULT tweakSiteLink(LPCTSTR siteDN); };
class CreateNewSiteWizard : public CCreateNewObjectWizardBase { public:
CreateNewSiteWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
protected:
// CCreateNewObjectWizardBase overrides
virtual void OnFinishSetInfoFailed(HRESULT hr); private:
CreateNewSitePage page; };
class CreateNewSubnetPage : public CreateAndChoosePage { public:
CreateNewSubnetPage();
protected:
// CDialog overrides
virtual BOOL OnInitDialog();
// CCreateNewObjectDataPage overrides
virtual HRESULT SetData(BOOL bSilent = FALSE);
virtual void initListContents(LPCWSTR containerPath);
private:
HRESULT tweakSiteLink(LPCTSTR siteDN);
protected: afx_msg void OnSubnetMaskChange();
DECLARE_MESSAGE_MAP(); };
class CreateNewSubnetWizard : public CCreateNewObjectWizardBase { public:
CreateNewSubnetWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo);
private:
CreateNewSubnetPage page; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// Shared between NEW SITE LINK WIZARD and NEW SITE LINK BRIDGE WIZARD
class DSPROP_BSTR_BLOCK; class CCreatePageWithDuellingListboxes : public CCreateNewObjectDataPage { public: CCreatePageWithDuellingListboxes( UINT nIDTemplate, LPCWSTR lpcwszAttrName, const DSPROP_BSTR_BLOCK& bstrblock );
protected: // interface to exchange data
virtual HRESULT SetData(BOOL bSilent = FALSE); virtual BOOL GetData(IADs* pIADsCopyFrom); virtual BOOL OnSetActive(); void SetWizardButtons();
protected: afx_msg void OnNameChange(); afx_msg void OnDuellingButtonAdd(); afx_msg void OnDuellingButtonRemove(); afx_msg void OnDuellingListboxSelchange(); afx_msg void OnDestroy();
CString m_strName; HWND m_hwndInListbox; HWND m_hwndOutListbox; CString m_strAttrName; const DSPROP_BSTR_BLOCK& m_bstrblock;
DECLARE_MESSAGE_MAP() };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW SITE LINK WIZARD
class CCreateNewSiteLinkPage : public CCreatePageWithDuellingListboxes { public: enum { IDD = IDD_CREATE_NEW_SITE_LINK }; CCreateNewSiteLinkPage( const DSPROP_BSTR_BLOCK& bstrblock );
protected: // interface to exchange data
virtual BOOL OnSetActive(); virtual BOOL OnInitDialog(); virtual HRESULT SetData(BOOL bSilent = FALSE); };
class CCreateNewSiteLinkWizard : public CCreateNewObjectWizardBase { public: CCreateNewSiteLinkWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo, const DSPROP_BSTR_BLOCK& bstrblock );
private: CCreateNewSiteLinkPage m_page1; };
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
// NEW SITE LINK BRIDGE WIZARD
class CCreateNewSiteLinkBridgePage : public CCreatePageWithDuellingListboxes { public: enum { IDD = IDD_CREATE_NEW_SITE_LINK_BRIDGE }; CCreateNewSiteLinkBridgePage( const DSPROP_BSTR_BLOCK& bstrblock );
protected: // interface to exchange data
virtual BOOL OnInitDialog(); virtual HRESULT SetData(BOOL bSilent = FALSE); };
class CCreateNewSiteLinkBridgeWizard : public CCreateNewObjectWizardBase { public: CCreateNewSiteLinkBridgeWizard(CNewADsObjectCreateInfo* pNewADsObjectCreateInfo, const DSPROP_BSTR_BLOCK& bstrblockSiteLinks );
private: CCreateNewSiteLinkBridgePage m_page1; };
#endif // _DLGCREAT_H
|