#ifndef __ToolManager_h
#define __ToolManager_h

// 05.01.27 Fukushiro M. 1_xZkqqHx_iNhDjFmPiNfI_xHqqkZx_ ()
//#define FD_MAX_EDIT_TOOL 6
#define FD_MAX_EDIT_TOOL 7

class FCToolBase;
class FCUndoArchive;

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	FCToolManager
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_iDgDiBfLiDiLiCmMiBeBiIoKjHjHiCpAiNoMjAkMiBeFiKmHjHjNiClHiCoJiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	02.12.09 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/
class FCToolManager
{
public:
	FCToolManager ();
	~FCToolManager ();
	void			Initialize ();
	void			Terminate ();
// 05.07.31 Fukushiro M. 1_xZkqqHx_iNhDjCmHiJmB_xHqqkZx_ ()
	void			InitContents (CFCFoundDoc* pDoc);
	void			DeleteContents (CFCFoundDoc* pDoc);
	void			OutStream (FCUndoArchive& ar, BOOL bIsOutObjectInfo) const;
	void			InStream (FCUndoArchive& ar, CFCFoundDoc* pDoc);
	static void		SkipStream (FCUndoArchive& ar);

	FCToolBase*		GetTool (long lIndex) const;
	long			CommandID2ToolIndex (DWORD dwID) const;
	FCToolBase*		CommandID2Tool (DWORD dwID) const;
	long			Tool2ToolIndex (const FCToolBase* pTool) const;
	DWORD			Tool2CommandID (const FCToolBase* toolp) const;

	FCToolBase*		GetEditTool (long lIndex) const;
	FCToolBase*		ObjTypeToEditTool (FTObjectType type) const;
	FTObjectType	EditToolToObjType (const FCToolBase* pTool) const;

	DWORD			m_dwCommandID[FD_MAX_TOOL_ID];
	FCToolBase*		m_pTool[FD_MAX_TOOL_ID];

	FTObjectType	m_typeObject[FD_MAX_EDIT_TOOL];
	FCToolBase*		m_pEditTool[FD_MAX_EDIT_TOOL];
}; // class FCToolManager.

#endif//__ToolManager_h
