Source code of Windows XP (NT5)
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.

287 lines
7.5 KiB

  1. // SystemsScopeItem.cpp: implementation of the CSystemsScopeItem class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "snapin.h"
  6. #include "SystemsScopeItem.h"
  7. #include "SystemsResultsView.h"
  8. #include "AllSystemsScopeItem.h"
  9. #include "HealthmonScopePane.h"
  10. #include "ClearEventsDlg.h"
  11. #include "SystemGroup.h"
  12. #ifdef _DEBUG
  13. #define new DEBUG_NEW
  14. #undef THIS_FILE
  15. static char THIS_FILE[] = __FILE__;
  16. #endif
  17. IMPLEMENT_DYNCREATE(CSystemsScopeItem,CHMScopeItem)
  18. // {ADE7EC03-B0C1-11d2-BD6C-0000F87A3912}
  19. static GUID GUID_Systems =
  20. { 0xade7ec03, 0xb0c1, 0x11d2, { 0xbd, 0x6c, 0x0, 0x0, 0xf8, 0x7a, 0x39, 0x12 } };
  21. // icon table - associates state to icons
  22. static UINT _Icons[HMS_MAX_STATES] =
  23. {
  24. IDI_ICON_SYSTEMS,
  25. IDI_ICON_SYSTEMS_DISABLED,
  26. IDI_ICON_SYSTEMS_OUTAGE,
  27. IDI_ICON_SYSTEMS_UNKNOWN,
  28. IDI_ICON_SYSTEMS_NO_CONNECT,
  29. IDI_ICON_SYSTEMS_WARNING,
  30. IDI_ICON_SYSTEMS_CRITICAL
  31. };
  32. //////////////////////////////////////////////////////////////////////
  33. // Construction/Destruction
  34. //////////////////////////////////////////////////////////////////////
  35. CSystemsScopeItem::CSystemsScopeItem()
  36. {
  37. m_lpguidItemType = &GUID_Systems;
  38. }
  39. CSystemsScopeItem::~CSystemsScopeItem()
  40. {
  41. Destroy();
  42. }
  43. //////////////////////////////////////////////////////////////////////
  44. // Creation Members
  45. //////////////////////////////////////////////////////////////////////
  46. bool CSystemsScopeItem::Create(CScopePane* pScopePane, CScopePaneItem* pParentItem)
  47. {
  48. TRACEX(_T("CSystemsScopeItem::Create\n"));
  49. TRACEARGn(pScopePane);
  50. TRACEARGn(pParentItem);
  51. // set up all the icons first
  52. for( int i = 0; i < HMS_MAX_STATES; i++ )
  53. {
  54. UINT nId = _Icons[i];
  55. m_IconResIds.Add(nId);
  56. m_OpenIconResIds.Add(nId);
  57. }
  58. SetIconIndex(HMS_NORMAL);
  59. SetOpenIconIndex(HMS_NORMAL);
  60. // call base class Create method
  61. if( ! CHMScopeItem::Create(pScopePane,pParentItem) )
  62. {
  63. TRACE(_T("CHMScopeItem::Create failed.\n"));
  64. return false;
  65. }
  66. // set display names
  67. CString sName;
  68. sName.LoadString(IDS_STRING_SYSTEMS_NODE);
  69. SetDisplayName(0,sName);
  70. return true;
  71. }
  72. //////////////////////////////////////////////////////////////////////
  73. // Results Pane View Members
  74. //////////////////////////////////////////////////////////////////////
  75. CResultsPaneView* CSystemsScopeItem::CreateResultsPaneView()
  76. {
  77. TRACEX(_T("CSystemsScopeItem::CreateResultsPaneView\n"));
  78. return new CSystemsResultsView;
  79. }
  80. //////////////////////////////////////////////////////////////////////
  81. // MMC Notify Handlers
  82. //////////////////////////////////////////////////////////////////////
  83. HRESULT CSystemsScopeItem::OnAddMenuItems(LPCONTEXTMENUCALLBACK piCallback,long __RPC_FAR *pInsertionAllowed)
  84. {
  85. TRACEX(_T("CSystemsScopeItem::OnAddMenuItems\n"));
  86. TRACEARGn(piCallback);
  87. TRACEARGn(pInsertionAllowed);
  88. HRESULT hr = S_OK;
  89. // Add New Menu Items
  90. if( CCM_INSERTIONALLOWED_NEW & *pInsertionAllowed )
  91. {
  92. CONTEXTMENUITEM cmi;
  93. CString sResString;
  94. CString sResString2;
  95. sResString.LoadString(IDS_STRING_NEW_SYSTEMS_GROUP);
  96. cmi.strName = LPTSTR(LPCTSTR(sResString));
  97. sResString2.LoadString(IDS_STRING_NEW_SYSTEMS_GROUP_DESCRIPTION);
  98. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  99. cmi.lCommandID = IDM_NEW_GROUP;
  100. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_NEW;
  101. cmi.fFlags = 0;
  102. cmi.fSpecialFlags = 0;
  103. hr = piCallback->AddItem(&cmi);
  104. if( !SUCCEEDED(hr) )
  105. {
  106. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  107. return hr;
  108. }
  109. }
  110. // Add Task Menu Items
  111. if( CCM_INSERTIONALLOWED_TASK & *pInsertionAllowed )
  112. {
  113. CONTEXTMENUITEM cmi;
  114. CString sResString;
  115. CString sResString2;
  116. sResString.LoadString(IDS_STRING_CLEAR_EVENTS);
  117. cmi.strName = LPTSTR(LPCTSTR(sResString));
  118. sResString2.LoadString(IDS_STRING_CLEAR_EVENTS_DESCRIPTION);
  119. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  120. cmi.lCommandID = IDM_CLEAR_EVENTS;
  121. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK;
  122. cmi.fFlags = 0;
  123. cmi.fSpecialFlags = 0;
  124. hr = piCallback->AddItem(&cmi);
  125. if( !SUCCEEDED(hr) )
  126. {
  127. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  128. return hr;
  129. }
  130. sResString.LoadString(IDS_STRING_RESET_STATUS);
  131. cmi.strName = LPTSTR(LPCTSTR(sResString));
  132. sResString2.LoadString(IDS_STRING_RESET_STATUS_DESCRIPTION);
  133. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  134. cmi.lCommandID = IDM_RESET_STATUS;
  135. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK;
  136. cmi.fFlags = 0;
  137. cmi.fSpecialFlags = 0;
  138. hr = piCallback->AddItem(&cmi);
  139. if( !SUCCEEDED(hr) )
  140. {
  141. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  142. return hr;
  143. }
  144. // separator
  145. cmi.strName = NULL;
  146. cmi.strStatusBarText = NULL;
  147. cmi.lCommandID = NULL;
  148. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK;
  149. cmi.fFlags = MF_SEPARATOR;
  150. cmi.fSpecialFlags = 0;
  151. hr = piCallback->AddItem(&cmi);
  152. if( !SUCCEEDED(hr) )
  153. {
  154. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  155. return hr;
  156. }
  157. }
  158. // Add View Menu Items
  159. if( CCM_INSERTIONALLOWED_VIEW & *pInsertionAllowed )
  160. {
  161. CONTEXTMENUITEM cmi;
  162. CString sResString;
  163. CString sResString2;
  164. sResString.LoadString(IDS_STRING_STATUS_ONLY);
  165. cmi.strName = LPTSTR(LPCTSTR(sResString));
  166. sResString2.LoadString(IDS_STRING_STATUS_ONLY_DESCRIPTION);
  167. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  168. cmi.lCommandID = IDM_STATUS_ONLY;
  169. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_VIEW;
  170. cmi.fFlags = MF_UNCHECKED;
  171. cmi.fSpecialFlags = 0;
  172. hr = piCallback->AddItem(&cmi);
  173. if( !SUCCEEDED(hr) )
  174. {
  175. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  176. return hr;
  177. }
  178. sResString.LoadString(IDS_STRING_AUTO_FILTER);
  179. cmi.strName = LPTSTR(LPCTSTR(sResString));
  180. sResString2.LoadString(IDS_STRING_AUTO_FILTER_DESCRIPTION);
  181. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  182. cmi.lCommandID = IDM_AUTO_FILTER;
  183. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_VIEW;
  184. cmi.fFlags = MF_CHECKED;
  185. cmi.fSpecialFlags = 0;
  186. hr = piCallback->AddItem(&cmi);
  187. if( !SUCCEEDED(hr) )
  188. {
  189. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  190. return hr;
  191. }
  192. // icon legend
  193. sResString.LoadString(IDS_STRING_ICON_LEGEND);
  194. cmi.strName = LPTSTR(LPCTSTR(sResString));
  195. sResString2.LoadString(IDS_STRING_ICON_LEGEND_DESCRIPTION);
  196. cmi.strStatusBarText = LPTSTR(LPCTSTR(sResString2));
  197. cmi.lCommandID = IDM_ICON_LEGEND;
  198. cmi.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_VIEW;
  199. cmi.fFlags = 0;
  200. cmi.fSpecialFlags = 0;
  201. hr = piCallback->AddItem(&cmi);
  202. if( !SUCCEEDED(hr) )
  203. {
  204. TRACE(_T("FAILED : IContextMenuCallback::AddItem failed.\n"));
  205. return hr;
  206. }
  207. }
  208. return hr;
  209. }
  210. HRESULT CSystemsScopeItem::OnCommand(long lCommandID)
  211. {
  212. TRACEX(_T("CSystemsScopeItem::OnCommand\n"));
  213. TRACEARGn(lCommandID);
  214. HRESULT hr = S_OK;
  215. switch(lCommandID)
  216. {
  217. case IDM_NEW_GROUP:
  218. {
  219. CHealthmonScopePane* pPane = (CHealthmonScopePane*)GetScopePane();
  220. if( ! GfxCheckObjPtr(pPane,CHealthmonScopePane) )
  221. {
  222. TRACE(_T("FAILED : CGroupScopeItem::GetScopePane returns an invalid pointer.\n"));
  223. return E_FAIL;
  224. }
  225. CSystemGroup* pMSG = pPane->GetRootGroup();
  226. pMSG->CreateNewChildSystemGroup();
  227. }
  228. break;
  229. default:
  230. {
  231. hr = CHMScopeItem::OnCommand(lCommandID);
  232. }
  233. break;
  234. }
  235. return hr;
  236. }