using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Controls.Primitives;
using System.Text.RegularExpressions;
using Microsoft.Win32;
using MSAPI = Microsoft.WindowsAPICodePack;

namespace CSRender
{
    public partial class MainWindow : Window
    {
        //フォルダ指定のためにファイルをドラッグ
        private void textBox_PreviewDragOver(object sender, System.Windows.DragEventArgs e)
        {
            if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop, true))
            {
                e.Effects = System.Windows.DragDropEffects.Copy;
            }
            else
            {
                e.Effects = System.Windows.DragDropEffects.None;
            }
            e.Handled = true;
        }

        //エクスプローラーからテキストボックスにドロップして指定フォルダの場所をペースト
        private void TargetBox_Drop(object sender, System.Windows.DragEventArgs e)
        {
            var dropFiles = e.Data.GetData(System.Windows.DataFormats.FileDrop) as string[];
            if (dropFiles == null) return;
            //カーソルを終端に置く
            targetBox.Text = dropFiles[0];
            targetBox.Focus();
            targetBox.Select(this.targetBox.Text.Length, 0);
        }
        private void RefBox_Drop(object sender, System.Windows.DragEventArgs e)
        {
            var dropFiles = e.Data.GetData(System.Windows.DataFormats.FileDrop) as string[];
            if (dropFiles == null) return;
            //カーソルを終端に置く
            referenceBox.Text = dropFiles[0];
            referenceBox.Focus();
            referenceBox.Select(this.referenceBox.Text.Length, 0);
        }
        private void WorkBox_Drop(object sender, System.Windows.DragEventArgs e)
        {
            var dropFiles = e.Data.GetData(System.Windows.DataFormats.FileDrop) as string[];
            if (dropFiles == null) return;
            //カーソルを終端に置く
            workBox.Text = dropFiles[0];
            workBox.Focus();
            workBox.Select(this.workBox.Text.Length, 0);
            if (reportBox.Text == "")//検版レポートが未入力ならば作業フォルダ先に指定
            {
                reportBox.Text = System.IO.Path.Combine(workBox.Text, "report");
                reportBox.Text += @"\";
            }
        }

        private void ReportBox_Drop(object sender, System.Windows.DragEventArgs e)
        {
            var dropFiles = e.Data.GetData(System.Windows.DataFormats.FileDrop) as string[];
            if (dropFiles == null) return;
            //カーソルを終端に置く
            reportBox.Text = dropFiles[0] + @"\";
            reportBox.Focus();
            reportBox.Select(this.reportBox.Text.Length, 0);
        }

        //参照ボタンClickでフォルダ選択のダイアログを表示（対象フォルダ）
        private void TagetButton_Click(object sender, RoutedEventArgs e)
        {
            //ファイル選択の場合
            //var selectFile = new OpenFileDialog();
            //selectFile.Title = "ファイルを選択してください";
            //selectFile.InitialDirectory = @"C:";
            //if ((bool)selectFile.ShowDialog())
            //{
            //FileName = selectFile.FileName;
            //FileSelected(this, new EventArgs());
            //}

            //フォルダ選択の場合
            var selectFile = new MSAPI::Dialogs.CommonOpenFileDialog();
            selectFile.IsFolderPicker = true;
            selectFile.Title = "フォルダを選択してください";
            selectFile.InitialDirectory = @"C:";
            if (selectFile.ShowDialog() != MSAPI::Dialogs.CommonFileDialogResult.Ok)
            {
                return;
            }
            //共通部分
            targetBox.Text = selectFile.FileName;
        }

        //参照ボタンClickでフォルダ選択のダイアログを表示（リファレンスフォルダ）
        private void ReferenceButton_Click(object sender, RoutedEventArgs e)
        {
            //ファイル選択の場合
            //var selectFile = new OpenFileDialog();
            //selectFile.Title = "ファイルを選択してください";
            //selectFile.InitialDirectory = @"C:";
            //if ((bool)selectFile.ShowDialog())
            //{
            //FileName = selectFile.FileName;
            //FileSelected(this, new EventArgs());
            //}

            //フォルダ選択の場合
            var selectFile = new MSAPI::Dialogs.CommonOpenFileDialog();
            selectFile.IsFolderPicker = true;
            selectFile.Title = "フォルダを選択してください";
            selectFile.InitialDirectory = @"C:";
            if (selectFile.ShowDialog() != MSAPI::Dialogs.CommonFileDialogResult.Ok)
            {
                return;
            }
            //共通部分
            referenceBox.Text = selectFile.FileName;
        }

        //参照ボタンClickでフォルダ選択のダイアログを表示（作業フォルダ）
        private void WorkButton_Click(object sender, RoutedEventArgs e)
        {
            //ファイル選択の場合
            //var selectFile = new OpenFileDialog();
            //selectFile.Title = "ファイルを選択してください";
            //selectFile.InitialDirectory = @"C:";
            //if ((bool)selectFile.ShowDialog())
            //{
            //FileName = selectFile.FileName;
            //FileSelected(this, new EventArgs());
            //}

            //フォルダ選択の場合
            var selectFile = new MSAPI::Dialogs.CommonOpenFileDialog();
            selectFile.IsFolderPicker = true;
            selectFile.Title = "フォルダを選択してください";
            selectFile.InitialDirectory = @"C:";
            if (selectFile.ShowDialog() != MSAPI::Dialogs.CommonFileDialogResult.Ok)
            {
                return;
            }
            //共通部分
            workBox.Text = selectFile.FileName;
            //reportBox.Text = System.IO.Path.Combine(selectFile.FileName, "report") + @"\";
        }

        //参照ボタンClickでフォルダ選択のダイアログを表示（検版レポートパス）
        private void ReportButton_Click(object sender, RoutedEventArgs e)
        {
            //ファイル選択の場合
            //var selectFile = new OpenFileDialog();
            //selectFile.Title = "ファイルを選択してください";
            //selectFile.InitialDirectory = @"C:";
            //if ((bool)selectFile.ShowDialog())
            //{
            //FileName = selectFile.FileName;
            //FileSelected(this, new EventArgs());
            //}

            //フォルダ選択の場合
            var selectFile = new MSAPI::Dialogs.CommonOpenFileDialog();
            selectFile.IsFolderPicker = true;
            selectFile.Title = "フォルダを選択してください";
            selectFile.InitialDirectory = @"C:";
            if (selectFile.ShowDialog() != MSAPI::Dialogs.CommonFileDialogResult.Ok)
            {
                return;
            }
            //共通部分
            reportBox.Text = selectFile.FileName + @"\";
        }
    }
}
