mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
567 lines
14 KiB
567 lines
14 KiB
/////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 1996-1999 Microsoft Corporation
|
|
//
|
|
// Module Name:
|
|
// LCPair.h
|
|
//
|
|
// Abstract:
|
|
// Definition of the CModifyNodesDlg and CModifyResourcesDlg dialogs.
|
|
//
|
|
// Implementation File:
|
|
// LCPair.cpp
|
|
//
|
|
// Author:
|
|
// David Potter (davidp) April 16, 1998
|
|
//
|
|
// Revision History:
|
|
//
|
|
// Notes:
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __LCPAIR_H_
|
|
#define __LCPAIR_H_
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Forward Class Declarations
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
template < class T, class BaseT > class CModifyNodesDlg;
|
|
template < class T, class BaseT > class CModifyResourcesDlg;
|
|
class CModifyPreferredOwners;
|
|
class CModifyPossibleOwners;
|
|
class CModifyDependencies;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// External Class Declarations
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
class CClusGroupInfo;
|
|
class CClusResInfo;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Include Files
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __CLUSOBJ_H_
|
|
#include "ClusObj.h" // for CClusterObject, CClusObjPtrList
|
|
#endif
|
|
|
|
#ifndef __ATLLCPAIR_H_
|
|
#include "AtlLCPair.h" // for CListCtrlPair
|
|
#endif
|
|
|
|
#ifndef __ATLBASEDLG_H_
|
|
#include "AtlBaseDlg.h" // for CBaseDlg
|
|
#endif
|
|
|
|
#ifndef __HELPDATA_H_
|
|
#include "HelpData.h" // for control id to help context id mapping array
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Type Definitions
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// class CModifyNodesDlg
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
template < class T, class BaseT >
|
|
class CModifyNodesDlg : public CListCtrlPair< T, CClusNodeInfo, BaseT >
|
|
{
|
|
typedef CModifyNodesDlg< T, BaseT > thisClass;
|
|
typedef CListCtrlPair< T, CClusNodeInfo, BaseT > baseClass;
|
|
|
|
public:
|
|
//
|
|
// Construction
|
|
//
|
|
|
|
// Constructor taking a string pointer for the title
|
|
CModifyNodesDlg(
|
|
IN CClusterAppWizard * pwiz,
|
|
IN DWORD dwStyle,
|
|
IN LPCTSTR pszTitle = NULL
|
|
)
|
|
: baseClass(
|
|
dwStyle | /*LCPS_PROPERTIES_BUTTON | */(dwStyle & LCPS_ORDERED ? LCPS_CAN_BE_ORDERED : 0),
|
|
pszTitle
|
|
)
|
|
{
|
|
ASSERT( pwiz != NULL );
|
|
|
|
m_pwiz = pwiz;
|
|
|
|
} //*** CModifyNodesDlg()
|
|
|
|
// Constructor taking a resource ID for the title
|
|
CModifyNodesDlg(
|
|
IN CClusterAppWizard * pwiz,
|
|
IN DWORD dwStyle,
|
|
IN UINT nIDCaption
|
|
)
|
|
: baseClass(
|
|
dwStyle | /*LCPS_PROPERTIES_BUTTON | */(dwStyle & LCPS_ORDERED ? LCPS_CAN_BE_ORDERED : 0),
|
|
nIDCaption
|
|
)
|
|
{
|
|
ASSERT( pwiz != NULL );
|
|
|
|
m_pwiz = pwiz;
|
|
|
|
} //*** CModifyNodesDlg()
|
|
|
|
protected:
|
|
CClusterAppWizard * m_pwiz;
|
|
|
|
public:
|
|
CClusterAppWizard * Pwiz( void ) const { return m_pwiz; }
|
|
|
|
public:
|
|
//
|
|
// Functions that are required to be implemented by CListCtrlPair.
|
|
//
|
|
|
|
// Get column text and image
|
|
void GetColumnInfo(
|
|
IN OUT CClusNodeInfo * pobj,
|
|
IN int iItem,
|
|
IN int icol,
|
|
OUT CString & rstr,
|
|
OUT int * piimg
|
|
)
|
|
{
|
|
switch ( icol )
|
|
{
|
|
case 0:
|
|
rstr = pobj->RstrName();
|
|
break;
|
|
default:
|
|
ASSERT( 0 );
|
|
break;
|
|
} // switch: icol
|
|
|
|
} //*** GetColumnInfo()
|
|
|
|
// Display an application-wide message box
|
|
virtual int AppMessageBox( LPCWSTR lpszText, UINT fuStyle )
|
|
{
|
|
return ::AppMessageBox( m_hWnd, lpszText, fuStyle );
|
|
|
|
} //*** AppMessageBox()
|
|
|
|
public:
|
|
//
|
|
// Message map.
|
|
//
|
|
// BEGIN_MSG_MAP( thisClass )
|
|
// CHAIN_MSG_MAP( baseClass )
|
|
// END_MSG_MAP()
|
|
|
|
//
|
|
// Message handler functions.
|
|
//
|
|
|
|
//
|
|
// Message handler overrides.
|
|
//
|
|
|
|
// Handler for the WM_INITDIALOG message
|
|
BOOL OnInitDialog( void )
|
|
{
|
|
//
|
|
// Add columns.
|
|
//
|
|
AddColumn( IDS_COLTEXT_NODE_NAME, 125 /* nWidth */);
|
|
|
|
//
|
|
// Call the base class.
|
|
//
|
|
return baseClass::OnInitDialog();
|
|
|
|
} //*** OnInitDialog()
|
|
|
|
//static const DWORD * PidHelpMap( void ) { return g_; };
|
|
|
|
}; //*** class CModifyNodesDlg
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// class CModifyResourcesDlg
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
template < class T, class BaseT >
|
|
class CModifyResourcesDlg : public CListCtrlPair< T, CClusResInfo, BaseT >
|
|
{
|
|
typedef CModifyResourcesDlg< T, BaseT > thisClass;
|
|
typedef CListCtrlPair< T, CClusResInfo, BaseT > baseClass;
|
|
|
|
public:
|
|
//
|
|
// Construction
|
|
//
|
|
|
|
// Constructor taking a string pointer for the title
|
|
CModifyResourcesDlg(
|
|
IN CClusterAppWizard * pwiz,
|
|
IN DWORD dwStyle,
|
|
IN LPCTSTR pszTitle = NULL
|
|
)
|
|
: baseClass(
|
|
dwStyle | /*LCPS_PROPERTIES_BUTTON | */(dwStyle & LCPS_ORDERED ? LCPS_CAN_BE_ORDERED : 0),
|
|
pszTitle
|
|
)
|
|
, m_pwiz( pwiz )
|
|
{
|
|
ASSERT( pwiz != NULL);
|
|
|
|
} //*** CModifyResourcesDlg()
|
|
|
|
// Constructor taking a resource ID for the title
|
|
CModifyResourcesDlg(
|
|
IN CClusterAppWizard * pwiz,
|
|
IN DWORD dwStyle,
|
|
IN UINT nIDCaption
|
|
)
|
|
: baseClass(
|
|
dwStyle | /*LCPS_PROPERTIES_BUTTON | */(dwStyle & LCPS_ORDERED ? LCPS_CAN_BE_ORDERED : 0),
|
|
nIDCaption
|
|
)
|
|
, m_pwiz( pwiz )
|
|
{
|
|
ASSERTE( pwiz != NULL );
|
|
|
|
} //*** CModifyResourcesDlg()
|
|
|
|
protected:
|
|
CClusterAppWizard * m_pwiz;
|
|
|
|
public:
|
|
CClusterAppWizard * Pwiz( void ) const { return m_pwiz; }
|
|
|
|
public:
|
|
//
|
|
// Functions that are required to be implemented by CListCtrlPair.
|
|
//
|
|
|
|
// Get column text and image
|
|
void GetColumnInfo(
|
|
IN OUT CClusResInfo * pobj,
|
|
IN int iItem,
|
|
IN int icol,
|
|
OUT CString & rstr,
|
|
OUT int * piimg
|
|
)
|
|
{
|
|
switch ( icol )
|
|
{
|
|
case 0:
|
|
rstr = pobj->RstrName();
|
|
break;
|
|
case 1:
|
|
rstr = pobj->Prti()->RstrDisplayName();
|
|
break;
|
|
default:
|
|
ASSERT( 0 );
|
|
break;
|
|
} // switch: icol
|
|
|
|
} //*** GetColumnInfo()
|
|
|
|
// Display an application-wide message box
|
|
virtual int AppMessageBox( LPCWSTR lpszText, UINT fuStyle )
|
|
{
|
|
return ::AppMessageBox( m_hWnd, lpszText, fuStyle );
|
|
|
|
} //*** AppMessageBox()
|
|
|
|
public:
|
|
//
|
|
// Message map.
|
|
//
|
|
// BEGIN_MSG_MAP( thisClass )
|
|
// CHAIN_MSG_MAP( baseClass )
|
|
// END_MSG_MAP()
|
|
|
|
//
|
|
// Message handler functions.
|
|
//
|
|
|
|
//
|
|
// Message handler overrides.
|
|
//
|
|
|
|
// Handler for the WM_INITDIALOG message
|
|
BOOL OnInitDialog( void )
|
|
{
|
|
//
|
|
// Add columns.
|
|
//
|
|
AddColumn( IDS_COLTEXT_RESOURCE_NAME, 125 /* nWidth */);
|
|
AddColumn( IDS_COLTEXT_RESOURCE_TYPE, 100 /* nWidth */);
|
|
|
|
//
|
|
// Call the base class.
|
|
//
|
|
return baseClass::OnInitDialog();
|
|
|
|
} //*** OnInitDialog()
|
|
|
|
//static const DWORD * PidHelpMap( void ) { return g_; };
|
|
|
|
}; //*** class CModifyResourcesDlg
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// class CModifyPreferredOwners
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
class CModifyPreferredOwners : public CModifyNodesDlg< CModifyPreferredOwners, CBaseDlg< CModifyPreferredOwners > >
|
|
{
|
|
typedef CModifyNodesDlg< CModifyPreferredOwners, CBaseDlg< CModifyPreferredOwners > > baseClass;
|
|
|
|
public:
|
|
// Constructor
|
|
CModifyPreferredOwners(
|
|
IN CClusterAppWizard * pwiz,
|
|
IN CClusGroupInfo * pgi,
|
|
IN OUT CClusNodePtrList * plpniRight,
|
|
IN CClusNodePtrList * plpniLeft
|
|
)
|
|
: baseClass( pwiz, LCPS_SHOW_IMAGES | LCPS_ALLOW_EMPTY | LCPS_CAN_BE_ORDERED | LCPS_ORDERED )
|
|
, m_pgi( pgi )
|
|
, m_plpniRight( plpniRight )
|
|
, m_plpniLeft( plpniLeft )
|
|
{
|
|
ASSERT( pgi != NULL );
|
|
ASSERT( plpniRight != NULL );
|
|
ASSERT( plpniLeft != NULL );
|
|
|
|
} //*** CModifyPreferredOwners()
|
|
|
|
enum { IDD = IDD_MODIFY_PREFERRED_OWNERS };
|
|
|
|
DECLARE_CTRL_NAME_MAP()
|
|
|
|
protected:
|
|
CClusGroupInfo * m_pgi;
|
|
CClusNodePtrList * m_plpniRight;
|
|
CClusNodePtrList * m_plpniLeft;
|
|
|
|
public:
|
|
//
|
|
// Functions that are required to be implemented by CListCtrlPair.
|
|
//
|
|
|
|
// Return list of objects for right list control
|
|
CClusNodePtrList * PlpobjRight( void ) const
|
|
{
|
|
return m_plpniRight;
|
|
|
|
} //*** PlpobjRight()
|
|
|
|
// Return list of objects for left list control
|
|
CClusNodePtrList * PlpobjLeft( void ) const
|
|
{
|
|
return m_plpniLeft;
|
|
|
|
} //*** PlpobjRight()
|
|
|
|
static const DWORD * PidHelpMap( void ) { return g_aHelpIDs_IDD_MODIFY_PREFERRED_OWNERS; };
|
|
|
|
}; //*** class CModifyPreferredOwners
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// class CModifyPossibleOwners
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
class CModifyPossibleOwners : public CModifyNodesDlg< CModifyPossibleOwners, CBaseDlg< CModifyPossibleOwners > >
|
|
{
|
|
typedef CModifyNodesDlg< CModifyPossibleOwners, CBaseDlg< CModifyPossibleOwners > > baseClass;
|
|
|
|
public:
|
|
// Constructor
|
|
CModifyPossibleOwners(
|
|
IN CClusterAppWizard * pwiz,
|
|
IN CClusResInfo * pri,
|
|
IN OUT CClusNodePtrList * plpniRight,
|
|
IN CClusNodePtrList * plpniLeft
|
|
)
|
|
: baseClass( pwiz, LCPS_SHOW_IMAGES | LCPS_ALLOW_EMPTY )
|
|
, m_pri( pri )
|
|
, m_plpniRight( plpniRight )
|
|
, m_plpniLeft( plpniLeft )
|
|
{
|
|
ASSERT( pri != NULL );
|
|
ASSERT( plpniRight != NULL );
|
|
ASSERT( plpniLeft != NULL );
|
|
|
|
} //*** CModifyPossibleOwners()
|
|
|
|
enum { IDD = IDD_MODIFY_POSSIBLE_OWNERS };
|
|
|
|
DECLARE_CTRL_NAME_MAP()
|
|
|
|
protected:
|
|
CClusResInfo * m_pri;
|
|
CClusNodePtrList * m_plpniRight;
|
|
CClusNodePtrList * m_plpniLeft;
|
|
|
|
public:
|
|
//
|
|
// Functions that are required to be implemented by CListCtrlPair.
|
|
//
|
|
|
|
// Return list of objects for right list control
|
|
CClusNodePtrList * PlpobjRight( void ) const
|
|
{
|
|
return m_plpniRight;
|
|
|
|
} //*** PlpobjRight()
|
|
|
|
// Return list of objects for left list control
|
|
CClusNodePtrList * PlpobjLeft( void ) const
|
|
{
|
|
return m_plpniLeft;
|
|
|
|
} //*** PlpobjRight()
|
|
|
|
static const DWORD * PidHelpMap( void ) { return g_aHelpIDs_IDD_MODIFY_POSSIBLE_OWNERS; };
|
|
|
|
}; //*** class CModifyPossibleOwners
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// class CModifyDependencies
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
class CModifyDependencies
|
|
: public CModifyResourcesDlg< CModifyDependencies, CBaseDlg< CModifyDependencies > >
|
|
{
|
|
typedef CModifyResourcesDlg< CModifyDependencies, CBaseDlg< CModifyDependencies > > baseClass;
|
|
|
|
public:
|
|
// Constructor
|
|
CModifyDependencies(
|
|
IN CClusterAppWizard * pwiz,
|
|
IN CClusResInfo * pri,
|
|
IN OUT CClusResPtrList * plpriRight,
|
|
IN CClusResPtrList * plpriLeft
|
|
)
|
|
: baseClass( pwiz, LCPS_SHOW_IMAGES | LCPS_ALLOW_EMPTY )
|
|
, m_pri( pri )
|
|
, m_plpriRight( plpriRight )
|
|
, m_plpriLeft( plpriLeft )
|
|
{
|
|
ASSERT( pri != NULL );
|
|
ASSERT( plpriRight != NULL );
|
|
ASSERT( plpriLeft != NULL );
|
|
|
|
} //*** CModifyDependencies()
|
|
|
|
enum { IDD = IDD_MODIFY_DEPENDENCIES };
|
|
|
|
DECLARE_CTRL_NAME_MAP()
|
|
|
|
protected:
|
|
CClusResInfo * m_pri;
|
|
CClusResPtrList * m_plpriRight;
|
|
CClusResPtrList * m_plpriLeft;
|
|
|
|
public:
|
|
//
|
|
// Functions that are required to be implemented by CListCtrlPair.
|
|
//
|
|
|
|
// Return list of objects for right list control
|
|
CClusResPtrList * PlpobjRight( void ) const
|
|
{
|
|
return m_plpriRight;
|
|
|
|
} //*** PlpobjRight()
|
|
|
|
// Return list of objects for left list control
|
|
CClusResPtrList * PlpobjLeft( void ) const
|
|
{
|
|
return m_plpriLeft;
|
|
|
|
} //*** PlpobjRight()
|
|
|
|
// Update data on or from the dialog
|
|
BOOL UpdateData( IN BOOL bSaveAndValidate )
|
|
{
|
|
BOOL bSuccess = TRUE;
|
|
|
|
bSuccess = baseClass::UpdateData( bSaveAndValidate );
|
|
if ( bSuccess )
|
|
{
|
|
if ( bSaveAndValidate )
|
|
{
|
|
//
|
|
// Ensure all required dependencies are present.
|
|
//
|
|
if ( ! Pwiz()->BRequiredDependenciesPresent( m_pri, &LpobjRight() ) )
|
|
{
|
|
bSuccess = FALSE;
|
|
} // if: all required dependencies not present
|
|
} // if: saving data from the dialog
|
|
} // if: base class was successful
|
|
|
|
return bSuccess;
|
|
|
|
} //*** UpdateData()
|
|
|
|
static const DWORD * PidHelpMap( void ) { return g_aHelpIDs_IDD_MODIFY_DEPENDENCIES; };
|
|
|
|
}; //*** class CModifyDependencies
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// Global Variables
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CModifyPreferredOwners Control Name Map
|
|
|
|
BEGIN_CTRL_NAME_MAP( CModifyPreferredOwners )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_LEFT_LABEL )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_LEFT_LIST )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_ADD )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_REMOVE )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_RIGHT_LABEL )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_RIGHT_LIST )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_MOVE_UP )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_MOVE_DOWN )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( IDOK )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( IDCANCEL )
|
|
END_CTRL_NAME_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CModifyPossibleOwners Control Name Map
|
|
|
|
BEGIN_CTRL_NAME_MAP( CModifyPossibleOwners )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_LEFT_LABEL )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_LEFT_LIST )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_ADD )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_REMOVE )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_RIGHT_LABEL )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_RIGHT_LIST )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( IDOK )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( IDCANCEL )
|
|
END_CTRL_NAME_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CModifyDependencies Control Name Map
|
|
|
|
BEGIN_CTRL_NAME_MAP( CModifyDependencies )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_LEFT_LABEL )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_LEFT_LIST )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_ADD )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_REMOVE )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_RIGHT_LABEL )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( ADMC_IDC_LCP_RIGHT_LIST )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( IDOK )
|
|
DEFINE_CTRL_NAME_MAP_ENTRY( IDCANCEL )
|
|
END_CTRL_NAME_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif // __LCPAIR_H_
|