/*****************************************************************************
* 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
*
*****************************************************************************/


// PropSerialCommName.cpp : implementation file
//

#include "stdafx.h"
#include "PropSerialCommName.h"
#include "SerialCommNameHelpers.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPropSerialCommName property page

IMPLEMENT_DYNCREATE(CPropSerialCommName, CPropertyPage)

CPropSerialCommName::CPropSerialCommName() : CPropertyPage(CPropSerialCommName::IDD)
{
	//{{AFX_DATA_INIT(CPropSerialCommName)
	m_strSerialCommName = _T("");
	//}}AFX_DATA_INIT
}

CPropSerialCommName::~CPropSerialCommName()
{
}

void CPropSerialCommName::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPropSerialCommName)
	DDX_Text(pDX, IDC_SerialCommName, m_strSerialCommName);
	DDV_MaxChars(pDX, m_strSerialCommName, 25);
	//}}AFX_DATA_MAP
}


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

/////////////////////////////////////////////////////////////////////////////
// CPropSerialCommName message handlers

CString CPropSerialCommName::GetMessageBoxTitle()
{
   CString strTitle("");

   try
   {
      CWnd * pParentWnd = GetParent();
      AffirmThrow(pParentWnd != NULL);

      pParentWnd->GetWindowText(strTitle);

      CString str;
      GetWindowText(str);

      strTitle += TEXT(" ") + str;
   }
   catch(CAffirmException ae)
   {
   }

   return strTitle;
}

BOOL CPropSerialCommName::OnKillActive() 
{
   if (!UpdateData())
      return FALSE;

   CString strIllegal;
   strIllegal.LoadString(IDS_IllegalChars);
   if (m_strSerialCommName.IsEmpty() ||
       !_istalnum(m_strSerialCommName[0]) ||
       (_tcspbrk(m_strSerialCommName, strIllegal) != NULL))
   {
      CString strCannotUseIllegals;
      strCannotUseIllegals.Format(IDS_CannotUseIllegalChars, strIllegal);
      ::MessageBox(GetSafeHwnd(), strCannotUseIllegals, GetMessageBoxTitle(), MB_OK | MB_ICONINFORMATION);
      return FALSE;
   }

   if (!IsUniqueSerialCommName(m_strSerialCommName))
   {
      CString strCommNameAlreadyInUse;
      strCommNameAlreadyInUse.LoadString(IDS_CommNameAlreadyInUse);
      ::MessageBox(GetSafeHwnd(), strCommNameAlreadyInUse, GetMessageBoxTitle(), MB_OK | MB_ICONINFORMATION);
      return FALSE;
   }
	
	return CPropertyPage::OnKillActive();
}
