// prmsdlg.cpp : implementation file
//

#include "stdafx.h"
#include "viewex.h"
#include "resource.h"
#include "prmsdlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CParamsDialog dialog


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
CParamsDialog::CParamsDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CParamsDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CParamsDialog)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
   m_nArgs  = 0;

   m_pValues[ 0 ] = &m_eParamValue1;
   m_pValues[ 1 ] = &m_eParamValue2;
   m_pValues[ 2 ] = &m_eParamValue3;
   m_pValues[ 3 ] = &m_eParamValue4;
   m_pValues[ 4 ] = &m_eParamValue5;
   m_pValues[ 5 ] = &m_eParamValue6;

   m_pNames[ 0 ]  = &m_strParamName1;
   m_pNames[ 1 ]  = &m_strParamName2;
   m_pNames[ 2 ]  = &m_strParamName3;
   m_pNames[ 3 ]  = &m_strParamName4;
   m_pNames[ 4 ]  = &m_strParamName5;
   m_pNames[ 5 ]  = &m_strParamName6;

   m_pArgNames    = NULL;
   m_pArgValues   = NULL;

}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void CParamsDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CParamsDialog)
	DDX_Control(pDX, IDC_METHOD, m_strMethodName);
	DDX_Control(pDX, IDE_PARAM6, m_eParamValue6);
	DDX_Control(pDX, IDE_PARAM5, m_eParamValue5);
	DDX_Control(pDX, IDE_PARAM4, m_eParamValue4);
	DDX_Control(pDX, IDE_PARAM3, m_eParamValue3);
	DDX_Control(pDX, IDE_PARAM2, m_eParamValue2);
	DDX_Control(pDX, IDE_PARAM1, m_eParamValue1);
	DDX_Control(pDX, IDC_PARAM6, m_strParamName6);
	DDX_Control(pDX, IDC_PARAM5, m_strParamName5);
	DDX_Control(pDX, IDC_PARAM4, m_strParamName4);
	DDX_Control(pDX, IDC_PARAM3, m_strParamName3);
	DDX_Control(pDX, IDC_PARAM2, m_strParamName2);
	DDX_Control(pDX, IDC_PARAM1, m_strParamName1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CParamsDialog, CDialog)
	//{{AFX_MSG_MAP(CParamsDialog)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CParamsDialog message handlers


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void  CParamsDialog::SetMethodName  ( CString& strMethodName )
{
   m_strMethName  = strMethodName;
}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void  CParamsDialog::SetArgNames( CStringArray* pArgNames )
{
   m_pArgNames = pArgNames;
   m_nArgs     = (int)pArgNames->GetSize( );
}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void  CParamsDialog::SetArgValues( CStringArray* pArgValues )
{
   m_pArgValues   = pArgValues;
}

/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
BOOL CParamsDialog::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

   int nIdx;

   for( nIdx = 0; nIdx < m_nArgs && nIdx < 6 ; nIdx++ )
   {
      m_pNames[ nIdx ]->SetWindowText( m_pArgNames->GetAt( nIdx ) );
      m_pValues[ nIdx ]->SetWindowText( _T("") );
   }

   for( ; nIdx < 6 ; nIdx++ )
   {
      m_pNames[ nIdx ]->ShowWindow( SW_HIDE );
      m_pValues[ nIdx ]->ShowWindow( SW_HIDE );
   }
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


/***********************************************************
  Function:
  Arguments:
  Return:
  Purpose:
  Author(s):
  Revision:
  Date:
***********************************************************/
void CParamsDialog::OnOK()
{
	// TODO: Add extra validation here
	for( int nIdx = 0; nIdx < m_nArgs && m_nArgs < 6; nIdx++ )
   {
      CString  strValue;

      m_pValues[ nIdx ]->GetWindowText( strValue );
      m_pArgValues->Add( strValue );
   }

	CDialog::OnOK();
}