////////////////////////////////////////////////////////////////////////////
// CScrollMgr クラスのインタフェース宣言
//
////////////////////////////////////////////////////////////////////////////

#if !defined( SCROLLMGR_H_INCLUDED_ )
#define SCROLLMGR_H_INCLUDED_

#include <Xm/XmAll.h>
#include "TaEdit_std.h"

// スクロールバーの値の変化のイベントを受信するクラスのインタフェース
class CScrEventHandler
{
	friend class CScrollMgr;
protected:
	virtual void OnScrValueChange( const CScrollMgr *argpMgr, int value, bool NeedRedraw ) = 0;
};

class CScrollMgr
{
public:
	CScrollMgr();
	~CScrollMgr();

	void SetPadding( unsigned int argMin, unsigned int argMax );

	// スクロールバーのイベントハンドラを設定
	void SetEventHandler( CScrEventHandler *pArg );

	void SetMin( int argMin );
	void SetMax( int argMax );
	bool SetPageSize( int argPageSize, int *pRequireValue );
	void SetMinChickSize( int argMinChick );
	void SetValue( int argValue );

	void SetToMin();

	int GetValue() const;

	bool IsManaged() const;
protected:
	void OnCreate( Widget argWgt, XtPointer user_data );
	void OnDecrement( Widget argWgt, XtPointer user_data );
	void OnIncrement( Widget argWgt, XtPointer user_data );
	void OnPageDown( Widget argWgt, XtPointer user_data );
	void OnPageUp( Widget argWgt, XtPointer user_data );
	void OnDrag( Widget argWgt, XtPointer user_data );
	void ToBottom( Widget argWgt, XtPointer user_data );
	void ToTop( Widget argWgt, XtPointer user_data );
	void OnChangeValue( Widget argWgt, XtPointer user_data );

	void SetResource() const;

	Widget m_Scr;

	int m_Min;	// 最大
	int m_Max;	// 最小
	int m_PageSize;	// ページサイズ
	int m_MinChickSize;	// 最小刻み
	unsigned int MinPadding;	// 最小値のパディング
	unsigned int MaxPadding;	// 最大値のパディング

	CScrEventHandler *pEventHandler;
};

#endif // SCROLLMGR_H_INCLUDED_

