using HtmlAgilityPack;
using ICSharpCode.TextEditor.Document;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;

namespace 开发辅助工具.Tools
{
    public partial class FrmXpath : DockContent
    {
        public FrmXpath()
        {
            InitializeComponent();
            CbbXMLType.SelectedIndex = 0;
            textEditorControl1.IsReadOnly = true;
        }

        private void RySearchXpath_OnSearch(object sender, EventArgs e)
        {
            string text = "";
            string format = "XML";
            try
            {
                if (CbbXMLType.SelectedIndex == 0)
                {
                    format = "XML";
                    System.Xml.XmlDocument xml = new System.Xml.XmlDocument();
                    xml.LoadXml(TxtXML.Text);
                    var node = xml.SelectNodes(RySearchXpath.Text);
                    if (node != null)
                    {
                        for (int i = 0; i < node.Count; i++)
                        {
                            if (text != "") { text += "\r\n\r\n"; }
                            text += node[i].OuterXml;
                        }
                    }
                }
                else if (CbbXMLType.SelectedIndex == 1)
                {
                    format = "HTML";
                    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
                    htmlDoc.LoadHtml(TxtXML.Text);
                    HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(RySearchXpath.Text);
                    if (anchors != null)
                    {
                        for (int i = 0; i < anchors.Count; i++)
                        {
                            if (text != "") { text += "\r\n\r\n"; }
                            text += anchors[i].OuterHtml;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            textEditorControl1.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy(format);
            textEditorControl1.Text = text;
        }

        private void FrmXpath_Load(object sender, EventArgs e)
        {

        }

        private void TxtXML_DoubleClick(object sender, EventArgs e)
        {
            ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender;
            开发辅助工具.Controls.FrmText frm = new Controls.FrmText
            {
                Icon = Icon
            };
            frm.richTextBox1.Text = txt.Text;
            if (frm.ShowDialog() == DialogResult.OK)
            {
                txt.Text = frm.richTextBox1.Text;
            }
        }
    }
}