// GenerationPrefDlg.h : header file
//
#if !defined(_GENERATIONPREFDLG_H_)
#define _GENERATIONPREFDLG_H_

//#include <string>
#include <vector>
#include "CfgComboBox.h"
#include "enums.h"
#include "FCool.h"

using namespace std;

/////////////////////////////////////////////////////////////////////////////
// CGenerationPrefDlg dialog

class CGenerationPrefDlg : public CDialog
{
// Construction
public:
	CGenerationPrefDlg(CWnd* pParent = NULL);   // standard constructor

	void AddAction(enGeneratorAction actionId);
	void AddConfiguration(enGeneratorConfig configId);
	void AddTestPrjAction(enTestProjectAction actionId);

	void SetActionId(enGeneratorAction actionId);
	enGeneratorAction GetActionId();

	void SetConfigId(enGeneratorConfig configId);
	enGeneratorConfig GetConfigId();

	void SetTestProjectActionId(enTestProjectAction actionId);
	enTestProjectAction GetTestProjectActionId();

	void SetTitle(const cmString& title);

// Dialog Data
	//{{AFX_DATA(CGenerationPrefDlg)
	enum { IDD = IDD_GENERATION_PREF };
	CCoolButton		cmdDetails_;
	CCfgComboBox	cboTestProject_;
	CCfgComboBox	cboConfiguration_;
	CCfgComboBox	cboAction_;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CGenerationPrefDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CGenerationPrefDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnPaint();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
	afx_msg void OnSelchangeCboAction();
	afx_msg void OnCmdDetails();
	afx_msg void OnSelchangeCboConfiguration();
	afx_msg void OnSelchangeCboTestProject();
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP();

	cmString GeneratorAction2String(enGeneratorAction actionId);
	cmString GeneratorConfig2String(enGeneratorConfig configId);
	cmString TestProjectAction2String(enTestProjectAction actionId);
	void NotifyChange();

	void UpdateWindowSize();

	vector<enGeneratorAction> actionList_;
	vector<enGeneratorConfig> configList_;
	vector<enTestProjectAction> testProjectActionList_;

	enGeneratorAction actionId_;
	enGeneratorConfig configId_;
	enTestProjectAction testProjectActionId_;

	cmString title_;
	bool initialized_;

	CImageList imageList_;
	bool expanded_;
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(_GENERATIONPREFDLG_H_)
