172 lines
5.7 KiB
C
172 lines
5.7 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1998 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
FTMan
|
||
|
|
||
|
File Name:
|
||
|
|
||
|
FTTreeVw.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
The definition of class CFTTreeView. It is a tree view displaying:
|
||
|
- all logical volumes
|
||
|
- all physical partitions that are not logical volumes
|
||
|
existing in the system
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Cristian Teodorescu October 20, 1998
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#if !defined(AFX_FTTREEVW_H__B83E0005_6873_11D2_A297_00A0C9063765__INCLUDED_)
|
||
|
#define AFX_FTTREEVW_H__B83E0005_6873_11D2_A297_00A0C9063765__INCLUDED_
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
#include "FTManDef.h"
|
||
|
|
||
|
class CFTDocument;
|
||
|
class CItemData;
|
||
|
|
||
|
class CFTTreeView : public CTreeView
|
||
|
{
|
||
|
protected: // create from serialization only
|
||
|
CFTTreeView();
|
||
|
DECLARE_DYNCREATE(CFTTreeView)
|
||
|
|
||
|
// Attributes
|
||
|
public:
|
||
|
CFTDocument* GetDocument();
|
||
|
|
||
|
// Operations
|
||
|
public:
|
||
|
// Get the current snapshot of the tree ( what items are expanded, what items are selected )
|
||
|
void GetSnapshot( TREE_SNAPSHOT& snaphshot );
|
||
|
// Refresh the content of the tree given a certain snapshot ( items expanded, items selected )
|
||
|
BOOL Refresh( TREE_SNAPSHOT& snapshot);
|
||
|
// Refresh the content of the tree based on the current snapshot ( items expanded, items selected )
|
||
|
BOOL Refresh();
|
||
|
// Performs some minor refreshment for the tree items. This should be called every TIMER_ELAPSE milliseconds.
|
||
|
void RefreshOnTimer();
|
||
|
|
||
|
// Overrides
|
||
|
// ClassWizard generated virtual function overrides
|
||
|
//{{AFX_VIRTUAL(CFTTreeView)
|
||
|
public:
|
||
|
virtual void OnDraw(CDC* pDC); // overridden to draw this view
|
||
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
||
|
protected:
|
||
|
virtual void OnInitialUpdate(); // called first time after construct
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
// Implementation
|
||
|
public:
|
||
|
virtual ~CFTTreeView();
|
||
|
#ifdef _DEBUG
|
||
|
virtual void AssertValid() const;
|
||
|
virtual void Dump(CDumpContext& dc) const;
|
||
|
#endif
|
||
|
|
||
|
protected:
|
||
|
|
||
|
// Insert item
|
||
|
HTREEITEM InsertItem(CItemData* pData, HTREEITEM hParent, HTREEITEM hInsertAfter );
|
||
|
|
||
|
// Refresh item ( redisplay the item according with the information contained by its lParam which is a CItemData* )
|
||
|
BOOL RefreshItem( HTREEITEM hItem );
|
||
|
|
||
|
// Query for the members of an item and add them to the tree
|
||
|
BOOL AddItemMembers(HTREEITEM hItem);
|
||
|
// Delete a subtree ( with or wihout its root )
|
||
|
BOOL DeleteItemSubtree(HTREEITEM hItem, BOOL bDeleteSubtreeRoot=TRUE);
|
||
|
// Delete all items of the tree
|
||
|
BOOL DeleteAllItems();
|
||
|
// Add the subtree current status ( items expanded and selected ) to the tree current status
|
||
|
void AddSubtreeSnapshot( HTREEITEM hSubtreeRoot, TREE_SNAPSHOT& snapshot );
|
||
|
|
||
|
// Expand and select items in a subtree given a pattern
|
||
|
BOOL RefreshSubtree( HTREEITEM hSubtreeRoot, TREE_SNAPSHOT& snapshot );
|
||
|
|
||
|
// Scan a subtree for:
|
||
|
// 1. Initializing stripe sets with parity that are not initializing anymore
|
||
|
// 2. Regenerating mirror sets or stripe sets with parity that are not regenerating anymore
|
||
|
// 3. Root volumes whose drive letter and volume name were eventually found
|
||
|
void ScanSubtreeOnTimer( HTREEITEM hSubtreeRoot, CObArray& arrRefreshedItems, CWordArray& arrRefreshFlags);
|
||
|
|
||
|
// Get all selected items in the given array ( array of CItemData ). Usually is only one item selected in a tree ctrl
|
||
|
void GetSelectedItems( CObArray& arrSelectedItems );
|
||
|
|
||
|
protected:
|
||
|
// The popup menu that appears when the user clicks the mouse right button is the first popup
|
||
|
// of the following menu
|
||
|
CMenu m_menuPopup;
|
||
|
|
||
|
// Generated message map functions
|
||
|
protected:
|
||
|
//{{AFX_MSG(CFTTreeView)
|
||
|
afx_msg void OnDestroy();
|
||
|
afx_msg void OnItemExpanding(NMHDR* pNMHDR, LRESULT* pResult);
|
||
|
afx_msg void OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult);
|
||
|
afx_msg void OnItemExpand();
|
||
|
afx_msg void OnRclick(NMHDR* pNMHDR, LRESULT* pResult);
|
||
|
afx_msg void OnViewUp();
|
||
|
afx_msg void OnUpdateViewUp(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnActionAssign();
|
||
|
afx_msg void OnUpdateActionAssign(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnActionFtbreak();
|
||
|
afx_msg void OnUpdateActionFtbreak(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnActionCreateExtendedPartition();
|
||
|
afx_msg void OnUpdateActionCreateExtendedPartition(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnActionCreatePartition();
|
||
|
afx_msg void OnUpdateActionCreatePartition(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnActionDelete();
|
||
|
afx_msg void OnUpdateActionDelete(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnActionFtinit();
|
||
|
afx_msg void OnUpdateActionFtinit(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnActionFtswap();
|
||
|
afx_msg void OnUpdateActionFtswap(CCmdUI* pCmdUI);
|
||
|
//}}AFX_MSG
|
||
|
// Status bar indicators handlers
|
||
|
afx_msg void OnUpdateIndicatorName(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnUpdateIndicatorType(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnUpdateIndicatorDisks(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnUpdateIndicatorSize(CCmdUI* pCmdUI);
|
||
|
afx_msg void OnUpdateIndicatorNothing(CCmdUI* pCmdUI);
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
// MainFrame must have access to method OnCmdMsg which is still protected in MFC 4.2
|
||
|
friend class CMainFrame;
|
||
|
|
||
|
// Retrieves the set of disks whose volumes cannot be used as replacements for a
|
||
|
// certain volume in a logical volume set ( stripe, mirror, stripe with parity, volume set )
|
||
|
// The function uses the volume hierarchy of the ( left pane )tree view
|
||
|
friend void GetVolumeReplacementForbiddenDisksSet( CFTTreeView* pTreeView, CItemData* pVolumeData,
|
||
|
CULONGSet& setDisks );
|
||
|
|
||
|
};
|
||
|
|
||
|
#ifndef _DEBUG // debug version in FTTreeVw.cpp
|
||
|
inline CFTDocument* CFTTreeView::GetDocument()
|
||
|
{ return (CFTDocument*)m_pDocument; }
|
||
|
#endif
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
//{{AFX_INSERT_LOCATION}}
|
||
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||
|
|
||
|
#endif // !defined(AFX_FTTREEVW_H__B83E0005_6873_11D2_A297_00A0C9063765__INCLUDED_)
|