|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 2000 - 2001.
//
// File: AttrMap.cpp
//
// Contents: Attribute maps to define a property page
//
// History: 8-2001 Hiteshr Created
//
//----------------------------------------------------------------------------
#include "headers.h"
//+----------------------------------------------------------------------------
// Function:InitOneAttribute
// Synopsis: Initializes one attribute defined by pAttrMapEntry
// Arguments:pBaseAz: BaseAz object whose attribute is to be initialized
// pAttrMapEntry: Map entry defining the attribute
// bDlgReadOnly: If dialog box is readonly
// pWnd: Control Associated with attribute
// bNewObject: If the object is a newly created object.
// pbErrorDisplayed: Is Error Displayed by this function
// Returns:
// Note: if Object is newly created, we directly set the value,
// For existing objects, get the current value of attribute and
// only if its different from new value, set it.
//-----------------------------------------------------------------------------
HRESULT InitOneAttribute(IN CDialog *pDlg, IN CBaseAz * pBaseAz, IN ATTR_MAP* pAttrMap, IN BOOL bDlgReadOnly, IN CWnd* pWnd, OUT BOOL *pbErrorDisplayed) { TRACE_FUNCTION_EX(DEB_SNAPIN,InitOneAttribute)
if(!pDlg || !pAttrMap || !pWnd || !pbErrorDisplayed) { //ASSERT(pBaseAz); For New Dialogs this value is null
ASSERT(pDlg); ASSERT(pAttrMap); ASSERT(pWnd); ASSERT(pbErrorDisplayed); return E_POINTER; }
HRESULT hr = S_OK;
//If a function is provided, delegate initialization to it.
PATTR_FCN pAttrFcn = pAttrMap->pAttrInitFcn; if(pAttrFcn) { hr = (*pAttrFcn)(pDlg, pBaseAz, pAttrMap, bDlgReadOnly, pWnd, !pBaseAz, pbErrorDisplayed); CHECK_HRESULT(hr); return hr; } ATTR_INFO* pAttrInfo = &(pAttrMap->attrInfo);
switch (pAttrInfo->attrType) { case ARG_TYPE_STR: { CEdit* pEdit = (CEdit*)pWnd; if(pBaseAz) { //For existing object, Get the value of attribute and
//set it in the control
CString strValue; hr = pBaseAz->GetProperty(pAttrInfo->ulPropId, &strValue); BREAK_ON_FAIL_HRESULT(hr); pEdit->SetWindowText(strValue); } else if(pAttrMap->bDefaultValue) { //For new objects, if default value is provided for
//the attribute, set it in the control
CString strValue; if(IS_INTRESOURCE(pAttrMap->pszValue)) VERIFY(strValue.LoadString((ULONG)((ULONG_PTR)pAttrMap->pszValue))); else strValue = pAttrMap->pszValue;
pEdit->SetWindowText(strValue); }
if(pAttrMap->bReadOnly || bDlgReadOnly) pEdit->SetReadOnly(TRUE);
if(pAttrInfo->ulMaxLen) pEdit->SetLimitText(pAttrInfo->ulMaxLen); break; }
case ARG_TYPE_LONG: { CEdit* pEdit = (CEdit*)pWnd; if(pBaseAz) { LONG lValue; hr = pBaseAz->GetProperty(pAttrInfo->ulPropId, &lValue); BREAK_ON_FAIL_HRESULT(hr); SetLongValue(pEdit,lValue); } else if(pAttrMap->bDefaultValue) { SetLongValue(pEdit, pAttrMap->lValue); }
if(pAttrMap->bReadOnly || bDlgReadOnly) pEdit->SetReadOnly(TRUE);
if(pAttrInfo->ulMaxLen) pEdit->SetLimitText(pAttrInfo->ulMaxLen);
break; } case ARG_TYPE_BOOL: { CButton* pBtn = (CButton*)pWnd; if(pBaseAz) { BOOL bValue; hr = pBaseAz->GetProperty(pAttrInfo->ulPropId, &bValue); BREAK_ON_FAIL_HRESULT(hr); if(bValue) pBtn->SetCheck(1); }
if(pAttrMap->bReadOnly || bDlgReadOnly) { pBtn->EnableWindow(FALSE); } } }
return hr; }
//+----------------------------------------------------------------------------
// Function:SaveOneAttribute
// Synopsis:Saves one attribute defined by pAttrMapEntry
// Arguments:pBaseAz: BaseAz object whose attribute is to be saved
// pAttrMapEntry: Map entry defining the attribute
// pWnd: Control Associated with attribute
// bNewObject: If the object is a newly created object.
// pbErrorDisplayed: Is Error Displayed by this function
// Returns:
// Note: if Object is newly created, we directly set the value,
// For existing objects, get the current value of attribute and
// only if its different from new value, set it.
//-----------------------------------------------------------------------------
HRESULT SaveOneAttribute(CDialog* pDlg, CBaseAz * pBaseAz, ATTR_MAP* pAttrMap, CWnd* pWnd, BOOL bNewObject, BOOL *pbErrorDisplayed) {
TRACE_FUNCTION_EX(DEB_SNAPIN,SaveOneAttribute)
if(!pDlg || !pBaseAz || !pAttrMap || !pWnd || !pbErrorDisplayed) { ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); ASSERT(pbErrorDisplayed); return E_POINTER; }
HRESULT hr = S_OK;
//
//bRequired assumes that its EditBox
//
if(pAttrMap->bRequired) { if(!((CEdit*)pWnd)->GetWindowTextLength()) { DisplayError(pDlg->m_hWnd, pAttrMap->idRequired); *pbErrorDisplayed = TRUE; SetSel(*(CEdit*)pWnd); return E_INVALIDARG; } } //
//If a function is provided delegate saving to it.
//
PATTR_FCN pAttrFcn = pAttrMap->pAttrSaveFcn; if(pAttrFcn) { hr = (*pAttrFcn)(pDlg, pBaseAz, pAttrMap, FALSE, //This is ignored by save functions
pWnd, bNewObject, pbErrorDisplayed); CHECK_HRESULT(hr); return hr; }
ATTR_INFO* pAttrInfo = &(pAttrMap->attrInfo);
switch (pAttrInfo->attrType) { case ARG_TYPE_STR: { CString strNewValue; CEdit* pEdit = (CEdit*)pWnd; pEdit->GetWindowText(strNewValue);
if(!bNewObject) { //
//For existing object save the attribute value only if it has
//changed
//
CString strOldValue; hr = pBaseAz->GetProperty(pAttrInfo->ulPropId, &strOldValue); BREAK_ON_FAIL_HRESULT(hr);
if(strOldValue == strNewValue) break; } hr = pBaseAz->SetProperty(pAttrInfo->ulPropId, strNewValue); CHECK_HRESULT(hr); break; }
case ARG_TYPE_LONG: { CString strNewValue; CEdit* pEdit = (CEdit*)pWnd; pEdit->GetWindowText(strNewValue);
LONG lNewValue; if(!ConvertStringToLong(strNewValue,lNewValue,pDlg->m_hWnd)) { if(pbErrorDisplayed) *pbErrorDisplayed = TRUE; SetSel(*(CEdit*)pWnd); return E_INVALIDARG; } lNewValue = _wtol(strNewValue); if(!bNewObject) { //
//For existing object save the attribute value only if it has
//changed
//
LONG lOldValue; hr = pBaseAz->GetProperty(pAttrInfo->ulPropId, &lOldValue); BREAK_ON_FAIL_HRESULT(hr);
if(lNewValue == lOldValue) break; } hr = pBaseAz->SetProperty(pAttrInfo->ulPropId, lNewValue); CHECK_HRESULT(hr); break; }
case ARG_TYPE_BOOL: { BOOL bNewValue; CButton* pCheckBox = (CButton*)pWnd; bNewValue = pCheckBox->GetCheck(); if(!bNewObject) { BOOL bOldValue; hr = pBaseAz->GetProperty(pAttrInfo->ulPropId, &bOldValue); BREAK_ON_FAIL_HRESULT(hr);
if(bNewValue == bOldValue) break; } hr = pBaseAz->SetProperty(pAttrInfo->ulPropId, bNewValue); CHECK_HRESULT(hr); break; } }
return hr; }
//+----------------------------------------------------------------------------
// Function:InitDlgFromAttrMap
// Synopsis:Initializes Dialog box from Attribute Map
// Arguments:
// pDlg: Dialog Box
// pAttrMap: Attribute Map
// pBaseAz: BaseAz object corresponding to attribute map
// bDlgReadOnly: Dialog box is in Readonly Mode
//-----------------------------------------------------------------------------
BOOL InitDlgFromAttrMap(IN CDialog* pDlg, IN ATTR_MAP* pAttrMap, IN CBaseAz* pBaseAz, IN BOOL bDlgReadOnly) { if(!pDlg || !pAttrMap) { ASSERT(pDlg); //ASSERT(pBaseAz); //For new objects this value is null
ASSERT(pAttrMap); return FALSE; }
HRESULT hr = S_OK; BOOL bErrorDisplayed;
while(pAttrMap->nControlId) { CWnd* pWnd = pDlg->GetDlgItem(pAttrMap->nControlId); if(!pWnd) { ASSERT(pWnd); hr = E_UNEXPECTED; break; }
hr = InitOneAttribute(pDlg, pBaseAz, pAttrMap, bDlgReadOnly, pWnd, &bErrorDisplayed);
if(FAILED(hr)) { return FALSE; } pAttrMap++; } return TRUE; }
//+----------------------------------------------------------------------------
// Function:SaveAttrMapChanges
// Synopsis:Saves the attributes defined in AttrMap
// Arguments:pDlg: Dialog box
// pAttrMap: Attribute Map
// pBaseAz: BaseAz object corresponding to attribute map
// bNewObject if the object is new created
// pbErrorDisplayed: Is Error Displayed by this function
// ppErrorAttrMapEntry: In case of failuer get pointer to error
// Attribute Map Entry.
// Returns:
//-----------------------------------------------------------------------------
HRESULT SaveAttrMapChanges(IN CDialog* pDlg, IN ATTR_MAP* pAttrMap, IN CBaseAz* pBaseAz, IN BOOL bNewObject, OUT BOOL *pbErrorDisplayed, OUT ATTR_MAP** ppErrorAttrMap) { if(!pDlg || !pAttrMap || !pBaseAz || !pbErrorDisplayed ) { ASSERT(pDlg); ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pbErrorDisplayed); return E_POINTER; }
HRESULT hr = S_OK;
while(pAttrMap->nControlId) { CWnd* pWnd = pDlg->GetDlgItem(pAttrMap->nControlId); if(!pWnd) { ASSERT(pWnd); hr = E_UNEXPECTED; break; }
if(pAttrMap->bReadOnly || pAttrMap->bUseForInitOnly) { ++pAttrMap; continue; } //
//Save this attribute
//
hr = SaveOneAttribute(pDlg, pBaseAz, pAttrMap, pWnd, bNewObject, pbErrorDisplayed); if(FAILED(hr)) { if(ppErrorAttrMap) *ppErrorAttrMap = pAttrMap; return hr; }
++pAttrMap; } return S_OK; }
#define CMD_TYPE void*
#define DECLARE_ATTR_FN(fnname) \
HRESULT fnname(CDialog *pDlg, \ CBaseAz* pBaseAz, \ ATTR_MAP * pAttrMap, \ BOOL bDlgReadOnly, \ CWnd* pWnd, \ BOOL bNewObject, \ BOOL *bpSilent);
#define ATTR_MAP_ENTRY(attrType, \
ulPropId, \ ulMaxLen, \ bReadOnly, \ bUsedForInitOnly, \ bRequired, \ idRequired, \ bDefaultValue, \ value, \ nControlId, \ pAttrInitFcn, \ pAttrSaveFcn) \ {{attrType,ulPropId,ulMaxLen}, \ bReadOnly, \ bUsedForInitOnly, \ bRequired, \ idRequired, \ bDefaultValue, \ value, \ nControlId, \ pAttrInitFcn, \ pAttrSaveFcn} #define ATTR_END_ENTRY ATTR_MAP_ENTRY(((ATTR_TYPE)0),0,0,0,0,0,0,0,0,0,0,0)
#define ATTR_NORMAL_STRING_ENTRY( ulPropId, ulMaxLen, bReadOnly, nControlId) \
ATTR_MAP_ENTRY(ARG_TYPE_STR,ulPropId,ulMaxLen,bReadOnly,FALSE,FALSE,0,FALSE,0,nControlId,NULL,NULL)
#define ATTR_NORMAL_STRING_ENTRY_WITH_INIT_FP( ulPropId, ulMaxLen, bReadOnly, nControlId, fp) \
ATTR_MAP_ENTRY(ARG_TYPE_STR,ulPropId,ulMaxLen,bReadOnly,FALSE,FALSE,0,FALSE,0,nControlId,fp,NULL)
#define ATTR_NORMAL_STRING_ENTRY_WITH_SAVE_FP( ulPropId, ulMaxLen, bReadOnly, nControlId, fp) \
ATTR_MAP_ENTRY(ARG_TYPE_STR,ulPropId,ulMaxLen,bReadOnly,FALSE,FALSE,0,FALSE,0,nControlId,NULL,fp)
#define ATTR_REQUIRED_STRING_ENTRY(ulPropId, ulMaxLen, idRequired, nControlId) \
ATTR_MAP_ENTRY(ARG_TYPE_STR,ulPropId,ulMaxLen,FALSE,FALSE,TRUE,idRequired,FALSE,0,nControlId,NULL,NULL)
#define ATTR_REQUIRED_STRING_ENTRY_WITH_SAVE_FP(ulPropId, ulMaxLen, idRequired, nControlId, fp) \
ATTR_MAP_ENTRY(ARG_TYPE_STR,ulPropId,ulMaxLen,FALSE,FALSE,TRUE,idRequired,FALSE,0,nControlId,NULL,fp)
#define ATTR_STRING_ENTRY_FOR_INIT_ONLY(ulMaxLen, nControlId) \
ATTR_MAP_ENTRY(ARG_TYPE_STR,0,ulMaxLen,FALSE,TRUE,FALSE,0,FALSE,0,nControlId,NULL,NULL)
#define ATTR_NORMAL_LONG_ENTRY(ulPropId, bReadOnly, nControlId) \
ATTR_MAP_ENTRY(ARG_TYPE_LONG,ulPropId,0,bReadOnly,FALSE,FALSE,0,FALSE,0,nControlId,NULL, NULL)
#define ATTR_REQUIRED_LONG_ENTRY(ulPropId, idRequired, nControlId) \
ATTR_MAP_ENTRY(ARG_TYPE_LONG,ulPropId,0,FALSE,FALSE,TRUE,idRequired,FALSE,0,nControlId,NULL,NULL)
#define ATTR_REQUIRED_LONG_ENTRY_WITH_SAVE_FP(ulPropId, idRequired, nControlId, fp) \
ATTR_MAP_ENTRY(ARG_TYPE_LONG,ulPropId,0,FALSE,FALSE,TRUE,idRequired,FALSE,0,nControlId,NULL,fp)
#define ATTR_REQUIRED_LONG_ENTRY_WITH_INIT_AND_SAVE_FP(ulPropId, idRequired, nControlId, ifp,sfp) \
ATTR_MAP_ENTRY(ARG_TYPE_LONG,ulPropId,0,FALSE,FALSE,TRUE,idRequired,FALSE,0,nControlId,ifp,sfp)
#define ATTR_REQUIRED_LONG_ENTRY_WITH_DEFAULT(ulPropId, idRequired, lValue, nControlId) \
ATTR_MAP_ENTRY(ARG_TYPE_LONG,ulPropId,0,FALSE,FALSE,TRUE,idRequired,TRUE,(CMD_TYPE)lValue,nControlId,NULL,NULL)
#define ATTR_NORMAL_BOOL_ENTRY(ulPropId, nControlId) \
ATTR_MAP_ENTRY(ARG_TYPE_BOOL,ulPropId, 0, FALSE,FALSE,FALSE,0,FALSE,0,nControlId,NULL,NULL)
//Functions
DECLARE_ATTR_FN(ATTR_INIT_FN_ADMIN_MANAGER_NAME) DECLARE_ATTR_FN(ATTR_INIT_FN_ADMIN_MANAGER_STORE_TYPE) DECLARE_ATTR_FN(ATTR_SAVE_FN_NAME) DECLARE_ATTR_FN(ATTR_INIT_FN_GROUP_TYPE) DECLARE_ATTR_FN(ATTR_SAVE_FN_OPERATION_ID) DECLARE_ATTR_FN(ATTR_SAVE_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT) DECLARE_ATTR_FN(ATTR_INIT_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT) DECLARE_ATTR_FN(ATTR_SAVE_FN_ADMIN_MANAGER_LDAP_QUERY_TIMEOUT)
#define ATTR_DESCRIPTION \
ATTR_NORMAL_STRING_ENTRY(AZ_PROP_DESCRIPTION,AZ_MAX_DESCRIPTION_LENGTH,FALSE,IDC_EDIT_DESCRIPTION)
//
//ADMIN_MANAGER General Property page entry
//
#define ATTR_ADMIN_MANAGER_NAME \
ATTR_NORMAL_STRING_ENTRY_WITH_INIT_FP(AZ_PROP_NAME, \ AZ_MAX_POLICY_URL_LENGTH, \ TRUE, \ IDC_EDIT_NAME, \ ATTR_INIT_FN_ADMIN_MANAGER_NAME)
#define ATTR_ADMIN_MANAGER_STORE_TYPE \
ATTR_NORMAL_STRING_ENTRY_WITH_INIT_FP(AZ_PROP_NAME, \ 0, \ TRUE, \ IDC_EDIT_STORE_TYPE, \ ATTR_INIT_FN_ADMIN_MANAGER_STORE_TYPE)
ATTR_MAP ATTR_MAP_ADMIN_MANAGER_GENERAL_PROPERTY[] = { ATTR_ADMIN_MANAGER_NAME, ATTR_DESCRIPTION, ATTR_ADMIN_MANAGER_STORE_TYPE, ATTR_END_ENTRY, };
//
//ADMIN_MANAGER new/open dialog entry
//
#define ATTR_NEW_ADMIN_MANAGER_NAME \
ATTR_STRING_ENTRY_FOR_INIT_ONLY(AZ_MAX_POLICY_URL_LENGTH, \ IDC_EDIT_NAME)
#define ATTR_NEW_ADMIN_MANAGER_DESC \
ATTR_STRING_ENTRY_FOR_INIT_ONLY(AZ_MAX_DESCRIPTION_LENGTH, \ IDC_EDIT_NAME)
ATTR_MAP ATTR_MAP_NEW_ADMIN_MANAGER[] = { ATTR_NEW_ADMIN_MANAGER_NAME, ATTR_NEW_ADMIN_MANAGER_DESC, ATTR_END_ENTRY, };
ATTR_MAP ATTR_MAP_OPEN_ADMIN_MANAGER[] = { ATTR_NEW_ADMIN_MANAGER_NAME, ATTR_END_ENTRY, };
//
//ADMIN_MANAGER Advanced Property Page
//
#define ATTR_ADMIN_MANAGER_DOMAIN_TIMEOUT \
ATTR_REQUIRED_LONG_ENTRY_WITH_SAVE_FP(AZ_PROP_AZSTORE_DOMAIN_TIMEOUT, \ IDS_DOMAIN_TIMEOUT_REQUIRED, \ IDC_EDIT_DOMAIN_TIMEOUT, \ ATTR_SAVE_FN_ADMIN_MANAGER_LDAP_QUERY_TIMEOUT)
#define ATTR_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT \
ATTR_REQUIRED_LONG_ENTRY_WITH_INIT_AND_SAVE_FP(AZ_PROP_AZSTORE_SCRIPT_ENGINE_TIMEOUT, \ IDS_SCRIPT_ENGINE_TIMEOUT_REQUIRED, \ IDC_EDIT_SCRIPT_ENGINE_TIMEOUT, \ ATTR_INIT_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT, \ ATTR_SAVE_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT)
#define ATTR_ADMIN_MANAGER_MAX_SCRIPT_ENGINES \
ATTR_REQUIRED_LONG_ENTRY(AZ_PROP_AZSTORE_MAX_SCRIPT_ENGINES, \ IDS_MAX_SCRIPT_ENGINES_REQUIRED, \ IDC_EDIT_MAX_SCRIPT_ENGINE)
ATTR_MAP ATTR_MAP_ADMIN_MANAGER_ADVANCED_PROPERTY[] = { ATTR_ADMIN_MANAGER_DOMAIN_TIMEOUT, ATTR_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT, ATTR_ADMIN_MANAGER_MAX_SCRIPT_ENGINES, ATTR_END_ENTRY, };
//
//APPLICATION General Property Page Entry
//
#define ATTR_APPLICATION_NAME \
ATTR_REQUIRED_STRING_ENTRY_WITH_SAVE_FP(AZ_PROP_NAME, \ AZ_MAX_APPLICATION_NAME_LENGTH, \ IDS_NAME_REQUIRED, \ IDC_EDIT_NAME, \ ATTR_SAVE_FN_NAME)
#define ATTR_APPLICATION_VERSION \
ATTR_NORMAL_STRING_ENTRY(AZ_PROP_APPLICATION_VERSION, \ AZ_MAX_APPLICATION_VERSION_LENGTH, \ FALSE, \ IDC_EDIT_VERSION)
ATTR_MAP ATTR_MAP_APPLICATION_GENERAL_PROPERTY[] = { ATTR_APPLICATION_NAME, ATTR_DESCRIPTION, ATTR_APPLICATION_VERSION, ATTR_END_ENTRY, };
//
//New Application Dlg Map
//
#define ATTR_NEW_APPLICATION_NAME \
ATTR_STRING_ENTRY_FOR_INIT_ONLY(AZ_MAX_APPLICATION_NAME_LENGTH, \ IDC_EDIT_NAME)
ATTR_MAP ATTR_MAP_NEW_APPLICATION[] = { ATTR_NEW_APPLICATION_NAME, ATTR_DESCRIPTION, ATTR_APPLICATION_VERSION, ATTR_END_ENTRY, };
//
//Scope General Property Page Entry
//
#define ATTR_SCOPE_NAME \
ATTR_REQUIRED_STRING_ENTRY_WITH_SAVE_FP(AZ_PROP_NAME, \ AZ_MAX_SCOPE_NAME_LENGTH, \ IDS_NAME_REQUIRED, \ IDC_EDIT_NAME, \ ATTR_SAVE_FN_NAME)
ATTR_MAP ATTR_MAP_SCOPE_GENERAL_PROPERTY[] = { ATTR_SCOPE_NAME, ATTR_DESCRIPTION, ATTR_END_ENTRY, };
//
//New SCOPE Dlg Map
//
#define ATTR_NEW_SCOPE_NAME \
ATTR_STRING_ENTRY_FOR_INIT_ONLY(AZ_MAX_SCOPE_NAME_LENGTH, \ IDC_EDIT_NAME)
ATTR_MAP ATTR_MAP_NEW_SCOPE[] = { ATTR_NEW_SCOPE_NAME, ATTR_DESCRIPTION, ATTR_END_ENTRY, };
//
//Group General Property Page Entry
//
#define ATTR_GROUP_NAME \
ATTR_REQUIRED_STRING_ENTRY_WITH_SAVE_FP(AZ_PROP_NAME, \ AZ_MAX_GROUP_NAME_LENGTH, \ IDS_NAME_REQUIRED, \ IDC_EDIT_NAME, \ ATTR_SAVE_FN_NAME)
#define ATTR_GROUP_TYPE \
ATTR_NORMAL_STRING_ENTRY_WITH_INIT_FP(AZ_PROP_GROUP_TYPE, \ 0, \ TRUE, \ IDC_EDIT_GROUP_TYPE, \ ATTR_INIT_FN_GROUP_TYPE)
ATTR_MAP ATTR_MAP_GROUP_GENERAL_PROPERTY[] = { ATTR_GROUP_NAME, ATTR_DESCRIPTION, ATTR_GROUP_TYPE, ATTR_END_ENTRY, };
//
//New GROUP Dlg Map
//
#define ATTR_NEW_GROUP_NAME \
ATTR_STRING_ENTRY_FOR_INIT_ONLY(AZ_MAX_GROUP_NAME_LENGTH, \ IDC_EDIT_NAME)
ATTR_MAP ATTR_MAP_NEW_GROUP[] = { ATTR_NEW_GROUP_NAME, ATTR_DESCRIPTION, ATTR_END_ENTRY, };
//
//Group LDAP Query Property Page Entry
//
#define ATTR_GROUP_LDAP_QUERY \
ATTR_NORMAL_STRING_ENTRY(AZ_PROP_GROUP_LDAP_QUERY, \ AZ_MAX_GROUP_LDAP_QUERY_LENGTH, \ FALSE, \ IDC_EDIT_LDAP_QUERY)
ATTR_MAP ATTR_MAP_GROUP_QUERY_PROPERTY[] = { ATTR_GROUP_LDAP_QUERY, ATTR_END_ENTRY, };
//
//Task General Property Page Entry
//
#define ATTR_TASK_NAME \
ATTR_REQUIRED_STRING_ENTRY_WITH_SAVE_FP(AZ_PROP_NAME, \ AZ_MAX_TASK_NAME_LENGTH, \ IDS_NAME_REQUIRED, \ IDC_EDIT_NAME, \ ATTR_SAVE_FN_NAME)
ATTR_MAP ATTR_MAP_TASK_GENERAL_PROPERTY[] = { ATTR_TASK_NAME, ATTR_DESCRIPTION, ATTR_END_ENTRY, };
//
//New TASK Dlg Map
//
#define ATTR_NEW_TASK_NAME \
ATTR_STRING_ENTRY_FOR_INIT_ONLY(AZ_MAX_TASK_NAME_LENGTH, \ IDC_EDIT_NAME)
ATTR_MAP ATTR_MAP_NEW_TASK[] = { ATTR_NEW_TASK_NAME, ATTR_DESCRIPTION, ATTR_END_ENTRY, };
//
//Role General Property Page
//
#define ATTR_ROLE_NAME \
ATTR_REQUIRED_STRING_ENTRY_WITH_SAVE_FP(AZ_PROP_NAME, \ AZ_MAX_ROLE_NAME_LENGTH, \ IDS_NAME_REQUIRED, \ IDC_EDIT_NAME, \ ATTR_SAVE_FN_NAME)
ATTR_MAP ATTR_MAP_ROLE_GENERAL_PROPERTY[] = { ATTR_ROLE_NAME, ATTR_DESCRIPTION, ATTR_END_ENTRY, };
//
//Operation General Property Page Entry
//
#define ATTR_OPERATION_NAME \
ATTR_REQUIRED_STRING_ENTRY_WITH_SAVE_FP(AZ_PROP_NAME, \ AZ_MAX_OPERATION_NAME_LENGTH, \ IDS_NAME_REQUIRED, \ IDC_EDIT_NAME, \ ATTR_SAVE_FN_NAME)
#define ATTR_OPERATION_ID \
ATTR_REQUIRED_LONG_ENTRY_WITH_SAVE_FP(AZ_PROP_OPERATION_ID, \ IDS_OPERATION_ID_REQUIRED, \ IDC_EDIT_OPERATION_NUMBER, \ ATTR_SAVE_FN_OPERATION_ID)
ATTR_MAP ATTR_MAP_OPERATION_GENERAL_PROPERTY[] = { ATTR_OPERATION_NAME, ATTR_DESCRIPTION, ATTR_OPERATION_ID, ATTR_END_ENTRY, };
//
//New Operation Dlg Map
//
#define ATTR_NEW_OPERATION_NAME \
ATTR_STRING_ENTRY_FOR_INIT_ONLY(AZ_MAX_OPERATION_NAME_LENGTH, \ IDC_EDIT_NAME)
ATTR_MAP ATTR_MAP_NEW_OPERATION[] = { ATTR_NEW_OPERATION_NAME, ATTR_DESCRIPTION, ATTR_OPERATION_ID, ATTR_END_ENTRY, };
//
//Script Dialog
//
#define ATTR_SCRIPT_CODE \
ATTR_NORMAL_STRING_ENTRY(AZ_PROP_TASK_BIZRULE, \ AZ_MAX_TASK_BIZRULE_LENGTH, \ TRUE, \ IDC_EDIT_CODE)
#define ATTR_SCRIPT_PATH \
ATTR_NORMAL_STRING_ENTRY(AZ_PROP_TASK_BIZRULE_IMPORTED_PATH, \ AZ_MAX_TASK_BIZRULE_IMPORTED_PATH_LENGTH, \ FALSE, \ IDC_EDIT_PATH)
ATTR_MAP ATTR_MAP_SCRIPT_DIALOG[] = { ATTR_SCRIPT_CODE, ATTR_SCRIPT_PATH, ATTR_END_ENTRY, };
HRESULT ATTR_INIT_FN_ADMIN_MANAGER_NAME(CDialog* /*pDlg*/, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL /*bDlgReadOnly*/, CWnd* pWnd, BOOL /*bNewObject*/, BOOL*) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_INIT_FN_ADMIN_MANAGER_NAME)
if(!pBaseAz || !pAttrMap || !pWnd) { ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); return E_POINTER; }
CString strName = pBaseAz->GetName(); CEdit *pEdit = (CEdit*)pWnd;
pEdit->SetWindowText(strName); pEdit->SetReadOnly(TRUE); pEdit->SetLimitText(pAttrMap->attrInfo.ulMaxLen); return S_OK; }
HRESULT ATTR_INIT_FN_ADMIN_MANAGER_STORE_TYPE(CDialog* /*pDlg*/, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL /*bDlgReadOnly*/, CWnd* pWnd, BOOL /*bNewObject*/, BOOL*) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_INIT_FN_ADMIN_MANAGER_STORE_TYPE) if(!pBaseAz || !pAttrMap || !pWnd) { ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); return E_POINTER; }
CAdminManagerAz* pAdminManagerAz = dynamic_cast<CAdminManagerAz*>(pBaseAz); if(!pAdminManagerAz) { ASSERT(pAdminManagerAz); return E_UNEXPECTED; }
//Set Store Type
ULONG ulStoreType = pAdminManagerAz->GetStoreType(); CEdit* pEditStoreType = (CEdit*)pWnd; CString strStoreType; strStoreType.LoadString((ulStoreType == AZ_ADMIN_STORE_XML) ? IDS_SCOPE_TYPE_XML:IDS_SCOPE_TYPE_AD); pEditStoreType->SetWindowText(strStoreType); pEditStoreType->SetReadOnly(TRUE);
return S_OK; }
HRESULT ATTR_SAVE_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT(CDialog* pDlg, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL /*bDlgReadOnly*/, CWnd* pWnd, BOOL /*bNewObject*/, BOOL* pbErrorDisplayed) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_SAVE_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT)
if(!pDlg || !pBaseAz || !pAttrMap || !pWnd || !pbErrorDisplayed) { ASSERT(pDlg); ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); ASSERT(pbErrorDisplayed); return E_POINTER; }
HRESULT hr = S_OK; //Get new value of authorization script
LONG lNewValue = 0; //Authorization script is disabled
if( ((CButton*)(pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_DISABLED)))->GetCheck() == BST_CHECKED) { lNewValue = 0; } //Authorization script is enabled with no timeout value.
else if( ((CButton*)(pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_ENABLED_NO_TIMEOUT)))->GetCheck() == BST_CHECKED) { lNewValue = -1; } //Authorization script is enabled with timeout
else if( ((CButton*)(pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_ENABLED_WITH_TIMEOUT)))->GetCheck() == BST_CHECKED) { if(!GetLongValue((*(CEdit*)pWnd), lNewValue,pDlg->m_hWnd)) { SetSel(*(CEdit*)pWnd); *pbErrorDisplayed = TRUE; return E_INVALIDARG; } }
LONG lOldValue = 0; hr = pBaseAz->GetProperty(pAttrMap->attrInfo.ulPropId,&lOldValue); if(FAILED(hr)) { return hr; }
if(lNewValue == lOldValue) return S_OK;
if(lNewValue != 0 && lNewValue != -1) { //
//There is a minimum for scipt engine timeout
//
if(lNewValue < AZ_AZSTORE_MIN_SCRIPT_ENGINE_TIMEOUT) { DisplayError(pDlg->m_hWnd, IDS_ADMIN_MIN_SCRIPT_ENGINE_TIMEOUT, lNewValue, AZ_AZSTORE_MIN_SCRIPT_ENGINE_TIMEOUT); SetSel(*(CEdit*)pWnd);
*pbErrorDisplayed = TRUE; return E_INVALIDARG; } } hr = pBaseAz->SetProperty(pAttrMap->attrInfo.ulPropId,lNewValue); return hr; }
HRESULT ATTR_INIT_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT(CDialog* pDlg, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL bDlgReadOnly, CWnd* pWnd, BOOL /*bNewObject*/, BOOL* pbErrorDisplayed) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_SAVE_FN_ADMIN_MANAGER_SCRIPT_ENGINE_TIMEOUT)
if(!pDlg || !pBaseAz || !pAttrMap || !pWnd || !pbErrorDisplayed) { ASSERT(pDlg); ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); ASSERT(pbErrorDisplayed); return E_POINTER; }
//Get Authorization Script timeout value
LONG lAuthScriptTimout = 0; HRESULT hr = pBaseAz->GetProperty(pAttrMap->attrInfo.ulPropId,&lAuthScriptTimout); if(FAILED(hr)) { return hr; }
//Script timeout is infinite
if(-1 == lAuthScriptTimout) { ((CButton*)pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_ENABLED_NO_TIMEOUT))->SetCheck(BST_CHECKED); //Disabel autorization script timeout textbox and set text to infinite
CString strInfinite; VERIFY(strInfinite.LoadString(IDS_INFINITE)); ((CEdit*)pWnd)->SetWindowText(strInfinite); pWnd->EnableWindow(FALSE); } else { SetLongValue((CEdit*)pWnd,lAuthScriptTimout); //Script is disabled
if(0 == lAuthScriptTimout) { ((CButton*)pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_DISABLED))->SetCheck(BST_CHECKED);
//Disable max script engine textbox
(pDlg->GetDlgItem(IDC_EDIT_MAX_SCRIPT_ENGINE))->EnableWindow(FALSE); //Disable autorization script timeout textbox
pWnd->EnableWindow(FALSE); } else { ((CButton*)pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_ENABLED_WITH_TIMEOUT))->SetCheck(BST_CHECKED); } }
if(bDlgReadOnly) { pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_DISABLED)->EnableWindow(FALSE); pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_ENABLED_NO_TIMEOUT)->EnableWindow(FALSE); pDlg->GetDlgItem(IDC_RADIO_AUTH_SCRIPT_ENABLED_WITH_TIMEOUT)->EnableWindow(FALSE); ((CEdit*)pWnd)->SetReadOnly(); }
return hr; }
HRESULT ATTR_SAVE_FN_ADMIN_MANAGER_LDAP_QUERY_TIMEOUT(CDialog* pDlg, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL /*bDlgReadOnly*/, CWnd* pWnd, BOOL /*bNewObject*/, BOOL* pbErrorDisplayed) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_SAVE_FN_ADMIN_MANAGER_LDAP_QUERY_TIMEOUT)
if(!pDlg || !pBaseAz || !pAttrMap || !pWnd || !pbErrorDisplayed) { ASSERT(pDlg); ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); ASSERT(pbErrorDisplayed); return E_POINTER; }
HRESULT hr = S_OK;
LONG lNewValue = 0; if(!GetLongValue((*(CEdit*)pWnd), lNewValue,pDlg->m_hWnd)) { pWnd->SetFocus(); SetSel(*(CEdit*)pWnd); *pbErrorDisplayed = TRUE; return E_INVALIDARG; } LONG lOldValue = 0; hr = pBaseAz->GetProperty(pAttrMap->attrInfo.ulPropId,&lOldValue); if(FAILED(hr)) { return hr; }
if(lNewValue == lOldValue) return S_OK;
//
//There is a minimum for scipt engine timeout
//
if(lNewValue < AZ_AZSTORE_MIN_DOMAIN_TIMEOUT) { DisplayError(pDlg->m_hWnd, IDS_MIN_QUERY_TIMEOUT, lNewValue, AZ_AZSTORE_MIN_DOMAIN_TIMEOUT);
*pbErrorDisplayed = TRUE; SetSel(*(CEdit*)pWnd); return E_INVALIDARG; } hr = pBaseAz->SetProperty(pAttrMap->attrInfo.ulPropId,lNewValue); return hr; }
HRESULT ATTR_SAVE_FN_NAME(CDialog* pDlg, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL /*bDlgReadOnly*/, CWnd* pWnd, BOOL /*bNewObject*/, BOOL* pbErrorDisplayed) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_SAVE_FN_NAME)
if(!pDlg || !pBaseAz || !pAttrMap || !pWnd) { ASSERT(pDlg); ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); return E_POINTER; }
CString strNewName; ((CEdit*)pWnd)->GetWindowText(strNewName);
CString strOldName = pBaseAz->GetName();
if(strOldName == strNewName) return S_OK;
HRESULT hr = pBaseAz->SetName(strNewName);
if(FAILED(hr)) { ErrorMap * pErrorMap = GetErrorMap(pBaseAz->GetObjectType()); if(!pErrorMap) { ASSERT(FALSE); return E_UNEXPECTED; }
if(hr == HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)) { if((pBaseAz->GetObjectType() == TASK_AZ) && ((CTaskAz*)pBaseAz)->IsRoleDefinition()) { ::DisplayError(pDlg->m_hWnd,IDS_ROLE_DEFINITION_NAME_EXIST,strNewName); } else { ::DisplayError(pDlg->m_hWnd,pErrorMap->idNameAlreadyExist,strNewName); } *pbErrorDisplayed = TRUE; } if(hr == HRESULT_FROM_WIN32(ERROR_INVALID_NAME)) { ::DisplayError(pDlg->m_hWnd,pErrorMap->idInvalidName,pErrorMap->pszInvalidChars); *pbErrorDisplayed = TRUE; } }
return hr; }
HRESULT ATTR_INIT_FN_GROUP_TYPE(CDialog* /*pDlg*/, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL /*bDlgReadOnly*/, CWnd* pWnd, BOOL /*bNewObject*/, BOOL*) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_INIT_FN_GROUP_TYPE) if(!pBaseAz || !pAttrMap || !pWnd) { ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); return E_POINTER; }
CGroupAz* pGroupAz = dynamic_cast<CGroupAz*>(pBaseAz); if(!pGroupAz) { ASSERT(pGroupAz); return E_UNEXPECTED; }
//Get Store Type
LONG lGroupType; HRESULT hr = pGroupAz->GetGroupType(&lGroupType); if(FAILED(hr)) { return hr; } CEdit* pEditGroupType = (CEdit*)pWnd; CString strGroupType; strGroupType.LoadString((lGroupType == AZ_GROUPTYPE_LDAP_QUERY) ? IDS_TYPE_LDAP_GROUP:IDS_TYPE_BASIC_GROUP); pEditGroupType->SetWindowText(strGroupType); pEditGroupType->SetReadOnly(TRUE);
return S_OK; }
HRESULT ATTR_SAVE_FN_OPERATION_ID(CDialog* pDlg, CBaseAz* pBaseAz, ATTR_MAP * pAttrMap, BOOL /*bDlgReadOnly*/, CWnd* pWnd, BOOL bNewObject, BOOL* pbErrorDisplayed) { TRACE_FUNCTION_EX(DEB_SNAPIN,ATTR_SAVE_FN_OPERATION_ID) if(!pDlg || !pBaseAz || !pAttrMap || !pWnd) { ASSERT(pDlg); ASSERT(pBaseAz); ASSERT(pAttrMap); ASSERT(pWnd); return E_POINTER; }
COperationAz* pOperationAz = dynamic_cast<COperationAz*>(pBaseAz); if(!pOperationAz) { ASSERT(pOperationAz); return E_UNEXPECTED; }
//Get new Operation ID
LONG lNewOperationId = 0; if(!GetLongValue((*(CEdit*)pWnd), lNewOperationId,pDlg->m_hWnd)) { SetSel(*(CEdit*)pWnd); *pbErrorDisplayed = TRUE; return E_INVALIDARG; }
if(bNewObject) { LONG lOldOperationId = 0; HRESULT hr = pOperationAz->GetProperty(AZ_PROP_OPERATION_ID,&lOldOperationId); if(FAILED(hr)) { return hr; }
if(lNewOperationId == lOldOperationId) return S_OK; }
HRESULT hr = pOperationAz->SetProperty(AZ_PROP_OPERATION_ID,lNewOperationId);
if(FAILED(hr)) { if(hr == HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)) { CString strOperationId; ((CEdit*)pWnd)->GetWindowText(strOperationId); ::DisplayError(pDlg->m_hWnd, IDS_ERROR_OPERATION_ID_EXISTS, strOperationId); *pbErrorDisplayed = TRUE; SetSel(*(CEdit*)pWnd); } }
return hr; }
|