//*******************************************************************************
// COPYRIGHT NOTES
// ---------------
// This is a sample for BCGControlBar Library Professional Edition
// Copyright (C) 1998-2024 BCGSoft Ltd.
// All rights reserved.
//
// This source code can be used, distributed or modified
// only under terms and conditions 
// of the accompanying license agreement.
//*******************************************************************************
//
// CustomCells.cpp: implementation of the CColorGridItem class.
//
//////////////////////////////////////////////////////////////////////

#include "pch.h"
//#include "BCGPGridExample.h"
#include "CustomCells.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

////////////////////////////////////////////////////////////////////////////////
// CButtonItem Class

CButtonItem::CButtonItem (LPCTSTR lpszText, UINT id) :
	CBCGPGridItem (lpszText)
{
	m_bAllowEdit = FALSE;
	m_id = id;
}
//*****************************************************************************************
void CButtonItem::OnDrawValue (CDC* pDC, CRect rect)
{
	ASSERT_VALID (pDC);

	CBCGPGridCtrl* pGridCtrl = GetOwnerList ();

	OnFillBackground (pDC, rect);

	const int nMargin = globalUtils.ScaleByDPI(1, pGridCtrl);
	rect.DeflateRect(nMargin, nMargin);

	COLORREF clrText = globalData.clrBarText;

	if (pGridCtrl != NULL && pGridCtrl->IsVisualManagerStyle())
	{
		clrText = CBCGPVisualManager::GetInstance()->OnDrawPropListPushButton(pDC, rect, NULL, TRUE, FALSE, IsEnabled(), FALSE, IsHighlighted());
	}
	else
	{
		clrText = CBCGPVisualManager::GetInstance()->CBCGPVisualManager::OnDrawPropListPushButton(pDC, rect, NULL, TRUE, FALSE, IsEnabled(), FALSE, IsHighlighted());
	}


	COLORREF clrTextOld = pDC->SetTextColor(clrText);

	CString strText = (LPCTSTR)(_bstr_t) m_varValue;
	pDC->DrawText (strText, rect, DT_CENTER | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX);

	pDC->SetTextColor (clrTextOld);
}
//*****************************************************************************************
BOOL CButtonItem::OnClickValue (UINT uiMsg, CPoint point)
{
	if (uiMsg != WM_LBUTTONDOWN)
	{
		return CBCGPGridItem::OnClickValue (uiMsg, point);
	}

	CBCGPGridCtrl* pGridCtrl = GetOwnerList();
	ASSERT_VALID (pGridCtrl);

	pGridCtrl->SendMessage (WM_COMMAND,
							MAKEWPARAM (m_id, BN_CLICKED));

	return TRUE;
}
//*****************************************************************************************
BOOL CButtonItem::PushChar (UINT nChar)
{
	if (nChar == VK_SPACE || nChar == VK_RETURN)
	{
		CBCGPGridCtrl* pGridCtrl = GetOwnerList();
		ASSERT_VALID (pGridCtrl);
		
		pGridCtrl->SendMessage (WM_COMMAND,
			MAKEWPARAM (m_id, BN_CLICKED));

		return TRUE;
	}
	
	return CBCGPGridItem::PushChar(nChar);
}
//*****************************************************************************************
void CButtonItem::OnMouseMove(const CPoint& /*point*/)
{
	if (!IsHighlighted())
	{
		Highlight();
		Redraw();
	}
}
//*****************************************************************************************
void CButtonItem::OnMouseLeave()
{
	if (IsHighlighted())
	{
		Highlight(FALSE);
		Redraw();
	}
}
