// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010  Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

#include "stdafx.h"
#include "tile_edit_exe.h"
#include "DialogEditList.h"
#include <vector>

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

/////////////////////////////////////////////////////////////////////////////
// CDialogEditList dialog


CDialogEditList::CDialogEditList(CWnd* pParent /*=NULL*/)
	: CDialog(CDialogEditList::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDialogEditList)
	//}}AFX_DATA_INIT
}


void CDialogEditList::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDialogEditList)
	DDX_Control(pDX, IDC_LIST1, m_ctrlList);
	DDX_Control(pDX, IDC_COMBO1, m_ctrlCombo);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDialogEditList, CDialog)
	//{{AFX_MSG_MAP(CDialogEditList)
	ON_BN_CLICKED(ID_ADD, OnAdd)
	ON_BN_CLICKED(ID_DEL, OnDel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDialogEditList message handlers

void CDialogEditList::OnAdd() 
{
	// TODO: Add your control notification handler code here
	UpdateData ();
	CString str;
	m_ctrlCombo.GetWindowText (str);
	if (m_ctrlList.FindStringExact (0, str)==LB_ERR)
	{
		m_ctrlList.InsertString (-1, str);
	}
	UpdateData (FALSE);
}

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

	OnInit ();
	UpdateData ();
	m_ctrlCombo.SetCurSel (0);
	UpdateData (FALSE);

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

void CDialogEditList::OnOK() 
{
	// TODO: Add extra validation here
	OnOk ();
	
	CDialog::OnOK();
}

void CDialogEditList::OnDel() 
{
	// TODO: Add your control notification handler code here
	UpdateData ();
	if (m_ctrlList.GetSelCount())
	{
		std::vector<int> vect (m_ctrlList.GetSelCount());
		m_ctrlList.GetSelItems (m_ctrlList.GetSelCount(), &*vect.begin());
		for (int i=m_ctrlList.GetSelCount()-1; i>=0; i--)
			m_ctrlList.DeleteString (vect[i]);
		m_ctrlCombo.SetCurSel (0);
	}
	UpdateData (FALSE);	
}