/*=========================================================================
*
* CPAHieEd.hpp		CPA_HierarchyEditor - Definition
*
*
* Version			1.0
* Creation date
* Revision date
*
* Shaitan
*=======================================================================*/
#ifdef ACTIVE_EDITOR
 
#ifndef __CPA_HIE_EDITORBASE_HPP__
#define __CPA_HIE_EDITORBASE_HPP__
 
 
#include "CPADllB.hpp"
 
/****************************************/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/****************************************/
 
/* paste mode*/
typedef enum tdePasteMode_
{	
	E_pm_PasteDefault, 
	E_pm_PasteChoice, 
	E_pm_PasteSame 
} 
tdePasteMode;
 
class CPA_SuperObject;
class CPA_FileObject;
 
/*===========================================================================
*		Description:	Class CPA_HierarchyEditor
*		Creation date:
*		Author:			Shaitan
*
*---------------------------------------------------------------------------
*		Revision date:                        Author:
*=========================================================================*/
class CPA_EXPORT CPA_HierarchyEditor : public CPA_DLLBase
{
public:
	
	CPA_HierarchyEditor		(void) { };
	~CPA_HierarchyEditor	(void) { };
 
	virtual void Create (void);
 
/* for CPA_SpecificInterface (fn_vDisplayWorld)*/
	virtual BOOL fn_bIsDisplayAllModeEnabled (void) { return FALSE; }
 
/* for CPA_Interface*/
	virtual void fn_vUpdateEditor	(tdeModeChange eMode)	{ }
	virtual void fn_vCancelAllModes (void)					{ }
 
	virtual BOOL fn_bIsMultiSelectModeEnabled (void) { return FALSE; }
 
	virtual BOOL fn_bInsertObjectInHierarchy	(CPA_SuperObject *pEdObj, CPA_SuperObject *pParent, BOOL bUseEditManager = TRUE, BOOL bUpdateModif = TRUE, BOOL bSelect = TRUE, BOOL pBlock = FALSE)			{ return FALSE; }
	virtual BOOL fn_bInsertAsPreviousBrother	(CPA_SuperObject *pEdObj, CPA_SuperObject *pBrother, BOOL bUseEditManager = TRUE, BOOL bUpdateModif = TRUE, BOOL bSelect = TRUE, BOOL pBlock = FALSE)			{ return FALSE; }
	virtual BOOL fn_bDeleteObjectInHierarchy	(CPA_SuperObject *pEdObj, BOOL bUseEditManager = TRUE, BOOL bUpdateModif = TRUE, BOOL bDestroySuperObject = FALSE, BOOL bSelect = TRUE, BOOL pBlock = FALSE)	{ return FALSE; }
 
/*ANNECY Shaitan EmptySectors 25/02/98*/
	virtual BOOL fn_bCanBeParent		(CPA_SuperObject *pParent, tdstPosition *p_stPosition, tdeTypeSO eTypeSO, tdeSaveStatus eStatus);
/*ENDANNECY Shaitan EmptySectors*/
	virtual BOOL fn_bCanBeParentForAll	(CPA_SuperObject *pEdObj)	{ return FALSE; }
	virtual BOOL fn_bCanPasteAllObjects	(tdePasteMode eMode, CPA_SuperObject *pNewParent = NULL, MTH3D_tdstVector *pNewPosition = NULL)		{ return FALSE; }
 
	virtual CPA_SuperObject	* GetEditorObject	(HIE_tdxHandleToSuperObject hSupObj);
 
	virtual void fn_vUpdateLink		(CString csCurrentMode)	{ }
	virtual void fn_vUpdateModel	(void)					{ }
 
	virtual void fn_vBeforeEngine (void);
	virtual void fn_vBeforeEditor (void);
 
	virtual CPA_SuperObject * GetNewSuperObject	(HIE_tdxHandleToSuperObject hEngineSO, 
												 tdeSaveStatus eStatus, tdeTypeSO eTypeSO = C_NoType, 
												 CString csName = "", CString csEngineFileName = "");
 
	virtual CPA_SuperObject * GetNewSuperObject	(tdeSaveStatus eStatus, tdeTypeSO eTypeSO = C_NoType, 
												 CString csName = "", CString csEngineFileName = "");
 
	virtual CPA_SuperObject * GetCopyOfSuperObject	(CPA_SuperObject *pModel);
 
	virtual void fn_vOnActivateEditor	(CPA_List<CPA_BaseObject> *pParams, BOOL bBackActivated=FALSE);
	virtual void fn_vOnCloseEditor		(void);
 
	virtual CString GetLoadingMessage (void) { return "Editor Ready"; }
	virtual int		GetLoadingStatus  (void) { return 3; }
 
	CPA_FileObject * GetFileObject (CString csFileName);
/* Begin Silviu Simen september 1998 List of Objects in Sectors*/
	virtual void fn_vBuildListOfSectors		(void) {};
/* End Silviu Simen september 1998 List of Objects in Sectors*/
};
 
 
#endif /* __CPA_HIE_EDITORBASE_HPP__*/
#endif /* ACTIVE_EDITOR*/
