using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Ramitta;
using System.Data.Common;
using System.Diagnostics;
using System.IO;
using System.Text;
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.Threading;
using System.Xml.Linq;
using static Ramitta.lib.Basic;
using static Ramitta.winDataGrid;

namespace template
{
    public partial class MainWindow : Window
    {
        static string? filePath;
        private JToken? _currentJsonData = null;
        private string? _currentFilePath = null;

        #region 初始化MainWindow
        public MainWindow(StartupEventArgs e)
        {
            Startupe = ParseCommandLineArgs(e.Args);
            InitializeComponent();
            if (Startupe.TryGetValue("getfile", out string filePath))
            {
                MainWindow.filePath = filePath;
                DebugBar(Debugtag, $"操作目标:{filePath}", 正常绿色);
            }
            else
            {
                DebugBar(Debugtag, $"未指定操作目标", 警告橙色);
            }

            xDataGrid.InitColumns(
                ("标题", ColumnType.Label),
                ("判断", ColumnType.CheckBox),
                ("康波", ColumnType.ComboBox)
            );

            (xDataGrid.AddRow()["标题"] as Label).Content = "1";
            (xDataGrid.AddRow()["标题"] as Label).Content = "2";
            (xDataGrid.AddRow()["标题"] as Label).Content = "3";




            // 修改按钮文本
            // 查找Content为"删除"的第一行

            var targetRow = xDataGrid.Rows
                .FirstOrDefault(row => (row["标题"] as Label)?.Content.ToString() == "2");

            (targetRow["判断"] as CheckBox).IsChecked= true;

        }
        #endregion



        private void 增(object sender, RoutedEventArgs e)
        {
            // 添加顶层节点
            TreeList.AddCheckboxNode("A");
            TreeList.AddCheckboxNode("B");

            // 添加标签节点 "GroupC"，并嵌套子节点 "D" 和 "E"
            var groupC = TreeList.AddLabelNode("GroupC");
            TreeList.AddCheckboxNode("D", parent: groupC);  // GroupC 下的 "D"
            TreeList.AddCheckboxNode("E", parent: groupC);  // GroupC 下的 "E"

            // 添加标签节点 "GroupF"，并嵌套子节点 "G" 和 "H"
            var groupF = TreeList.AddLabelNode("GroupF");
            TreeList.AddCheckboxNode("G", parent: groupF);  // GroupF 下的 "G"
            var groupH = TreeList.AddCheckboxNode("H", parent: groupF);  // GroupF 下的 "H"

            // 在 "H" 下添加节点 "I" 和 "J"
            TreeList.AddCheckboxNode("I", parent: groupH);  // "H" 下的 "I"
            TreeList.AddCheckboxNode("J", parent: groupH);  // "H" 下的 "J"

            // 添加多个类型为 "K" 的节点（分别加入不同层级）
            TreeList.AddCheckboxNode("K", "1");  // 顶层 "K" 节点
            TreeList.AddLabelNode("K", parent: groupH);  // "H" 下的 "K" 节点
            TreeList.AddCheckboxNode("K", "3", parent: groupF);  // "GroupF" 下的 "K" 节点
            TreeList.AddCheckboxNode("K", "4", parent: groupC);  // "GroupC" 下的 "K" 节点

            // 添加更多重复节点
            TreeList.AddCheckboxNode("A");  // 顶层重复 "A" 节点
            TreeList.AddCheckboxNode("B");  // 顶层重复 "B" 节点

            // 再次在 GroupC 下添加重复节点 "D" 和 "E"
            TreeList.AddCheckboxNode("D", parent: groupC);  // GroupC 下重复 "D"
            TreeList.AddCheckboxNode("E", parent: groupC);  // GroupC 下重复 "E"

            // 再次在 GroupF 下添加重复节点 "G"
            TreeList.AddCheckboxNode("G", parent: groupF);  // GroupF 下重复 "G"

            // 在 "H" 下添加重复节点 "I" 和 "J"
            TreeList.AddCheckboxNode("I", parent: groupH);  // "H" 下重复 "I"
            TreeList.AddCheckboxNode("J", parent: groupH);  // "H" 下重复 "J"

            // 为了形成至少5层的嵌套，再加一个新的标签节点 "GroupG"，并添加节点
            var groupG = TreeList.AddLabelNode("GroupG");
            TreeList.AddCheckboxNode("L", parent: groupG);  // GroupG 下的 "L"
            TreeList.AddCheckboxNode("M", parent: groupG);  // GroupG 下的 "M"

            // 继续在 GroupG 下添加节点 "N"
            TreeList.AddCheckboxNode("N", parent: groupG);  // GroupG 下的 "N"

            // 再添加 GroupG 下的 "O" 和 "P"
            TreeList.AddCheckboxNode("O", parent: groupG);  // GroupG 下的 "O"
            TreeList.AddCheckboxNode("P", parent: groupG);  // GroupG 下的 "P"
        }

        private void 改(object sender, RoutedEventArgs e)
        {
            string outputPath = @"C:\Users\Xeroly\Desktop\sieghail.json";

            // 方法1：使用File.ReadAllText（推荐）
            string jsonContent = File.ReadAllText(outputPath);
            TreeList.JsonParse(jsonContent);

        }

        private void 删(object sender, RoutedEventArgs e)
        {
            xDataGrid.Rows.Clear();
        }

        private void 查(object sender, RoutedEventArgs e)
        {
            string outputPath = @"C:\Users\Xeroly\Desktop\sieghail.json"; // 修改为你想要保存的路径

            // 获取要输出的文本
            string outputText = TreeList.JsonPrint().ToString();

            // 使用StreamWriter将文本写入文件
            try
            {
                using (StreamWriter writer = new StreamWriter(outputPath, false)) // 'true'表示以追加模式写入文件
                {
                    writer.WriteLine(outputText); // 写入文本
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误: " + ex.Message); // 如果写入过程中出现异常，弹出错误信息
            }
        }

}
}