// ClassInfoDlg_Gui_Grid.h : header file
//
#if !defined(_CLASSINFODLG_GUI_GRID_H_)
#define _CLASSINFODLG_GUI_GRID_H_

#include "resource.h"
#include "PropertyEditorDlg.h"
#include "GridCtrl.h"
#include <vector>
#include <string>

using namespace std;

class CXmlClassInfo;

/////////////////////////////////////////////////////////////////////////////
// CClassInfoDlg_Gui_Grid dialog

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

// Dialog Data
	//{{AFX_DATA(CClassInfoDlg_Gui_Grid)
	enum { IDD = IDD_CLASSINFO_GUI_GRID };
	CButton	cmdRemoveColumn_;
	CButton	cmdMoveRight_;
	CButton	cmdMoveLeft_;
	CButton	cmdAddColumn_;
	CButton	chkDisplayNumberColumn_;
	CButton	chkDisplayButtonBar_;
	CButton optZeroAlignedCount_;
	CButton optOneAlignedCount_;
	//}}AFX_DATA

public:
	void StoreData();
	void SetData(CXmlBaseElement* element);
	void OnDataUpdate();

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

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CClassInfoDlg_Gui_Grid)
	virtual BOOL OnInitDialog();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnCmdAddColumn();
	afx_msg void OnChkDisplayNumberColumn();
	afx_msg void OnCmdRemoveColumn();
	afx_msg void OnCmdMoveLeft();
	afx_msg void OnCmdMoveRight();
	afx_msg void OnOptNumberingZero();
	afx_msg void OnOptNumberingOne();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP();

protected:
	void UpdateWindowSize();
	void DisplayGridPreview();
	void UpdateOptions();
	void EnableOptions();

	CXmlClassInfo* classInfo_;
	vector<cmString> usedMembersId_;
	CGridCtrl grid_;
	bool zeroAlignedCount_;
};

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

#endif // !defined(_CLASSINFODLG_GUI_GRID_H_)
