// SearchEditBox.cpp : implementation file
//

#include "stdafx.h"
#include "cp_main.h"
#include "SearchEditBox.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSearchEditBox

CSearchEditBox::CSearchEditBox()
{
}

CSearchEditBox::~CSearchEditBox()
{
}


BEGIN_MESSAGE_MAP(CSearchEditBox, CEdit)
	//{{AFX_MSG_MAP(CSearchEditBox)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSearchEditBox message handlers

BOOL CSearchEditBox::PreTranslateMessage(MSG* pMsg) 
{
	switch(pMsg->message) 
	{
		case WM_KEYDOWN:
		{
			if(pMsg->wParam == VK_RETURN)
			{
				CWnd *pWnd = GetParent();
				if(pWnd)
				{
					if(g_Opt.m_bFindAsYouType)
					{
						pWnd->SendMessage(NM_SEARCH_ENTER_PRESSED, 0, 0);
					}
					else
					{
						//Send a message to the parent to refill the lb from the search
						pWnd->PostMessage(CB_SEARCH, 0, 0);
					}
				}

				return TRUE;
			}	
			else if (pMsg->wParam == VK_DOWN ||
						pMsg->wParam == VK_UP ||
						pMsg->wParam == VK_F3)
			{
				if(g_Opt.m_bFindAsYouType)
				{
					CWnd *pWnd = GetParent();
					if(pWnd)
					{
						pWnd->SendMessage(CB_UPDOWN, pMsg->wParam, pMsg->lParam);
						return TRUE;
					}
				}
			}
			else if(pMsg->wParam == 'C' && CONTROL_PRESSED ||
					pMsg->wParam == 'X' && CONTROL_PRESSED ||
					pMsg->wParam == VK_DELETE)
			{
				LONG lEditSel = GetSel();
				if(LOWORD(lEditSel) == HIWORD(lEditSel))
				{
					CWnd *pWnd = GetParent();
					if(pWnd)
					{
						pWnd->SendMessage(CB_UPDOWN, pMsg->wParam, pMsg->lParam);
						return TRUE;
					}
				}
			}
			break;
		}
	}
	
	return CEdit::PreTranslateMessage(pMsg);
}
