/********************************************************************/
/* Copyright (c) 2019 System fugen G.K. and Yuzi Mizuno    　　     */
/* All rights reserved.                                             */
/********************************************************************/

/**
 * @file PropertyTool.cpp
 * @brief PropertyTool.h の実装
 */
#include "stdafx.h"
#include "GLPropPanel.h"
#include "fugenView.h"
#include "ToolCmd/PropertyTool.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/// コンストラクター
/// @param[in] pDoc コマンド対象ドキュメント
/// @param[in] nCmdID コマンド ID
/// @param[in] nIDD 最初に開いているプロパティーページのリソース ID
MGPropertyTool::MGPropertyTool(fugenDoc* pDoc, UINT nCmdID, UINT nIDD)
: MGCommandBase(pDoc, nCmdID), m_nIDD(nIDD){
}

MGCommandBase* MGPropertyTool::initial_clone(fugenDoc* pDoc) const{
	return CreatePropertyTool(pDoc, m_nIDD);
}

bool MGPropertyTool::initiate_tool(){
	MGCommandBase::initiate_tool();
	SetStatusMessage(_T(""));

	fugenDoc* pDoc = document();
	CGLPropDialog panel(pDoc, 0, m_nIDD);
	UINT id = IDOK == panel.DoModal() ? 1:3;
	return OnCommandEnd(id);
}

// フリー関数

MGCommandBase* CreatePropertyTool(fugenDoc* pDoc, UINT nCmdID){
	// 最初に開いているプロパティーページのリソース ID
	UINT nIDD = 0;

	switch(nCmdID){
	case ID_PARAM_TOLERANCE:
	case ID_CONTEXT_TOLERANCE:// システムトレランス
		nIDD = IDD_PROP_UNIT;
		break;
	case ID_PARAM_TESSELLATION:
	case ID_CONTEXT_TESSPARAM:
		nIDD = IDD_PROP_MESH;
		break;
	case ID_CONTEXT_COLOR:
		nIDD = IDD_PROP_COLOR;
		break;
	case ID_CPLANE_GRID:
		nIDD = IDD_PROP_CPLANE;
		break;
	}

	return new MGPropertyTool(pDoc, nCmdID, nIDD);
}
