/*****************************************************************************
* Copyright (c) 1990-98 Digi International Inc., All Rights Reserved
* 
* This software contains proprietary and confidential information of Digi
* International Inc.  By accepting transfer of this copy, Recipient agrees
* to retain this software in confidence, to prevent disclosure to others,
* and to make no use of this software other than that for which it was
* delivered.  This is an unpublished copyrighted work of Digi International
* Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly
* prohibited.
* 
* Restricted Rights Legend
*
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in
* Technical Data and Computer Software clause at DFARS 252.227-7031 or
* subparagraphs (c)(1) and (2) of the Commercial Computer Software -
* Restricted Rights at 48 CFR 52.227-19, as applicable.
*
* Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
*
*****************************************************************************/


// PropProtocol.cpp : implementation file
//

#include "stdafx.h"
#include "PropProtocol.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPropProtocol property page

IMPLEMENT_DYNCREATE(CPropProtocol, CPropertyPage)

CPropProtocol::CPropProtocol() : CPropertyPage(CPropProtocol::IDD)
{
	//{{AFX_DATA_INIT(CPropProtocol)
	m_strProtocol = _T("");
	//}}AFX_DATA_INIT
}

#if defined NT5
CPropProtocol::CPropProtocol(UINT nId) : CPropertyPage(CPropProtocol::IDD, nId)
{
	//{{AFX_DATA_INIT(CPropProtocol)
	m_strProtocol = _T("");
	//}}AFX_DATA_INIT
}
#endif // #if defined NT5

CPropProtocol::~CPropProtocol()
{
}

void CPropProtocol::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPropProtocol)
	DDX_CBString(pDX, IDC_Protocol, m_strProtocol);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPropProtocol, CPropertyPage)
	//{{AFX_MSG_MAP(CPropProtocol)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CPropProtocol::SetValues(CStringArray const & astrValues, int const iDefaultValue /* = 0 */)
{
   BOOL fSuccess = FALSE;

   try
   {
      AffirmThrow(astrValues.GetSize() > 0);
      AffirmThrow(iDefaultValue >= 0);
      AffirmThrow(iDefaultValue < astrValues.GetSize());

      m_astrValues.RemoveAll();
      m_astrValues.Copy(astrValues);
      m_iDefaultValue = iDefaultValue;

      RefreshValues(TRUE);

      fSuccess = TRUE;
   }
   catch (CAffirmException ae)
   {
   }

   return fSuccess;
}


int CPropProtocol::GetChoice(void)
{
   int iChoice = m_iDefaultValue;

   try
   {
      if (m_hWnd != NULL) UpdateData();
	      
      for (int i = 0; i < m_astrValues.GetSize(); i++)
      {
         if (m_strProtocol == m_astrValues[i])
         {
            iChoice = i;
            break;
         }
      }
   }
   catch (CAffirmException ae)
   {
   }

   return iChoice;
}

void CPropProtocol::RefreshValues(BOOL const fUseDefault /* = FALSE */)
{
   try
   {
      AffirmThrow(m_astrValues.GetSize() > 0);
      AffirmThrow(m_iDefaultValue >= 0);
      AffirmThrow(m_iDefaultValue < m_astrValues.GetSize());

      if (fUseDefault) m_strProtocol = m_astrValues[m_iDefaultValue];

      if (m_hWnd != NULL)
      {
         CComboBox * pwndComboBox = (CComboBox *) GetDlgItem(IDC_Protocol);
         AffirmThrow(pwndComboBox != NULL);

         pwndComboBox->ResetContent();

         for (int i = 0; i < m_astrValues.GetSize(); i++)
         {
            AffirmThrow(pwndComboBox->AddString(m_astrValues[i]) >= 0);
         }

         UpdateData(FALSE);
      }
   }
   catch (CAffirmException ae)
   {
   }

   return;
}

/////////////////////////////////////////////////////////////////////////////
// CPropProtocol message handlers

BOOL CPropProtocol::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

   RefreshValues(m_fFirstInit);
   m_fFirstInit = FALSE;

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