#ifndef __ToolGroupSelect_h
#define __ToolGroupSelect_h

#include "ToolBaseEdit.h"		// Super super class.
//#include "ToolSelectObjTmpl.h"	// Super class.
#include "ToolMoveResizeTmpl.h"	// Super class.

#ifdef SUPER_CLASS
#undef SUPER_CLASS
#endif
//----- 05.06.10 Fukushiro M. _xZkqqHx_jFmPiNfIjBeP_xHqqkZx_ ()-----
//// 05.06.10 Fukushiro M. 1_xZkqqHx_iNhDjFmPiNfI_xHqqkZx_ ()
////#define SUPER_CLASS FCToolSelectObjTmpl<FCToolBaseEdit, FCToolSelectObjTmplId>
//#define SUPER_CLASS FCToolMoveResizeTmpl< FCToolSelectObjTmpl<FCToolBaseEdit, FCToolSelectObjTmplId>, FCToolSelectObjTmplId >
//----- 05.06.10 Fukushiro M. _xZkqqHx_jFmPiNfIiMoD_xHqqkZx_ ()-----
#define SUPER_CLASS FCToolMoveResizeTmpl<FCToolBaseEdit, FCToolSelectObjTmplId>
//----- 05.06.10 Fukushiro M. _xZkqqHx_jFmPiNfIiPeJ_xHqqkZx_ ()-----

class FCObjDynabase;

class FCToolGroupSelect : public SUPER_CLASS
{
protected:
typedef SUPER_CLASS BASE_CLASS;
typedef BASE_CLASS::BASE_CLASS BASE_BASE_CLASS;

public:
	FCToolGroupSelect ();

public:
	//----- FCToolBase_xZkqqHx_iCmMiDfEiDhFiDeOiDiJiDfIiCmFjEeDiInD_xHqqkZx_ -----
	virtual void	DrawSelectMark (CDC* pDC, FCObjDynabase* pObj);
	virtual BOOL	CanHandle (const FCObjDynabase* pObj) const;

	virtual void	OnAppendSelectObj (CDC* pDC, FCObjDynabase* pObj);
	virtual void	OnRemoveSelectObj (CDC* pDC, FCObjDynabase* pObj);
// 05.07.09 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//	virtual void	OnClearSelectObj (CDC* pDC);

	virtual BOOL	CanCopy () const;
	virtual void	OnCopy ();

protected:
	//----- FCToolBase_xZkqqHx_iCmMiDfEiDhFiDeOiDiJiDfIiCmFjEeDiInD_xHqqkZx_ -----
	virtual const ObjDynabaseVector& GetSelectLocalObjVector () const;

	//----- FCToolBaseFDA_xZkqqHx_iCmMiDfEiDhFiDeOiDiJiDfIiCmFjFeLjHhGiCmJiJjOiClGiCmE_xHqqkZx_ -----
	virtual int		TransFDA (int iState, int iEvent);

	//----- FCToolSelectTmpl_xZkqqHx_iCmMiDfEiDhFiDeOiDiJiDfIiCmFjFeLjAhL_xHqqkZx_ -----
	virtual long		GetSelectedXXX (XXX_ObjDynabase, vector<FCObjDynabase*>* vXxx = NULL, set<FCObjDynabase*>* stXxx = NULL) const;
	virtual long		GetSelectableXXX (XXX_ObjDynabase, vector<FCObjDynabase*>* vXxx = NULL) const;
	virtual void		SelectXXX (XXX_ObjDynabase, FCObjDynabase* pObj, CDC* pDC);
	virtual void		UnselectXXX (XXX_ObjDynabase, FCObjDynabase* pObj, CDC* pDC);
	virtual FCObjDynabase*	GetLastSelectedXXX (XXX_ObjDynabase);
	virtual void		SetLastSelectedXXX (XXX_ObjDynabase, FCObjDynabase* xxx);

	//----- FCToolSelectTmpl_xZkqqHx_iCmMiDfEiDhFiDeOiDiJiDfIiCmFjEeDiInD_xHqqkZx_ -----
	virtual BOOL		IsIntersectXXX (XXX_EditObjDynabase, FCObjDynabase* xxx, const DBLPoint& mmpt) const;

	//----- FCToolGroupSelect_xZkqqHx_iMmFjHeM_xHqqkZx_ -----
	virtual void	DrawSelectLocalMark (CDC* pDC, FCObjDynabase* pObj);
protected:

protected:
	ObjDynabaseVector	m_vLocalObj;		// _xZkqqHx_iDiNiBfLiDeKiDiLiCmFjBeJjBpAiClDiCoKiCmEiCkCiCoJjFjEjFgJiBeC_xHqqkZx_
}; // class FCToolGroupSelect.

// 01.08.08 Fukushiro M. 1_xZkqqHx_iNhDiNoNiPjM_xHqqkZx_ ()
//extern FCToolGroupSelect g_toolGroupSelect;

#endif//__ToolGroupSelect_h
