/*=========================================================================
* 
* TBKobj.hpp :  Bank Object - Definition
* 
*
* Version			1.0
* Creation date		10/06/99
* Revision date
*
* Shaitan
*=======================================================================*/

#ifndef __TBK_OBJ_HPP__
#define __TBK_OBJ_HPP__

#include "ACP_Base.h"
#include "ITF.h"

#include "TBKinter.hpp"


//#################################################################################
// Defines
//#################################################################################

// type of the bank
typedef enum
{
	TBK_E_bt_Common,
	TBK_E_bt_Bank,
	TBK_E_bt_Undefined
}
TBK_tdeBankType;

/*===========================================================================
*		Description:	class TBK_BankObject
*		Creation date:	10/06/99
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:                                      Author:         
*=========================================================================*/

class TBK_BankObject :	public CPA_SaveObject					
{

/*===========================================================================
	Class members
=========================================================================*/
private:
	
	// type
	TBK_tdeBankType				m_eBankType;
	// index
	long						m_lBankIndex;
	// content
	CPA_List<CPA_SuperObject>	m_oListOfSector;


/*===========================================================================
	Functions
=========================================================================*/
public:

	TBK_BankObject  (TBK_BanksInterface *pInterface, TBK_tdeBankType eType, CString csName = "", BOOL bExistingBank = FALSE);
	~TBK_BankObject (void);

// interface
	TBK_BanksInterface * m_fn_pGetBanksInterface	(void) { return (TBK_BanksInterface *)GetEditor(); }

// parameters
	TBK_tdeBankType		 m_fn_eGetBankType			(void) { return m_eBankType;  }
	long				 m_fn_lGetBankIndex			(void) { return m_lBankIndex; }

// sectors
	BOOL m_fn_bIsSectorInBank		(CPA_SuperObject *pSector);
	BOOL m_fn_bAddSectorToBank		(CPA_SuperObject *pSector);
	BOOL m_fn_bRemoveSectorFromBank (CPA_SuperObject *pSector);
	BOOL m_fn_bTransferAllSectors	(TBK_BankObject *pNewBank);

	CPA_SuperObject * m_fn_pGetNextSector (CPA_SuperObject *pSector);

// colors
	void m_fn_vReinitSectorList		(void);
	void m_fn_vReinitSectorColors	(BOOL bColor);

// saving function
	static void TBK_fn_eCallBackSaveBank (SCR_tdst_File_Description *p_stFile, char *szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction);


//#################################################################################
// BASE OBJECT FUNCTIONS OVERLOAD
//#################################################################################
public:

//    tdeMissingCriteria fn_eRename (const CString csNewName);
 

    long   GetDataType	(void) { return -1; }
    void * GetData		(void) { return NULL; }
 

//    tdeMissingCriteria fn_eCheckUnicity (const CString csNewName);
 

//	CString GetNameToDraw	(void);
//	CString	GetTypeToDraw	(void);
//	CString GetOwnerToDraw	(void);

//#################################################################################
// SAVE OBJECT FUNCTIONS OVERLOAD
//#################################################################################
public:
	
//	BOOL fn_bCanBeNotified (void);
 
//    BOOL fn_bCheckNotification  (const CString csNewName);
 
//	tdeMissingCriteria fn_eCheckValidity (const CString csNewName);
 
//	void fn_vNotifySave		(void);
//	void fn_vNotifyUnSave	(void);
//	void fn_vNotifyRestore	(void);
//	void fn_vNotifyRename	(void);
 
//	void fn_vUpdateReference (CPA_SaveObject *pReferencedObject);
 
//	void fn_vUpdateSectionName (void);
 
//	CString fn_csComputeReferencedSectionName (const CString csNewName);

};



#endif //__TBK_OBJ_HPP__
