// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// 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/>.

#if !defined(AFX_VEGETABLE_DENSITY_PAGE_H__12320F77_5179_4727_A551_F5A8FAE7EB3A__INCLUDED_)
#define AFX_VEGETABLE_DENSITY_PAGE_H__12320F77_5179_4727_A551_F5A8FAE7EB3A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// vegetable_density_page.h : header file
//

class	CDirectEditableRangeFloat;
class	CVegetableNoiseValueDlg;
class	CVegetableDlg;

namespace	NL3D
{
	class	CVegetable;
}

/////////////////////////////////////////////////////////////////////////////
// CVegetableDensityPage dialog

class CVegetableDensityPage : public CPropertyPage
{
	DECLARE_DYNCREATE(CVegetableDensityPage)

// Construction
public:
	CVegetableDensityPage();
	~CVegetableDensityPage();
	void	initVegetableDlg(CVegetableDlg *vegetableDlg) {_VegetableDlg= vegetableDlg;}

// Dialog Data
	//{{AFX_DATA(CVegetableDensityPage)
	enum { IDD = IDD_VEGETABLE_DENSITY_DLG };
	CStatic	StaticVegetableShape;
	CButton	MaxDensityStaticText;
	CSliderCtrl	AngleMinSlider;
	CSliderCtrl	AngleMaxSlider;
	CEdit	AngleMinEdit;
	CEdit	AngleMaxEdit;
	CComboBox	DistTypeCombo;
	CButton	MaxDensityCheckBox;
	//}}AFX_DATA


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


public:
	/** set the vegetble to edit. NULL will disable all the controls.
	 *	Called by CVegetableDlg.
	 */
	void			setVegetableToEdit(NL3D::CVegetable *vegetable);


// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CVegetableDensityPage)
	virtual BOOL OnInitDialog();
	afx_msg void OnCheckMaxDensity();
	afx_msg void OnSelchangeComboDistType();
	afx_msg void OnRadioAngleCeiling();
	afx_msg void OnRadioAngleFloor();
	afx_msg void OnRadioAngleWall();
	afx_msg void OnReleasedcaptureSliderAngleMax(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnReleasedcaptureSliderAngleMin(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnKillfocusEditAngleMin();
	afx_msg void OnKillfocusEditAngleMax();
	afx_msg void OnChangeEditAngleMin();
	afx_msg void OnChangeEditAngleMax();
	afx_msg void OnButtonVegetableBrowse();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

protected:
	// The "father" VegetableDlg.
	CVegetableDlg					*_VegetableDlg;


	// Density
	CVegetableNoiseValueDlg			*_DensityDlg;

	// MaxDensity;
	CDirectEditableRangeFloat		*_MaxDensityDlg;


	// The vegetable to edit.
	NL3D::CVegetable				*_Vegetable;

private:

	void		enableAngleEdit(uint radioId);
	// update slider and edit text.
	void		updateViewAngleMin();
	void		updateViewAngleMax();
	// update vegetable and view from edit text
	void		updateAngleMinFromEditText();
	void		updateAngleMaxFromEditText();

	float		_PrecMaxDensityValue;
};

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

#endif // !defined(AFX_VEGETABLE_DENSITY_PAGE_H__12320F77_5179_4727_A551_F5A8FAE7EB3A__INCLUDED_)