/*-----------------------------------------------------------------------------
[名称]	CommandMultiEdit.h
[概要]	複数行入力コマンドクラスのヘッダ
[備考]	なし
[履歴]	2003-04-23	NC		コメント付加(moralog)
-----------------------------------------------------------------------------*/
#if !defined(AFX_COMMANDMultiEdit_H_INCLUDED_)
#define AFX_COMMANDMultiEdit_H_INCLUDED_

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


//-----------------------------------------------------------------------------
// インクルード・不完全定義
//-----------------------------------------------------------------------------
#include "ICommand.h"
#include <afxtempl.h>


/*-----------------------------------------------------------------------------
[名称]	複数行入力コマンドクラス
[用途]	複数行入力に関する操作の実行、取り消し機能を提供する。
[備考]	使用方法：ICommandの使用方法を参照。
		GetLinez()で得たアレイに対してユーザが好きに操作を行うのだが
		要素を追加するときは、Add()したあとでAdd済みの要素に設定を行うべき？
		（大きな要素がぶら下がっているわけでないので関係ないか？）
-----------------------------------------------------------------------------*/
class CCommandMultiEdit : public ICommand  
{
public:
	// 生成
	CCommandMultiEdit();

	// 破棄
	virtual ~CCommandMultiEdit();

	// コマンドの破棄
	BOOL	RemoveAll();

	// コマンドの追加
	void	Add(
		ICommand&	cmdNew		// 追加するコマンド [-] (-)
	);

protected:
	CArray<ICommand*, ICommand*>	m_aLinez;	// コマンド群 [-] (-)

// オーバライド
public:
	// メモリを確保して複製
	virtual ICommand*	Duplicate();

	// 属性をコピー
	virtual void		Copy( ICommand& cmdSrc );

	// 実行
	virtual BOOL		Execute( CShitarabianDoc* pDoc );

	// 取り消し
	virtual BOOL		UnExecute( CShitarabianDoc* pDoc );
};

#endif // !defined(AFX_COMMANDMultiEdit_H_INCLUDED_)
