windows-nt/Source/XPSP1/NT/base/cluster/admin/cluadmin/clusdoc.h
2020-09-26 16:20:57 +08:00

217 lines
6.8 KiB
C++

/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1996-2000 Microsoft Corporation
//
// Module Name:
// ClusDoc.h
//
// Abstract:
// Definition of the CClusterDoc class.
//
// Implementation File:
// ClusDoc.cpp
//
// Author:
// David Potter (davidp) May 1, 1996
//
// Revision History:
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#ifndef _CLUSDOC_H_
#define _CLUSDOC_H_
/////////////////////////////////////////////////////////////////////////////
// Include Files
/////////////////////////////////////////////////////////////////////////////
#ifndef _NODE_H_
#include "Node.h" // for CNodeList
#endif
#ifndef _GROUP_H_
#include "Group.h" // for CGroupList
#endif
#ifndef _RES_H_
#include "Res.h" // for CResourceList
#endif
#ifndef _RESTYPE_H_
#include "ResType.h" // for CResourceTypeList
#endif
#ifndef _NETWORK_H_
#include "Network.h" // for CNetworkList
#endif
#ifndef _NETIFACE_H_
#include "NetIFace.h" // for CNetInterfaceList
#endif
#ifndef _TREEITEM_H_
#include "TreeItem.h" // for CTreeItem
#endif
#ifndef _NOTIFY_H_
#include "Notify.h" // for CClusterNotifyKeyList
#endif
/////////////////////////////////////////////////////////////////////////////
// Forward Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusterDoc;
/////////////////////////////////////////////////////////////////////////////
// External Class Declarations
/////////////////////////////////////////////////////////////////////////////
class CClusterNotify;
/////////////////////////////////////////////////////////////////////////////
// Type Definitions
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// class CClusterDoc
/////////////////////////////////////////////////////////////////////////////
class CClusterDoc : public CDocument
{
friend class CCluster;
friend class CClusterTreeView;
friend class CClusterListView;
friend class CCreateResourceWizard;
protected: // create from serialization only
CClusterDoc(void);
DECLARE_DYNCREATE(CClusterDoc)
// Attributes
protected:
CString m_strName;
CString m_strNode;
HCLUSTER m_hcluster;
HKEY m_hkeyCluster;
CCluster * m_pciCluster;
CTreeItem * m_ptiCluster;
CNodeList m_lpciNodes;
CGroupList m_lpciGroups;
CResourceList m_lpciResources;
CResourceTypeList m_lpciResourceTypes;
CNetworkList m_lpciNetworks;
CNetInterfaceList m_lpciNetInterfaces;
CClusterItemList m_lpciToBeDeleted;
BOOL m_bClusterAvailable;
public:
const CString & StrName(void) const { return m_strName; }
const CString & StrNode(void) const { return m_strNode; }
HCLUSTER Hcluster(void) const { return m_hcluster; }
HKEY HkeyCluster(void) const { return m_hkeyCluster; }
CCluster * PciCluster(void) const { return m_pciCluster; }
CTreeItem * PtiCluster(void) const { return m_ptiCluster; }
CNodeList & LpciNodes(void) { return m_lpciNodes; }
CGroupList & LpciGroups(void) { return m_lpciGroups; }
CResourceTypeList & LpciResourceTypes(void) { return m_lpciResourceTypes; }
CResourceList & LpciResources(void) { return m_lpciResources; }
CNetworkList & LpciNetworks(void) { return m_lpciNetworks; }
CNetInterfaceList & LpciNetInterfaces(void) { return m_lpciNetInterfaces; }
CClusterItemList & LpciToBeDeleted(void) { return m_lpciToBeDeleted; }
BOOL BClusterAvailable(void) const { return m_bClusterAvailable; }
// Operations
public:
void UpdateTitle(void);
void Refresh(void) { OnCmdRefresh(); }
// Overrides
public:
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CClusterDoc)
public:
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE);
virtual void DeleteContents();
virtual void OnCloseDocument();
virtual void OnChangedViewList();
//}}AFX_VIRTUAL
void OnSelChanged(IN CClusterItem * pciSelected);
LRESULT OnClusterNotify(IN OUT CClusterNotify * pnotify);
void SaveSettings(void);
// Implementation
public:
virtual ~CClusterDoc(void);
#ifdef _DEBUG
virtual void AssertValid(void) const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
void OnOpenDocumentWorker(LPCTSTR lpszPathName);
void BuildBaseHierarchy(void);
void CollectClusterItems(void) ;
ID IdProcessNewObjectError(IN OUT CException * pe);
void AddDefaultColumns(IN OUT CTreeItem * pti);
CClusterNode * PciAddNewNode(IN LPCTSTR pszName);
CGroup * PciAddNewGroup(IN LPCTSTR pszName);
CResource * PciAddNewResource(IN LPCTSTR pszName);
CResourceType * PciAddNewResourceType(IN LPCTSTR pszName);
CNetwork * PciAddNewNetwork(IN LPCTSTR pszName);
CNetInterface * PciAddNewNetInterface(IN LPCTSTR pszName);
void InitNodes(void);
void InitGroups(void);
void InitResources(void);
void InitResourceTypes(void);
void InitNetworks(void);
void InitNetInterfaces(void);
BOOL m_bUpdateFrameNumber;
BOOL m_bInitializing;
BOOL m_bIgnoreErrors;
// This menu stuff allows the menu to change depending on what
// kind of object is currently selected.
HMENU m_hmenuCluster;
HMENU m_hmenuNode;
HMENU m_hmenuGroup;
HMENU m_hmenuResource;
HMENU m_hmenuResType;
HMENU m_hmenuNetwork;
HMENU m_hmenuNetIFace;
HMENU m_hmenuCurrent;
IDM m_idmCurrentMenu;
virtual HMENU GetDefaultMenu(void);
void ProcessRegNotification(IN const CClusterNotify * pnotify);
// Generated message map functions
protected:
//{{AFX_MSG(CClusterDoc)
afx_msg void OnCmdNewGroup();
afx_msg void OnCmdNewResource();
afx_msg void OnCmdNewNode();
afx_msg void OnCmdConfigApp();
afx_msg void OnCmdRefresh();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
}; //*** class CClusterDoc
/////////////////////////////////////////////////////////////////////////////
#endif // _CLUSDOC_H_