//	**************************************************************************************
//	File:			Krb4EditRealmHostList.cpp 
//	By:				Arthur David Leather
//	Created:		12/02/98
//	Copyright		@1998 Massachusetts Institute of Technology - All rights reserved.
//	Description:	CPP file for Krb4EditRealmHostList.h. Contains variables and functions 
//					for Kerberos Four Properties
//
//	History:
//
//	MM/DD/YY	Inits	Description of Change
//	12/02/98	ADL		Original
//	**************************************************************************************


#include "stdafx.h"
#include "leash.h"
#include "Krb4Properties.h"
#include "Krb4EditRealmHostList.h"
#include "lglobals.h"

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

/////////////////////////////////////////////////////////////////////////////
// CKrb4EditRealmHostList dialog

CKrb4EditRealmHostList::CKrb4EditRealmHostList(LPSTR editItem, CWnd* pParent)
	: CDialog(CKrb4EditRealmHostList::IDD, pParent)
{
	m_startup = TRUE;
	m_editItem = _T("");

/*
    // Parse the passed in item 
	LPSTR pEditItem = editItem;
	LPSTR findSpace = strchr(editItem, ' ');
	if (findSpace)
	  *findSpace = 0;
	else
	{
		 LeashErrorBox("This is a defective entry in file", 
					   CKrb4ConfigFileLocation::m_krbFile);
		 ASSERT(0);
		 m_initRealm = m_newRealm = editItem;
		 m_initHost = m_newHost = _T("");
	}

	m_initRealm = m_newRealm = editItem;  // first token
	
	pEditItem = strchr(editItem, '\0');
	if (pEditItem)
	{
		pEditItem++;
		findSpace++; 
	}	
	else
	  ASSERT(0);

	findSpace = strchr(pEditItem, ' ');
	if (findSpace)
	{
		*findSpace = 0;
	}
	else
	{
		m_initAdmin = m_newAdmin = FALSE;	
		m_initHost = m_newHost = pEditItem; // second token 
		return;	
	}
	
	m_initHost = m_newHost = pEditItem; // second token

	findSpace++;
	pEditItem = findSpace;
	if (pEditItem)
	{
		if (strstr(pEditItem, "admin server"))
		  m_initAdmin = m_newAdmin = TRUE; 	
		//else
		  //;  It must be something else??? :(	
	}
	else
	  ASSERT(0);
*/
	//{{AFX_DATA_INIT(CKrb4EditRealmHostList)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

void CKrb4EditRealmHostList::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CKrb4EditRealmHostList)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CKrb4EditRealmHostList, CDialog)
	//{{AFX_MSG_MAP(CKrb4EditRealmHostList)
	ON_WM_SHOWWINDOW()
	ON_EN_CHANGE(IDC_EDIT_DEFAULT_REALM, OnChangeEditDefaultRealm)
	ON_EN_CHANGE(IDC_EDIT_REALM_HOSTNAME, OnChangeEditRealmHostname)
	ON_BN_CLICKED(IDC_RADIO_ADMIN_SERVER, OnRadioAdminServer)
	ON_BN_CLICKED(IDC_RADIO_NO_ADMIN_SERVER, OnRadioNoAdminServer)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CKrb4EditRealmHostList message handlers

BOOL CKrb4EditRealmHostList::OnInitDialog() 
{
	CDialog::OnInitDialog();

	SetDlgItemText(IDC_EDIT_DEFAULT_REALM, m_newRealm);
	SetDlgItemText(IDC_EDIT_REALM_HOSTNAME, m_newHost);

	if (m_initAdmin)
	{ // has Admin Server
		CheckRadioButton(IDC_RADIO_ADMIN_SERVER, IDC_RADIO_NO_ADMIN_SERVER, IDC_RADIO_ADMIN_SERVER);
	}
	else
	{ // no Admin Server
		CheckRadioButton(IDC_RADIO_ADMIN_SERVER, IDC_RADIO_NO_ADMIN_SERVER, IDC_RADIO_NO_ADMIN_SERVER);
	}

	//GetDlgItem(IDC_EDIT_DEFAULT_REALM)->EnableWindow();
	//GetDlgItem(IDC_EDIT_DEFAULT_REALM)->SetFocus();
		
	return TRUE;  
}

void CKrb4EditRealmHostList::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	m_startup = FALSE;
}

void CKrb4EditRealmHostList::OnChangeEditDefaultRealm() 
{
	if (!m_startup)
	  GetDlgItemText(IDC_EDIT_DEFAULT_REALM, m_newRealm);
}

void CKrb4EditRealmHostList::OnChangeEditRealmHostname() 
{
	if (!m_startup)
	  GetDlgItemText(IDC_EDIT_REALM_HOSTNAME, m_newHost);
}

void CKrb4EditRealmHostList::OnRadioAdminServer() 
{
	m_newAdmin = TRUE;	
}

void CKrb4EditRealmHostList::OnRadioNoAdminServer() 
{
	m_newAdmin = FALSE;	
}

void CKrb4EditRealmHostList::OnOK() 
{
	m_newRealm.TrimLeft();
	m_newRealm.TrimRight();
	m_newHost.TrimLeft();
	m_newHost.TrimRight();

	if (m_newRealm.IsEmpty() || m_newHost.IsEmpty())
	{ // stay
		MessageBox("OnOK::Both Realm and Host fields must be filled in!", 
                    "Leash", MB_OK);
	}
	else if (-1 != m_newRealm.Find(' ') || -1 != m_newHost.Find(' '))
	{ // stay
		MessageBox("OnOK::Illegal space found!", "Leash", MB_OK);
	}

	else	
	  CDialog::OnOK(); // exit

	m_editItem = m_newRealm + " " + m_newHost;

	if (m_newAdmin)
	{
		m_editItem += " ";
		m_editItem += ADMIN_SERVER;
	}
}


