#pragma once

using namespace System;

namespace Mix{ namespace Tool{

	public ref class DirectoryBrowseDialog
	{
	public:
		enum class RootType
		{
			Specify,
			Desktop,
			Programs,
			ControlPanel,
			Printers,
			MyDocument,
			Favorite,
			Startup,
			Recent,
			SendTo,
			Trash,
			StartMenu,
			MyComputer,
			Network,
		};

	private:
		System::String^ m_Title;
		System::String^ m_RootDirectoryName;
		System::String^ m_DirectoryName;
		System::String^ m_ShortDirectoryName;
		RootType m_RootType;
		bool m_bEditBox;

	public:
		/// <summary>
		/// タイトルの取得、または設定
		/// </summary>
		property System::String^ Title
		{
			System::String^ get( void );
			void set( System::String^ value );
		}

		/// <summary>
		/// ルートの取得、または設定
		/// </summary>
		property RootType Root
		{
			RootType get( void );
			void set( RootType value );
		}

		/// <summary>
		/// ルートディレクトリ名の取得、または設定
		/// ※Root に Specify が設定されている場合にのみ有効です
		/// </summary>
		property System::String^ RootDirectoryName
		{
			System::String^ get( void );
			void set( System::String^ value );
		}

		/// <summary>
		/// ディレクトリ名の取得、または設定
		/// </summary>
		property System::String^ DirectoryName
		{
			System::String^ get( void );
			void set( System::String^ value );
		}

		/// <summary>
		/// ショートディレクトリ名( ルートディレクトリ以下 )の取得、または設定
		/// </summary>
		property System::String^ ShortDirectoryName
		{
			System::String^ get( void );
			void set( System::String^ value );
		}

		/// <summary>
		/// エディットボックスの有無の取得、または設定
		/// </summary>
		property bool EditBox
		{
			bool get( void );
			void set( bool value );
		}

	public:
		/// <summary>
		/// コンストラクタ
		/// </summary>
		DirectoryBrowseDialog( void );
		/// <summary>
		/// デストラクタ
		/// </summary>
		~DirectoryBrowseDialog( void );

	public:
		/// <summary>
		/// ダイアログを表示
		/// <return>結果</return>
		/// </summary>
		System::Windows::Forms::DialogResult ShowDialog( void );
	};
}}
