// XTPFlowGraphSelectedElements.cpp : implementation of the CXTPFlowGraphSelectedElements class. // // This file is a part of the XTREME TOOLKIT PRO MFC class library. // (c)1998-2012 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "XTPFlowGraphElement.h" #include "XTPFlowGraphControl.h" #include "XTPFlowGraphSelectedElements.h" #include "XTPFlowGraphNode.h" #include "XTPFlowGraphPage.h" #include "XTPFlowGraphMessages.h" CXTPFlowGraphSelectedElements::CXTPFlowGraphSelectedElements(CXTPFlowGraphPage* pPage) { m_pPage = pPage; } CXTPFlowGraphSelectedElements::~CXTPFlowGraphSelectedElements() { Clear(); } void CXTPFlowGraphSelectedElements::Clear() { if (m_arrSelectedElements.GetSize() == 0) return; for (int i = 0; i < m_arrSelectedElements.GetSize(); i++) { m_arrSelectedElements[i]->m_bSelected = FALSE; m_arrSelectedElements[i]->InternalRelease(); } m_arrSelectedElements.RemoveAll(); m_pPage->GetControl()->RedrawControl(); m_pPage->GetControl()->SendNotifyMessage(XTP_FGN_SELECTIONCHANGED); } void CXTPFlowGraphSelectedElements::SetSelection(CXTPFlowGraphElement* pElement) { if (m_arrSelectedElements.GetSize() == 1 && m_arrSelectedElements[0] == pElement) return; Clear(); m_arrSelectedElements.Add(pElement); pElement->InternalAddRef(); pElement->m_bSelected = TRUE; m_pPage->GetControl()->RedrawControl(); m_pPage->GetControl()->SendNotifyMessage(XTP_FGN_SELECTIONCHANGED); } void CXTPFlowGraphSelectedElements::Remove(CXTPFlowGraphElement* pElement) { if (!pElement) return; if (!pElement->IsSelected()) return; for (int i = 0; i < m_arrSelectedElements.GetSize(); i++) { if (m_arrSelectedElements[i] == pElement) { RemoveAt(i); return; } } } void CXTPFlowGraphSelectedElements::RemoveAt(int nIndex) { if (nIndex < 0 || nIndex >= m_arrSelectedElements.GetSize()) return; CXTPFlowGraphElement* pElement = m_arrSelectedElements[nIndex]; m_arrSelectedElements.RemoveAt(nIndex); pElement->m_bSelected = FALSE; pElement->InternalRelease(); m_pPage->GetControl()->RedrawControl(); m_pPage->GetControl()->SendNotifyMessage(XTP_FGN_SELECTIONCHANGED); } void CXTPFlowGraphSelectedElements::AddSelection(CXTPFlowGraphElement* pElement) { if (!pElement) return; if (pElement->IsSelected()) return; m_arrSelectedElements.Add(pElement); pElement->InternalAddRef(); pElement->m_bSelected = TRUE; m_pPage->GetControl()->RedrawControl(); m_pPage->GetControl()->SendNotifyMessage(XTP_FGN_SELECTIONCHANGED); }