//**********************************************************************
void CBCGPRibbonCustomizeRibbonPage::OnRemove() 
{
#ifndef BCGP_EXCLUDE_GRID_CTRL
	CBCGPGridRow* pRow = m_wndRibbonTreeDest.GetCurSel();
	if (pRow == NULL)
	{
		ASSERT(FALSE);
		return;
	}

	m_bDontProcessSelChanged = TRUE;

	ASSERT_VALID(pRow);

	CBCGPGridRow* pParentRow = pRow->GetParent();

	if (m_pSelCategoryDest != NULL)
	{
		ASSERT_VALID(m_pSelCategoryDest);
		ASSERT(m_pSelCategoryDest->IsCustom());

		m_pSelCategoryDest->m_bToBeDeleted = TRUE;
		m_CustomizationData.RemoveCustomTab(*m_pSelCategoryDest);
	}
	else if (m_pSelPanelDest != NULL)
	{
		ASSERT_VALID(m_pSelPanelDest);

		if (m_pSelPanelDest->IsCustom())
		{
			m_pSelPanelDest->m_bToBeDeleted = TRUE;
			m_CustomizationData.RemoveCustomPanel(*m_pSelPanelDest);
		}
		else
		{
			m_CustomizationData.ShowPanel(m_pSelPanelDest, FALSE);
		}
	}
	else if (m_pSelElemDest != NULL)
	{
		ASSERT_VALID(m_pSelElemDest);

		m_CustomizationData.RemoveCustomElement(*m_pSelElemDest);

		if (m_pSelElemDest->m_bIsNew)
		{
			CBCGPRibbonPanel* pPanel = m_pSelElemDest->GetParentPanel();
			ASSERT_VALID(pPanel);

			int nIndex = pPanel->GetIndex(m_pSelElemDest);
			ASSERT(nIndex >= 0);

			pPanel->Remove(nIndex);
		}
	}
	else
	{
		ASSERT(FALSE);
		m_bDontProcessSelChanged = FALSE;
		return;
	}

	int id = pRow->GetRowId();
	
	BOOL bDisableDown = FALSE;
	BOOL bDisableUp = FALSE;

	m_wndRibbonTreeDest.SetRedraw(FALSE);

	if (!m_wndRibbonTreeDest.MoveSelection(TRUE))
	{
		bDisableDown = TRUE;
		bDisableUp = !m_wndRibbonTreeDest.MoveSelection(FALSE);
	}

	CBCGPGridRow* pSelRow = m_wndRibbonTreeDest.GetCurSel();
	m_wndRibbonTreeDest.SetCurSel(NULL, FALSE);

	m_wndRibbonTreeDest.RemoveRow(id);
	m_wndRibbonTreeDest.AdjustLayout ();

	m_bDontProcessSelChanged = FALSE;

	if (bDisableDown && bDisableUp)
	{
		m_wndRibbonTreeDest.SetCurSel(pParentRow);
	}
	else
	{
		m_wndRibbonTreeDest.SetCurSel(pSelRow);
	}
	
	m_wndRibbonTreeDest.SetRedraw();
	m_wndRibbonTreeDest.RedrawWindow();

#endif
}