/* Definition of the class for the list of base controls*/
/* */
/* YB*/
/*////////////////////////////////////////////////////////*/
#ifndef _CTL_BASE_CONTROLS_LIST_
#define _CTL_BASE_CONTROLS_LIST_
 
#include "CTL_Ctl.hpp"
 
class CPA_EXPORT CTL_Editor_ControlList : public CList<CTL_Editor_Control *, CTL_Editor_Control *>
{
public:
	CTL_Editor_ControlList();
	~CTL_Editor_ControlList();
 
/*Members*/
private:
	/*List of OwnerData*/
	CTL_ListOfOwnerData m_pri_clListOfOwnerData;
 
/*Functions*/
public:
 
	/*Controls Handling*/
	/*///////////////////*/
 
	/*Will display controls between and under the two given points*/
	/*The first given point is adjusted so that it gives the height of the list of controls*/
	void m_pub_fn_vDisplayControlsInZone(CPoint &r_clTopLeft, CPoint clTopRight);
	
	void m_pub_fn_vHideAllControls();
 
	/*Updates all controls in list, with the given list of Data*/
	/*	1) Gets motor data for each Data*/
	/*	2) */
	void m_pub_fn_vUpdateControlsWithListOfData(class CTL_Editor_DataList *_pclDataList);
 
	/*Updates the current value of all controls in the List,according to the currently edited Data of each*/
	void m_pub_fn_vUpdateControlsWithEditedData(BOOL _bMustReadMotorData);
 
	/*Owner Data*/
	/*/////////////////////*/
	CTL_OwnerData *m_pub_fn_pclAddOwnerData(void *_pvDataPtr,
																					CString _csName);
	CTL_OwnerData *m_pub_fn_pclAddOwnerData(long _lData,
																					CString _csName);
	CTL_OwnerData *m_pub_fn_pclGetOwnerDataWithName(CString _csSearchedName);
 
 
	/*Controls adding*/
	/*/////////////////////*/
	
	CTL_Editor_Control *m_fn_pclAddIntegerControl(long,
																								long,
																								char,
																								BOOL,
																								BOOL,
																								CTL_tdeControlSpacingType,
																								BOOL,
																								CString _csControlName,
																								BOOL _bAcceptsToTakeNameOfData,/*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
 
																								);
	CTL_Editor_Control *m_fn_pclAddDecimalControl(long double,
																								long double,
																								char,
																								BOOL,
																								CTL_tdeControlSpacingType,
																								BOOL,
																								CString _csControlName,
																								BOOL _bAcceptsToTakeNameOfData,/*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
 
																								);
	CTL_Editor_Control *m_fn_pclAddBooleanControl(BOOL,
																								CTL_tdeControlSpacingType,
																								BOOL,
																								CString _csControlName,
																								BOOL _bAcceptsToTakeNameOfData,/*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								);
	CTL_Editor_Control *m_fn_pclAddMaskedControl(	BOOL,
																								CTL_tdeControlSpacingType,
																								BOOL,
																								CString _csControlName,
																								BOOL _bAcceptsToTakeNameOfData,/*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
 
																								);
	CTL_Editor_Control *m_fn_pclAddEnumControl(	BOOL,
																							CString _csControlName,
																								BOOL _bAcceptsToTakeNameOfData,/*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
 
																							);
	CTL_Editor_Control *m_fn_pclAddTextControl(	BOOL,
																							CTL_tdeControlSpacingType,
																							BOOL,
																							CString _csControlName,
																							BOOL _bAcceptsToTakeNameOfData,/*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
 
																							);
	CTL_Editor_Control *m_fn_pclAddVectorControl(	long double,
																								long double,
																								char,
																								BOOL,
																								CString _csControlName,
																								BOOL _bAcceptsToTakeNameOfData,/*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
																								unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
 
																								);
 
	/*User defined Controls adding*/
	/*///////////////////////////////*/
	
	void m_fn_vAddElement(CTL_Editor_Control *pclNewElement);
 
private:
	void m_fn_vEmptyList();
};
 
#endif _CTL_BASE_CONTROLS_LIST_
