// EDACDgMg.cpp : implementation file
/////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"

#include "EDACDgMg.hpp"

#include "_AInterf.hpp"

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

#define C_EDAC_MESSAGE_TIMER_ID			70
#define C_EDAC_MESSAGE_TIMER_DELAY	200

/////////////////////////////////////////////////////////////////////////////
// EdActors_Dialog_Message dialog

BEGIN_MESSAGE_MAP(EdActors_Dialog_Message, CDialog)
	//{{AFX_MSG_MAP(EdActors_Dialog_Message)
	ON_WM_TIMER()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


//***************************************************************************
EdActors_Dialog_Message::EdActors_Dialog_Message(CString _csMessage,
																								 CWnd* pParent /*=NULL*/)
												: CDialog(EdActors_Dialog_Message::IDD, &g_oBaseFrame)
{
	hOldInstance = AfxGetResourceHandle();
	AfxSetResourceHandle(g_stActorEditorIdentity.hModule);

	//{{AFX_DATA_INIT(EdActors_Dialog_Message)
	//}}AFX_DATA_INIT

	m_csMessage = _csMessage;
}

//***************************************************************************
EdActors_Dialog_Message::~EdActors_Dialog_Message()
{
	AfxSetResourceHandle(hOldInstance);
}

//***************************************************************************
void EdActors_Dialog_Message::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(EdActors_Dialog_Message)
	DDX_Text(pDX, IDC_STATIC_TEXT_OF_MESSAGE, m_csMessage);
	//}}AFX_DATA_MAP
}

//***************************************************************************
BOOL EdActors_Dialog_Message::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//Computes Message size
	CStatic *pclStatic = (CStatic *)GetDlgItem(IDC_STATIC_TEXT_OF_MESSAGE);
	CClientDC dc(pclStatic);
	CSize csMessageSize = dc.GetTextExtent(m_csMessage);

	//Computes the max number of 'Spaces' to be inserted
	CSize csSpaceSize = dc.GetTextExtent(" ", 1);
	CRect crStaticRect;
	pclStatic->GetClientRect(crStaticRect);
	m_pri_uwMaxNumberOfSpaces = (unsigned short)(( crStaticRect.Width() - csMessageSize.cx ) / csSpaceSize.cx);

	m_pri_uwCurrentNumberOfSpaces = 0;
	m_pri_cDelta = 1;

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

/////////////////////////////////////////////////////////////////////////////
// EdActors_Dialog_Message message handlers

//***************************************************************************
BOOL EdActors_Dialog_Message::m_pub_fn_bCreate()
{
	BOOL bCreationOK = Create(EdActors_Dialog_Message::IDD, NULL);
	
//	if ( bCreationOK )
//		SetTimer(C_EDAC_MESSAGE_TIMER_ID, C_EDAC_MESSAGE_TIMER_DELAY, NULL);
	
	return bCreationOK;
}

//***************************************************************************
void EdActors_Dialog_Message::m_pub_fn_vDestroy()
{
//	KillTimer(C_EDAC_MESSAGE_TIMER_ID);
}

//***************************************************************************
void EdActors_Dialog_Message::OnTimer(UINT nIDEvent) 
{
	if ( nIDEvent == C_EDAC_MESSAGE_TIMER_ID )
	{
		if ( m_pri_cDelta == 1 )
		{
			if ( m_pri_uwCurrentNumberOfSpaces < m_pri_uwMaxNumberOfSpaces )
			{
				m_csMessage = " " + m_csMessage;
				
				m_pri_uwCurrentNumberOfSpaces += 1;
			}
			else
				m_pri_cDelta = -1;
		}
		else
		{
			if ( m_pri_uwCurrentNumberOfSpaces > 0 )
			{
				m_csMessage = m_csMessage.Right(m_csMessage.GetLength() - 1);
				
				m_pri_uwCurrentNumberOfSpaces -= 1;
			}
			else
				m_pri_cDelta = 1;
		}
	}


		//Displays Text
	CStatic *pclStatic = (CStatic *)GetDlgItem(IDC_STATIC_TEXT_OF_MESSAGE);
	pclStatic->SetWindowText(m_csMessage);
	
	CDialog::OnTimer(nIDEvent);
}

//***************************************************************************
void EdActors_Dialog_Message::OnDestroy() 
{
	CDialog::OnDestroy();
	
	m_pub_fn_vDestroy();
}
