/************************************************************************
*																		*
*  SETROOT.CPP															*
*																		*
*  Copyright (C) Microsoft Corporation 1995 							*
*  All Rights reserved. 												*
*																		*
************************************************************************/

#include "stdafx.h"
#include "resource.h"
#pragma hdrstop

#include "hpjdoc.h"
#include "setroot.h"

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

CSetRoot::CSetRoot(CHpjDoc* pHpjDoc, CWnd* pParent)
		: CDialog(CSetRoot::IDD, pParent)
{
	pDoc = pHpjDoc;
	plistbox = NULL;

	//{{AFX_DATA_INIT(CSetRoot)
			// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}

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

	if (!plistbox)
		plistbox = (CListBox*) GetDlgItem(IDC_LIST_BMPROOT);

	if (!pDX->m_bSaveAndValidate) {  // initialization
		ASSERT(pDoc);
		if (pDoc->ptblRtfRoot) {
			FillListFromTable(pDoc->ptblRtfRoot, plistbox);
			plistbox->SetSel(0, TRUE);
		}

		SetChicagoDialogStyles(m_hWnd);
		((CButton*) GetDlgItem(IDC_BUTTON_REMOVE_BMP))->
			EnableWindow((BOOL) plistbox->GetCount());

		m_fChanged = FALSE;
	}
	else if (m_fChanged)	// save the data
		FillTableFromList(&pDoc->ptblRtfRoot, plistbox);
}

BEGIN_MESSAGE_MAP(CSetRoot, CDialog)
	//{{AFX_MSG_MAP(CSetRoot)
	ON_BN_CLICKED(IDC_BUTTON_ADD_BMP, OnButtonAddFolder)
	ON_BN_CLICKED(IDC_BUTTON_REMOVE_BMP, OnButtonRemoveFolder)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_CONTEXTMENU, OnContextMenu)
	ON_MESSAGE(WM_HELP, 	   OnHelp)
END_MESSAGE_MAP()

void CSetRoot::OnButtonAddFolder()
{
	char szPath[MAX_PATH];
	CStr cszRtfTypes(IDS_RTF_TYPES);

	if (SetupBrowseDirectory(
			IDS_CHOOSE_DIRECTORY, IDS_CHOOSE_ROOT_FOLDER,
			TRUE, szPath, this->m_hWnd, pDoc->GetPathName(),
			cszRtfTypes, IDS_PROJECT_DIR_ROOT)) {
		int cursel = plistbox->GetCurSel();
		plistbox->SetSel(cursel, FALSE);
		cursel = plistbox->AddString(szPath);
		plistbox->SetSel(cursel, TRUE);
		m_fChanged = TRUE;
	}
	((CButton*) GetDlgItem(IDC_BUTTON_REMOVE_BMP))->
		EnableWindow((BOOL) plistbox->GetCount());
}

void CSetRoot::OnButtonRemoveFolder()
{
	RemoveListItem(plistbox);
	((CButton*) GetDlgItem(IDC_BUTTON_REMOVE_BMP))->
		EnableWindow((BOOL) plistbox->GetCount());
	m_fChanged = TRUE;
}

static const DWORD aHelpIds[] = {
	IDC_LIST_BMPROOT,		IDH_LIST_FOLDERS_TOPIC_FILES,
	IDC_BUTTON_ADD_BMP, 	IDH_ADD_TOPIC_FILE_FOLDER,
	IDC_BUTTON_REMOVE_BMP,	IDH_REMOVE_TOPIC_FILE_FOLDER,
	0, 0
};

LRESULT CSetRoot::OnHelp(WPARAM wParam, LPARAM lParam)
{
	::WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle,
		AfxGetApp()->m_pszHelpFilePath,
		HELP_WM_HELP, (DWORD) (LPVOID) aHelpIds);
	return 0;
}

LRESULT CSetRoot::OnContextMenu(WPARAM wParam, LPARAM lParam)
{
	::WinHelp((HWND) wParam,
		AfxGetApp()->m_pszHelpFilePath,
		HELP_CONTEXTMENU, (DWORD) (LPVOID) aHelpIds);
	return 0;
}