////////////////////////////////////////////////////////////////////////////
// CTextEdit クラスのインタフェース宣言
//
// テキストを編集する処理を実装する
////////////////////////////////////////////////////////////////////////////

#if !defined( TEXTEDIT_H_INCLUDED_ )
#define TEXTEDIT_H_INCLUDED_

#include "TaEdit_std.h"

#include "Cursor.h"
#include "ScrollInfoPacket.h"
#include "regex/SRegex.h"
#include "TextMatchLib.h"

class CTaEditDoc;
class CTaEditDraw;

class CTextEdit : public CCPInterface
{

public:
	CTextEdit( CTaEditDraw *argpDraw, VClsPtr< CCursor > argpCursorInfo, CTaEditDoc *argpDoc );
	~CTextEdit();

	// 選択範囲にテキストを設定
	void PasteText( const wstring& rStr, bool DoRedraw );

	void Undo();
	void Redo();
	void DelSelRange();
	void FullSelect();
	void Cut();
	void Copy();
	void Paste();
	bool IsEnableCopy() const;

	// 文字列の検索を行う
	void FindText( const wstring &rPattern );

	// パターンに一致する文字列を全て置換する。
	void ReplaceAll( const wstring &rPattern, const wstring& rAfterText );

	// 文字列の移動を行う
	void MoveText( T_SelRange SourceRange, int DestXPos, int DestYPos );

	// 指定行へ移動
	void OnMoveto();
	void OnMoveto( int Line );

protected:
	// 範囲選択を解除する
	void ClearSelect();

	CTaEditDraw *pDraw;
	VClsPtr< CCursor > pCursorInfo;
	CTaEditDoc *pDoc;
};

#endif // TEXTEDIT_H_INCLUDED_

