// EdIRBVw.hpp : header file
//

#ifndef _EDIRBVW_HPP_
#define _EDIRBVW_HPP_

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

#include <afxtempl.h>

#include "EdIRRes.h"

#include "EdIRBtVw.hpp"
#include "EdIRBLB.hpp"
#include "EdIRBeEn.hpp"
#include "EdIRBELs.hpp"

class CPA_EdIR_MainBehaviour;
class CPA_EdIR_Behaviour;
class CPA_Actor;

/////////////////////////////////////////////////////////////////////////////
// class CPA_EdIR_DiagView
/////////////////////////////////////////////////////////////////////////////

class CPA_EdIR_DiagView : public CFormView
{
	//Attributes
	private:
		CPoint											m_clOldMousePos;
		CPA_EdIR_MainBehaviour			*m_pclOldCopiedMainBehaviour;
		CPA_EdIR_MainBehaviourList	m_clOldCopiedMainBehaviourList;
		CPA_EdIR_Behaviour					*m_pclOldActiveBehaviour;
		CPA_EdIR_MainBehaviourList	*m_pclListOfBehaviours;
		POSITION										m_posCurrent;
		tdeBehaviourModeView				m_tdeBehaviourModeView;
		BOOL												m_bCtrlKeyIsPressed;
		CString											m_csFontName;
		long												m_lFontSize;
		long												m_lLineHeight;
		BOOL												m_bPrintCurrentBehaviour;
		BOOL												m_bPrintAllBehaviours;
		BOOL												m_bPrintAllIA;
		BOOL												m_bOneBehaviourOnAPage;
		BOOL												m_bPrintIsFinished;
		BOOL												m_bHasBeenModified;

	//Construction
	protected:
		CPA_EdIR_DiagView();           // protected constructor used by dynamic creation
		DECLARE_DYNCREATE(CPA_EdIR_DiagView)

	// Form Data
	public:
		//{{AFX_DATA(CPA_EdIR_DiagView)
			enum { IDD = IDD_IR_DIAGRAMME_VIEW };
		//}}AFX_DATA

	// Attributes
	public:
//ANNECY CB
		BOOL	m_bSpecialCB;
//END
//ROMTEAM Find & Replace Ionut Grozea 15.06
		CPA_EdIR_BehaviourListBox		m_clBehaviourListBox;
//ENDROMTEAM Find & Replace Ionut Grozea 15.06
	// Operations
	private:
		CPA_EdIR_MainBehaviour	*m_fn_pclGetMainBehaviour(CPA_EdIR_Behaviour *);
		long										m_fn_lGetIndex(CPA_EdIR_Behaviour *);
		CPA_Actor								*m_fn_pclGetActorModel();
		void										m_fn_vCopyBehaviour(CPA_EdIR_MainBehaviour *,CString csName="");

	public:
		//for Undo/Redo Rename a behaviour
		BOOL	m_fn_bRenameBehaviour(CPA_EdIR_MainBehaviour *,CString);
		void	m_fn_vAskForRenamingBehaviour(CPA_EdIR_Behaviour *,CString,CString);

		//for Undo/Redo Create and Delete a behaviour
		void	m_fn_vAddOneBehaviourInList(CPA_EdIR_MainBehaviour *);
		BOOL	m_fn_bDeleteBehaviourFromList(CPA_EdIR_MainBehaviour *);

		//for Undo/Redo Delete all behaviours
		BOOL	m_fn_bDeleteAllBehavioursFromList();
		void	m_fn_vAddAllBehavioursInList(CPA_EdIR_MainBehaviourList *);

		BOOL	m_fn_bHasBeenModified();
		void	m_fn_vSetModified(BOOL);

		void	m_fn_vCheckBehaviour(enum tdeTypeText_);

		//for printing
		void	m_fn_vPrint();
		void	m_fn_vPrint(CDC *,CPrintInfo *);
		void	m_fn_vEndPrintPreview();
		void	m_fn_vBeginPrinting(CDC *,CPrintInfo *);

		void	m_fn_vAModelHasBeenRemoved();
		void	m_fn_vUpdateListOfBehaviour(CPA_EdIR_MainBehaviourList *, BOOL Disp = TRUE);
		void	m_fn_vChangeViewModeOfBehaviours(enum tdeBehaviourModeView_);
		void	m_fn_vCreateNewBehaviour(enum tdeBehaviourModeView_);

		void								m_fn_vOldActiveBehaviourHasChanged(CPA_EdIR_Behaviour *,BOOL bDeselect=TRUE);
		CPA_EdIR_Behaviour	*m_fn_pclGetActiveBehaviour();
		void								m_fn_vDeleteBehaviour(CPA_EdIR_Behaviour *);
		void								m_fn_vUpdateDependencies();
		CPA_EdIR_Behaviour	*m_fn_pclAddOneBehaviour(CString,CRect,CString,BOOL,DWORD);
		void								m_fn_vDeleteAllBehaviours();
		BOOL								m_fn_bGetFirstBehaviour(CString &,CRect &,CString &);
		BOOL								m_fn_bGetNextBehaviour(CString &,CRect &,CString &);
		CPA_EdIR_Behaviour	*m_fn_pclGetBehaviour(CString);
		void								m_fn_vClipControls(CClientDC *);
		BOOL								m_fn_bNameAlreadyExists(CString);
		BOOL								m_fn_bIsInCurrentList(CPA_EdIR_MainBehaviour *);

	// Overrides
		// ClassWizard generated virtual function overrides
		//{{AFX_VIRTUAL(CPA_EdIR_DiagView)
		protected:
			virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
			virtual void OnInitialUpdate();
			virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
			virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
			virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
			virtual void OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point, CPreviewView* pView);
			virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
		//}}AFX_VIRTUAL

	// Implementation
	protected:
		virtual ~CPA_EdIR_DiagView();
#ifdef _DEBUG
		virtual void AssertValid() const;
		virtual void Dump(CDumpContext& dc) const;
#endif

	public:
		// Generated message map functions
		//{{AFX_MSG(CPA_EdIR_DiagView)
			afx_msg void OnDestroy();
			afx_msg void OnSize(UINT nType, int cx, int cy);
			afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
			afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
			afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
			afx_msg void OnMouseMove(UINT nFlags, CPoint point);
			afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
			afx_msg void OnPaint( );
			afx_msg void OnSelChangeBehaviourList();
			afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo);
	//}}AFX_MSG
	protected:
		afx_msg void m_fn_vOnAddBehaviour();
		afx_msg void m_fn_vOnDeleteAllBehaviours();

		DECLARE_MESSAGE_MAP()
};

#endif //_EDIRBVW_HPP_
