// DlgSelectBase.cpp : implementation file
//

#include "stdafx.h"
//#include "apltransportclient.h"
#include "DlgSelectBase.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgSelectBase dialog


CDlgSelectBase::CDlgSelectBase(CWnd* pParent /*=NULL*/)
	: CaplResizableDialog(CDlgSelectBase::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgSelectBase)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// m_lang_england = false; - убрано по просьбе Лобанова. Перевод будет выполняться новым механизмом через CaplTranslate.
}


void CDlgSelectBase::DoDataExchange(CDataExchange* pDX)
{
	CaplResizableDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgSelectBase)
	DDX_Control(pDX, IDOK, m_BtnOk);
	DDX_Control(pDX, IDCANCEL, m_BtnCancel);
	DDX_Control(pDX, IDC_LIST_BASE, m_ListBase);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgSelectBase, CaplResizableDialog)
	//{{AFX_MSG_MAP(CDlgSelectBase)
	ON_WM_CANCELMODE()
	ON_NOTIFY(HDN_ITEMCHANGED, IDC_LIST_BASE, OnItemchangedListBase)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_BASE, OnItemchangedListBase)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_BASE, OnDblclkListBase)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgSelectBase message handlers

BOOL CDlgSelectBase::OnInitDialog() 
{
	CaplResizableDialog::OnInitDialog();

	ModifyStyleEx(0, WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTROLPARENT);   
	ModifyStyle(0, WS_MAXIMIZEBOX);   

	HWND hWnd = ::GetDlgItem(m_hWnd, IDC_LIST_BASE);
	ListView_SetExtendedListViewStyle(hWnd, 
		ListView_GetExtendedListViewStyle(hWnd) | LVS_EX_FULLROWSELECT /*| LVS_EX_GRIDLINES */);

	int i = 0;
	
	// TODO: Add extra initialization here
	m_ListBase.DeleteAllItems();
	CRect rect;
	m_ListBase.GetClientRect(rect);

	m_ListBase.InsertColumn(0,APL_T( "Имя базы"),LVCFMT_LEFT,rect.Width());
	/* - убрано по просьбе Лобанова. Перевод будет выполняться новым механизмом через CaplTranslate.
	if(m_lang_england)
	{
		m_ListBase.InsertColumn(0,_T("Database name"),LVCFMT_LEFT,rect.Width());
	}
	else
	{
		m_ListBase.InsertColumn(0,APL_T( "Имя базы"),LVCFMT_LEFT,rect.Width());
	}*/
	for(i = 0;i<m_BaseList->GetSize();i++)
	{
		//первый столбец
		m_ListBase.InsertItem(i,(LPTSTR)(LPCTSTR) m_BaseList->GetAt(i));
		//И адрес структуры с "содержимым"
		m_ListBase.SetItemData(i,(DWORD)i);
	}
	m_BtnOk.SetFlat(FALSE);
	m_BtnOk.SetIcon(GetAplStdIco16(APLSTDICO_OK));
	m_BtnCancel.SetFlat(FALSE);
	m_BtnCancel.SetIcon(GetAplStdIco16(APLSTDICO_CANCEL));	

	/* - убрано по просьбе Лобанова. Перевод будет выполняться новым механизмом через CaplTranslate.
	if(m_lang_england)
	{
		SetWindowText(_T("Select database"));
		m_BtnCancel.SetWindowText(_T("Cancel"));
	}*/

	AddAnchor(IDC_LIST_BASE,TOP_LEFT,BOTTOM_RIGHT);
	AddAnchor(IDOK, BOTTOM_RIGHT);
	AddAnchor(IDCANCEL,BOTTOM_RIGHT);

	m_ListBase.SetItemState(m_num_base_ext,LVNI_ALL| LVNI_SELECTED ,LVNI_ALL| LVNI_SELECTED/* NULL*/);
	m_ListBase.EnsureVisible(m_num_base_ext, true);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgSelectBase::OnCancelMode() 
{
	CaplResizableDialog::OnCancelMode();
	
	// TODO: Add your message handler code here
	
}

void CDlgSelectBase::OnItemchangedListBase(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR;
	// TODO: Add your control notification handler code here
	// Так какая же organi.. активна на экране?
	m_num_base = m_ListBase.GetNextItem( -1 , LVNI_ALL| LVNI_SELECTED );
 	*pResult = 0;
}

void CDlgSelectBase::OnDblclkListBase(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	m_num_base = m_ListBase.GetNextItem( -1 , LVNI_ALL| LVNI_SELECTED );
	OnOK();	
	*pResult = 0;
}
