/*-----------------------------------------------------------------------------
[名称]	CategoryTree.h
[概要]	カテゴリツリーのヘッダ
[備考]	カテゴリツリーのルート。
[履歴]	2003-03-14	NC		新規作成(moralog)
-----------------------------------------------------------------------------*/
#if !defined(AFX_CATEGORYTREE_H_INCLUDED_)
#define AFX_CATEGORYTREE_H_INCLUDED_

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


//-----------------------------------------------------------------------------
// インクルード・不完全定義
//-----------------------------------------------------------------------------
#include "CategoryNode.h"
#include "AAHanger.h"


/*-----------------------------------------------------------------------------
[名称]	カテゴリツリー
[用途]	カテゴリツリーのルート。
[備考]	ぎこぺデータ１ファイルまたはカテゴリツリー１ファイル分の情報。
-----------------------------------------------------------------------------*/
class CCategoryTree  
{
public:
	// 生成
	CCategoryTree();

	// 破棄
	virtual ~CCategoryTree();

	// ノードへのアクセス
	CCategoryNode*	Node(){ return( &m_CategoryNode ); };

	// ツリー名称の設定
	void	SetTreeName( CString strName ){ m_CategoryNode.SetNodeName( strName ); };

	// ツリー名称の取得
	CString	GetTreeName(){ return( m_CategoryNode.GetNodeName() ); };

	// 自動カテゴライズ
	void Categorize(
		CAAHanger&		AAHanger,		// <I>	AA情報 [-] (-) :-
		CCategoryNode*	pBranchNode		// <I>	対象ノード [-] (-) :-
	);

	// カテゴリわけせずインデクス追加
	void AddIndexz(
		CAAHanger&	AAHanger
	);

	// 全情報削除
	void RemoveAll(){ m_CategoryNode.RemoveAllNode(); m_CategoryNode.RemoveAllIndex(); };


	void AddAA(
		CCategoryNode*	pBranchNode,
		long			idxAA
	);
	void AddAA(
		const CString&	strNodeName,
		long			idxAA
	);

protected:
	CCategoryNode	m_CategoryNode;				// ノード [-] (-)
};

#endif // !defined(AFX_CATEGORYTREE_H_INCLUDED_)
