// Header for the definition of an enum characteristic
///////////////////////////////////////////////////////////
#ifndef _CPACSCTL_HPP_
#define _CPACSCTL_HPP_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

//External Modules
#include "CTL.h"
//End of External Modules

class CPA_Editor_StateControl :	public CTL_Editor_Control
{
//Constructor / Destructor
public:
	CPA_Editor_StateControl(BOOL _bReadOnly,
										 		  CTL_Editor_ControlList *_pclParentList,
													CString _csControlName,
													BOOL _bAcceptsToTakeNameOfData, //ANNECY BBB
//Stefan Dumitrean 20-07-98 ( OAC buttons )
													unsigned char ucInitialCurrentPair
//End Stefan Dumitrean 20-07-98 ( OAC buttons )
													);

	~CPA_Editor_StateControl();

//Attributes
public:
	CTL_Editor_EnumDescriptor *m_pclEnumDescriptorForActions;
	CTL_Editor_EnumDescriptor *m_pclEnumDescriptorForStates;

protected:

private:
	CTL_Editor_ComboBox *m_pclComboBoxForActions;
 	CTL_Editor_Static *m_pclStaticForActions;
 	CTL_Editor_Static *m_pclStaticForStatesName;
 	CTL_Editor_Static *m_pclStaticForStates;
 	CTL_Editor_CheckBox *m_pclCheckBoxForRandom;

//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 parent window in case of values changes.
	void m_fn_vUpdateParent(CTL_tdeUpdateReason eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
													long _lUserDefinedReason = 0);

	//Function called to update controls in case of values changes.
	void m_fn_vUpdate(CTL_tdeUpdateReason _eReason = CTL_UPDATE_REASON__NO_REASON_GIVEN,
										long _lUserDefinedReason = 0);

	//overload of the virtual member of CPA_Editor_Enumerable
	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();

	static BOOL s_m_fn_bStaticCanBeDisplayed(class CTL_Editor_BaseControl *_pclSenderBaseControl);
	static BOOL s_m_fn_bComboBoxCanBeDisplayed(class CTL_Editor_BaseControl *_pclSenderBaseControl);
	static BOOL s_m_fn_bButtonCanBeDisplayed(class CTL_Editor_BaseControl *_pclSenderBaseControl);

	//When the Check Box is Clicked
	static void s_m_fn_vCheckBoxHasBeenClicked(class CTL_Editor_CheckBox *_pclSenderCheckBox,
																						 class CTL_Editor_Control *_pclParentControl,
																						 enum CTL_eCarCheckBoxType _tdeType,
																						 long _lUserDefinedType,
																						 long _lUserDefinedCode);
	
	//When selection has been changed in Actions 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 selection has been changed in Actions Combo box
	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 //_CPACSCTL_HPP_
