187 lines
4.2 KiB
C++
187 lines
4.2 KiB
C++
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Copyright (c) 1996-1998 Microsoft Corporation
|
||
|
//
|
||
|
// Module Name:
|
||
|
// ActGrp.cpp
|
||
|
//
|
||
|
// Abstract:
|
||
|
// Implementation of the CActiveGroups class.
|
||
|
//
|
||
|
// Author:
|
||
|
// David Potter (davidp) November 24, 1997
|
||
|
//
|
||
|
// Revision History:
|
||
|
//
|
||
|
// Notes:
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "CluAdmin.h"
|
||
|
#include "ActGrp.h"
|
||
|
#include "Group.h"
|
||
|
#include "Node.h"
|
||
|
#include "TraceTag.h"
|
||
|
#include "ExcOper.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Global Variables
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CActiveGroups
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
IMPLEMENT_DYNCREATE(CActiveGroups, CClusterItem)
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Message Maps
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CActiveGroups, CClusterItem)
|
||
|
//{{AFX_MSG_MAP(CActiveGroups)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// CActiveGroups::CActiveGroups
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// Default constructor.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// None.
|
||
|
//
|
||
|
// Return Value:
|
||
|
// None.
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
CActiveGroups::CActiveGroups(void) : CClusterItem(NULL, IDS_ITEMTYPE_CONTAINER)
|
||
|
{
|
||
|
m_pciNode = NULL;
|
||
|
m_bDocObj = FALSE;
|
||
|
|
||
|
} //*** CActiveGroups::CActiveGroups()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// CActiveGroups::Cleanup
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// Cleanup the item.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// None.
|
||
|
//
|
||
|
// Return Value:
|
||
|
// None.
|
||
|
//
|
||
|
// Exceptions Thrown:
|
||
|
// None.
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
void CActiveGroups::Cleanup(void)
|
||
|
{
|
||
|
// If we have been initialized, release our pointer to the node.
|
||
|
if (PciNode() != NULL)
|
||
|
{
|
||
|
PciNode()->Release();
|
||
|
m_pciNode = NULL;
|
||
|
} // if: there is an owner
|
||
|
|
||
|
} //*** CActiveGroups::Cleanup()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// CActiveGroups::Init
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// Initialize the item.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// pdoc [IN OUT] Document to which this item belongs.
|
||
|
// lpszName [IN] Name of the item.
|
||
|
// pciNode [IN OUT] Node to which this container belongs.
|
||
|
//
|
||
|
// Return Value:
|
||
|
// None.
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
void CActiveGroups::Init(
|
||
|
IN OUT CClusterDoc * pdoc,
|
||
|
IN LPCTSTR lpszName,
|
||
|
IN OUT CClusterNode * pciNode
|
||
|
)
|
||
|
{
|
||
|
// Call the base class method.
|
||
|
CClusterItem::Init(pdoc, lpszName);
|
||
|
|
||
|
// Add a reference to the node.
|
||
|
ASSERT(pciNode != NULL);
|
||
|
ASSERT(m_pciNode == NULL);
|
||
|
m_pciNode = pciNode;
|
||
|
m_pciNode->AddRef();
|
||
|
|
||
|
} //*** CActiveGroups::Init()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// CActiveGroups::BCanBeDropTarget
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// Determine if the specified item can be dropped on this item.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// pci [IN OUT] Item to be dropped on this item.
|
||
|
//
|
||
|
// Return Value:
|
||
|
// TRUE Can be drop target.
|
||
|
// FALSE Can NOT be drop target.
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
BOOL CActiveGroups::BCanBeDropTarget(IN const CClusterItem * pci) const
|
||
|
{
|
||
|
ASSERT(PciNode() != NULL);
|
||
|
return PciNode()->BCanBeDropTarget(pci);
|
||
|
|
||
|
} //*** CActiveGroups::BCanBeDropTarget()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//++
|
||
|
//
|
||
|
// CActiveGroups::DropItem
|
||
|
//
|
||
|
// Routine Description:
|
||
|
// Process an item being dropped on this item.
|
||
|
//
|
||
|
// Arguments:
|
||
|
// pci [IN OUT] Item dropped on this item.
|
||
|
//
|
||
|
// Return Value:
|
||
|
// None.
|
||
|
//
|
||
|
//--
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
void CActiveGroups::DropItem(IN OUT CClusterItem * pci)
|
||
|
{
|
||
|
ASSERT(PciNode() != NULL);
|
||
|
PciNode()->DropItem(pci);
|
||
|
|
||
|
} //*** CActiveGroups::DropItem()
|