/* Header for the definition of an enum characteristic*/
/*/////////////////////////////////////////////////////////*/
#ifndef _CTL_ENUM_CONTROL_
#define _CTL_ENUM_CONTROL_
 
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000*/
 
#include "CTL_Ctl.hpp"
#include "CTL\Others\CTL_ClBk.hpp"
 
class CTL_Editor_EnumDescriptor;
class CTL_Editor_ComboBox;
class CTL_Editor_Static;
class CTL_Editor_ControlList;
 
class CPA_EXPORT CTL_Editor_EnumControl :	public CTL_Editor_Control
{
/*Constructor / Destructor*/
public:
	CTL_Editor_EnumControl(BOOL bReadOnly,
												 CTL_Editor_ControlList *_pclParentList,
												 CString _csControlName,
												BOOL _bAcceptNameFromData, /*ANNECY BBB*/
/*Stefan Dumitrean 20-07-98 ( OAC buttons )*/
												unsigned char ucInitialCurrentPair
/*End Stefan Dumitrean 20-07-98 ( OAC buttons )*/
 
												 );
 
	~CTL_Editor_EnumControl();
 
/*Attributes*/
public:
	CTL_Editor_EnumDescriptor *m_pclEnumDescriptor;
 
protected:
 
/* CPA2 ASilvescu 98-05-21*/
/*private:*/
/* End CPA2 ASilvescu 98-05-21*/
	CTL_Editor_ComboBox *m_pclComboBox;
 	CTL_Editor_Static *m_pclStatic;
 
	CTL_td_p_fn_vBuildEnumDescriptor m_td_pri_fn_vBuildEnumDesciptor_CallBack;
 
	BOOL m_pri_bMustSortNamesInComboBox;
 
/*Member functions*/
public:
	/*Function called to create associated control*/
	BOOL m_fn_bCreateControl(CWnd *pclParentWnd);
 
	/*Function called to display the associated control of the char.*/
	void m_fn_vDisplay();
 
	/*Function called to update the associated control of the char.*/
	void m_fn_vUpdate(CTL_tdeUpdateReason _eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
										long _lUserDefinedReason = 0);
 
	/*Function called to update parent window in case of values changes.*/
	void m_fn_vUpdateParent(CTL_tdeUpdateReason eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
													long _lUserDefinedReason = 0);
 
	/*overload of the virtual member of CTL_Editor_Enumerable*/
	virtual void m_fn_vUpdateCurrentValue();
 
	/*Function called to make control Read Only*/
	void m_fn_vMakeReadOnly();
 
	/*Function called to make control Read-Write*/
	void m_fn_vMakeReadWrite();
 
	/**/
	void m_pub_fn_vMustSortNamesInComboBox(BOOL _bMustSort = TRUE);
	
	/**/
	void m_fn_vGetNewEnumDescriptor();
 
	/*Function called when a "DropDown" message is sent to the ComboBox*/
	/*Calls the calback m_td_pri_fn_vConstructEnumerableListCallBack if it exists*/
	void m_pub_fn_vBuildEnumDescriptor();
 
 	virtual void m_fn_vSetEditedData(CTL_Editor_Data *);
/*ROMTEAM Selection (Cristian Stegaru 24/03/98)*/
	int m_fn_iSetCanISelect_CallBack (CTL_tpf_iCheckString pfCheckString);
/*ENDROMTEAM Selection (Cristian Stegaru)*/
 
	/*Call backs*/
	/*/////////////*/
 
	void m_pub_fn_vSetBuildEnumDesciptor_CallBack(CTL_td_p_fn_vBuildEnumDescriptor _p_fn_vCallBack);
 
	static BOOL s_m_fn_bStaticCanBeDisplayed(class CTL_Editor_BaseControl *_pclSenderBaseControl);
	static BOOL s_m_fn_bComboBoxCanBeDisplayed(class CTL_Editor_BaseControl *_pclSenderBaseControl);
 
	/*When selection has been changed in a Combo box*/
	static void s_m_fn_vComboBoxSelChanged(class CTL_Editor_ComboBox *_pclSenderComboBox,
																				 class CTL_Editor_Control *_pclParentControl,
																				 enum CTL_eComboBoxType _tdeType,
																				 long _lUserDefinedType,
																				 long _lUserDefinedCode);
	
	/*When Combo box has been dropped down (ie open)*/
	static void s_m_fn_vComboBoxDroppedDown(class CTL_Editor_ComboBox *_pclSenderComboBox,
																				  class CTL_Editor_Control *_pclParentControl,
																				  enum CTL_eComboBoxType _tdeType,
																				  long _lUserDefinedType,
																				  long _lUserDefinedCode);
 
protected:
 
private:
 
};
 
#endif /*_CTL_ENUM_CONTROL_*/
