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.

186 lines
4.2 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996-1998 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // ActGrp.cpp
  7. //
  8. // Abstract:
  9. // Implementation of the CActiveGroups class.
  10. //
  11. // Author:
  12. // David Potter (davidp) November 24, 1997
  13. //
  14. // Revision History:
  15. //
  16. // Notes:
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "stdafx.h"
  20. #include "CluAdmin.h"
  21. #include "ActGrp.h"
  22. #include "Group.h"
  23. #include "Node.h"
  24. #include "TraceTag.h"
  25. #include "ExcOper.h"
  26. #ifdef _DEBUG
  27. #define new DEBUG_NEW
  28. #undef THIS_FILE
  29. static char THIS_FILE[] = __FILE__;
  30. #endif
  31. /////////////////////////////////////////////////////////////////////////////
  32. // Global Variables
  33. /////////////////////////////////////////////////////////////////////////////
  34. /////////////////////////////////////////////////////////////////////////////
  35. // CActiveGroups
  36. /////////////////////////////////////////////////////////////////////////////
  37. IMPLEMENT_DYNCREATE(CActiveGroups, CClusterItem)
  38. /////////////////////////////////////////////////////////////////////////////
  39. // Message Maps
  40. /////////////////////////////////////////////////////////////////////////////
  41. BEGIN_MESSAGE_MAP(CActiveGroups, CClusterItem)
  42. //{{AFX_MSG_MAP(CActiveGroups)
  43. //}}AFX_MSG_MAP
  44. END_MESSAGE_MAP()
  45. /////////////////////////////////////////////////////////////////////////////
  46. //++
  47. //
  48. // CActiveGroups::CActiveGroups
  49. //
  50. // Routine Description:
  51. // Default constructor.
  52. //
  53. // Arguments:
  54. // None.
  55. //
  56. // Return Value:
  57. // None.
  58. //
  59. //--
  60. /////////////////////////////////////////////////////////////////////////////
  61. CActiveGroups::CActiveGroups(void) : CClusterItem(NULL, IDS_ITEMTYPE_CONTAINER)
  62. {
  63. m_pciNode = NULL;
  64. m_bDocObj = FALSE;
  65. } //*** CActiveGroups::CActiveGroups()
  66. /////////////////////////////////////////////////////////////////////////////
  67. //++
  68. //
  69. // CActiveGroups::Cleanup
  70. //
  71. // Routine Description:
  72. // Cleanup the item.
  73. //
  74. // Arguments:
  75. // None.
  76. //
  77. // Return Value:
  78. // None.
  79. //
  80. // Exceptions Thrown:
  81. // None.
  82. //
  83. //--
  84. /////////////////////////////////////////////////////////////////////////////
  85. void CActiveGroups::Cleanup(void)
  86. {
  87. // If we have been initialized, release our pointer to the node.
  88. if (PciNode() != NULL)
  89. {
  90. PciNode()->Release();
  91. m_pciNode = NULL;
  92. } // if: there is an owner
  93. } //*** CActiveGroups::Cleanup()
  94. /////////////////////////////////////////////////////////////////////////////
  95. //++
  96. //
  97. // CActiveGroups::Init
  98. //
  99. // Routine Description:
  100. // Initialize the item.
  101. //
  102. // Arguments:
  103. // pdoc [IN OUT] Document to which this item belongs.
  104. // lpszName [IN] Name of the item.
  105. // pciNode [IN OUT] Node to which this container belongs.
  106. //
  107. // Return Value:
  108. // None.
  109. //
  110. //--
  111. /////////////////////////////////////////////////////////////////////////////
  112. void CActiveGroups::Init(
  113. IN OUT CClusterDoc * pdoc,
  114. IN LPCTSTR lpszName,
  115. IN OUT CClusterNode * pciNode
  116. )
  117. {
  118. // Call the base class method.
  119. CClusterItem::Init(pdoc, lpszName);
  120. // Add a reference to the node.
  121. ASSERT(pciNode != NULL);
  122. ASSERT(m_pciNode == NULL);
  123. m_pciNode = pciNode;
  124. m_pciNode->AddRef();
  125. } //*** CActiveGroups::Init()
  126. /////////////////////////////////////////////////////////////////////////////
  127. //++
  128. //
  129. // CActiveGroups::BCanBeDropTarget
  130. //
  131. // Routine Description:
  132. // Determine if the specified item can be dropped on this item.
  133. //
  134. // Arguments:
  135. // pci [IN OUT] Item to be dropped on this item.
  136. //
  137. // Return Value:
  138. // TRUE Can be drop target.
  139. // FALSE Can NOT be drop target.
  140. //
  141. //--
  142. /////////////////////////////////////////////////////////////////////////////
  143. BOOL CActiveGroups::BCanBeDropTarget(IN const CClusterItem * pci) const
  144. {
  145. ASSERT(PciNode() != NULL);
  146. return PciNode()->BCanBeDropTarget(pci);
  147. } //*** CActiveGroups::BCanBeDropTarget()
  148. /////////////////////////////////////////////////////////////////////////////
  149. //++
  150. //
  151. // CActiveGroups::DropItem
  152. //
  153. // Routine Description:
  154. // Process an item being dropped on this item.
  155. //
  156. // Arguments:
  157. // pci [IN OUT] Item dropped on this item.
  158. //
  159. // Return Value:
  160. // None.
  161. //
  162. //--
  163. /////////////////////////////////////////////////////////////////////////////
  164. void CActiveGroups::DropItem(IN OUT CClusterItem * pci)
  165. {
  166. ASSERT(PciNode() != NULL);
  167. PciNode()->DropItem(pci);
  168. } //*** CActiveGroups::DropItem()