/// <summary>
        /// 执行请求
        /// </summary>
        /// <param name="httpContext"></param>
        public void Invoke(HttpContext httpContext)
        {
            // 1、加载Controller
            endpointRouteBuilder.MapController();//扫描所有controller

            //路由匹配endpoint
            Endpoint endpoint = endpointRoute.Match("/index");

            //执行endpoint
            object result = endpointHandler.HandlerEndpoint(endpoint, new object[] { "原理解析" });

            //处理结果
            ViewResult viewResult = (ViewResult)result;


            //输出到页面
            if (viewResult.ViewType.Equals("Razor"))
            {
                AbstractView razorView = new RazorView();
                razorView.Render(viewResult.ViewData, httpContext);
            }
            else if (viewResult.ViewType.Equals("Xml"))
            {
                AbstractView xmlView = new XMLView();
                xmlView.Render(viewResult.ViewData, httpContext);
            }
        }
    //https://stackoverflow.com/questions/24083959/using-linq-to-get-datagridview-row-index-where-first-column-has-specific-value
    private void SearchButton_Click(object sender, EventArgs e)
    {
        string searchValue = SearchBar.Text;

        XMLView.ClearSelection();
        XMLView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        bool valueResult = false;

        try
        {
            int index = 0;
            var item  = XMLView.Rows.Cast <DataGridViewRow>().FirstOrDefault(r => r.Cells[0].Value.ToString().Contains(searchValue, StringComparison.InvariantCultureIgnoreCase));
            if (item != null)
            {
                index = item.Index;
                XMLView.Rows[index].Selected            = true;
                XMLView.FirstDisplayedScrollingRowIndex = index;
                valueResult = true;
            }
        }
        catch (Exception ex)
        {
            GlobalFuncs.LogExceptions(ex);
        }
        finally
        {
            if (!valueResult)
            {
                MessageBox.Show("The item, '" + SearchBar.Text + "', was not found. Please try another term.", "XML Content Editor - Item Not Found");
            }
        }
    }
 //https://stackoverflow.com/questions/14431936/how-to-force-datagridviewcell-to-end-edit-when-row-header-is-clicked/14498870
 private void XMLView_MouseClick(object sender, MouseEventArgs e)
 {
     if (XMLView.HitTest(e.X, e.Y).Type == DataGridViewHitTestType.RowHeader)
     {
         XMLView.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
         XMLView.EndEdit();
     }
     else
     {
         XMLView.EditMode = DataGridViewEditMode.EditOnEnter;
     }
 }
 public WBXMLInspector()
 {
     wbxmlDoc = new WBXMLDocument();
     wbxmlDoc.VersionNumber = 1.3;
     wbxmlDoc.TagCodeSpace = new ActiveSyncCodeSpace();
     wbxmlDoc.AttributeCodeSpace = new ActiveSyncAttributeCodeSpace();
     wbxmlDoc.Encoding = Encoding.UTF8;
     xmlView = new XMLView();
     textView = new RawView(this);
     rawBody = null;
     validHeader = false;
     tagPageControl = null;
 }
Beispiel #5
0
 public WBXMLInspector()
 {
     wbxmlDoc = new WBXMLDocument();
     wbxmlDoc.VersionNumber      = 1.3;
     wbxmlDoc.TagCodeSpace       = new ActiveSyncCodeSpace();
     wbxmlDoc.AttributeCodeSpace = new ActiveSyncAttributeCodeSpace();
     wbxmlDoc.Encoding           = Encoding.UTF8;
     xmlView        = new XMLView();
     textView       = new RawView(this);
     rawBody        = null;
     validHeader    = false;
     tagPageControl = null;
 }
    private void SaveXML(bool noReload = false)
    {
        XMLView.EndEdit();

        //https://stackoverflow.com/questions/37145086/datagridview-remove-empty-rows-button
        for (int i = XMLView.Rows.Count - 1; i > -1; i--)
        {
            DataGridViewRow row = XMLView.Rows[i];
            if (!row.IsNewRow && row.Cells[0].Value == null)
            {
                XMLView.Rows.RemoveAt(i);
            }
        }

        List <Provider>  providerList  = new List <Provider>();
        List <PartColor> partColorList = new List <PartColor>();

        foreach (DataGridViewRow data in XMLView.Rows)
        {
            if (data.IsNewRow)
            {
                continue;
            }

            switch (ListType)
            {
            case XMLContentType.ContentProviders:
                Provider pro = new Provider();
                pro.Name = data.Cells[0].Value.ToString();
                pro.URL  = data.Cells[1].Value.ToString();
                pro.Icon = data.Cells[2].Value.ToString();
                providerList.Add(pro);
                break;

            case XMLContentType.PartColors:
                PartColor pc = new PartColor();
                pc.ColorRawName = data.Cells[0].Value.ToString();
                pc.ColorID      = Convert.ToInt32(data.Cells[1].Value);
                pc.ColorRGB     = data.Cells[2].Value.ToString();
                partColorList.Add(pc);
                break;

            default:
                break;
            }
        }

        //https://stackoverflow.com/questions/2129414/how-to-insert-xml-comments-in-xml-serialization
        switch (ListType)
        {
        case XMLContentType.ContentProviders:
            ContentProviders providers = new ContentProviders();
            providers.Providers = providerList.ToArray();

            XmlSerializer ser = new XmlSerializer(typeof(ContentProviders));

            using (FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.ContentProviderXMLName, FileMode.Create))
            {
                XmlWriter writer = XmlWriter.Create(fs, new XmlWriterSettings {
                    Indent = true
                });
                writer.WriteStartDocument();
                writer.WriteComment(GenerateComment("content providers"));
                ser.Serialize(writer, providers);
                writer.WriteEndDocument();
                writer.Flush();
            }
            break;

        case XMLContentType.PartColors:
            PartColors partColors = new PartColors();
            partColors.ColorList = partColorList.ToArray();

            XmlSerializer ser2 = new XmlSerializer(typeof(PartColors));

            using (FileStream fs = new FileStream(GlobalPaths.ConfigDir + "\\" + GlobalPaths.PartColorXMLName, FileMode.Create))
            {
                XmlWriter writer = XmlWriter.Create(fs, new XmlWriterSettings {
                    Indent = true
                });
                writer.WriteStartDocument();
                writer.WriteComment(GenerateComment("part colors"));
                ser2.Serialize(writer, partColors);
                writer.WriteEndDocument();
                writer.Flush();
            }
            break;

        default:
            break;
        }

        providerList.Clear();
        partColorList.Clear();

        string fileName = "";

        switch (ListType)
        {
        case XMLContentType.ContentProviders:
            fileName = GlobalPaths.ContentProviderXMLName;
            break;

        case XMLContentType.PartColors:
            fileName = GlobalPaths.PartColorXMLName;
            break;

        default:
            break;
        }

        if (!noReload)
        {
            MessageBox.Show(fileName + " has been saved! The list will now reload.", "XML Content Editor - File Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
            LoadXML(ListType);
        }
        else
        {
            MessageBox.Show(fileName + " has been saved!", "XML Content Editor - File Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }