////////////////////////////////////////////////////////////////////////////
// CTaEditMovetoDlg クラスのインプリメンテーション
//
////////////////////////////////////////////////////////////////////////////

#include "TaEditMovetoDlg.h"
#include <wchar.h>

////////////////////////////////////////////////////////////////////////////
// 構築/破棄
////////////////////////////////////////////////////////////////////////////

CTaEditMovetoDlg::CTaEditMovetoDlg() : IsFirst( true )
{

}

CTaEditMovetoDlg::~CTaEditMovetoDlg()
{

}

////////////////////////////////////////////////////////////////////////////
// メソッド
////////////////////////////////////////////////////////////////////////////

// テキストフィールドの構築
void CTaEditMovetoDlg::OnCreateTextField( Widget argWgt, XtPointer user_data )
{
}

// 構築
void CTaEditMovetoDlg::OnCreate( Widget argWgt, XtPointer user_data )
{

}

// ダイアログを表示
int CTaEditMovetoDlg::ShowDlg( int CurLine )
{
	char buf[50];	// テキストフィールドに設定する文字列を保持する
	m_Line = CurLine;	// m_Lineを初期化

	// 初回の一回だけ
	if ( IsFirst ) {
		// 一回マネージしておかないと、テキストフィールドの選択が有効にならない
		XtManageChild( m_MovetoDlg );
		XtUnmanageChild( m_MovetoDlg );
		IsFirst = false;
	}

	// 文字列を合成して、テキストフィールドに設定
	snprintf( buf, 50, "%d", m_Line );
	XmTextFieldSetString( m_MovetoLineText, buf );

	// 設定した文字列を選択する
	// if ( !XtIsManaged( m_MovetoLineText ) ) XtManageChild( m_MovetoLineText );
	XmTextFieldSetSelection( m_MovetoLineText, 0, strlen( buf ), CurrentTime );


	// ダイアログを表示
	m_ModalDlg.DoModal( m_MovetoDlg );

	// ユーザからの入力結果を返す
	return m_Line;
}

// キャンセルボタンの押下
void CTaEditMovetoDlg::OnCancel( Widget argWgt, XtPointer user_data )
{
	// m_Lineの値を更新せずにダイアログを閉じる
	m_ModalDlg.ExitModal();
}

// 閉じられる
void CTaEditMovetoDlg::OnClose( Widget argWgt, XtPointer user_data )
{
	// キャンセルに同じ
	OnCancel( argWgt, user_data );
}

// ＯＫボタンの押下
void CTaEditMovetoDlg::OnOK( Widget argWgt, XtPointer user_data )
{
	long LineNum;
	wchar_t *pIptStr;

	// テキストフィールドから値を読みとり、m_Lineの値を更新する
	pIptStr = XmTextFieldGetStringWcs( m_MovetoLineText );

	LineNum = wcstol( pIptStr, NULL, 10 );
	XtFree( reinterpret_cast< char* >( pIptStr ) );
	m_Line = LineNum;

	// ダイアログを閉じる
	m_ModalDlg.ExitModal();
}
