Example #1
0
        /// <summary>
        /// 修改NODE显示的TEXT
        /// </summary>
        /// <param name="strNewText"></param>
        public virtual void ChangeNodeText(string strNewText)
        {//对节点重命名暂时仅支持页面片的重命名!
            TmpltBaseTreeNode tmpltBaseTreeNode = this;

            //找到对应的模板1
            while (!(tmpltBaseTreeNode is TmpltElementNode))
            {
                tmpltBaseTreeNode = (TmpltBaseTreeNode)tmpltBaseTreeNode.Parent;
            }

            TmpltSimpleExXmlElement tmpltElement = tmpltBaseTreeNode.Element as TmpltSimpleExXmlElement;

            //得到对应的模板文件DOC
            TmpltXmlDocument tmpltDocument = tmpltElement.GetIndexXmlDocument();

            if (this is SnipElementNode)
            {
                SnipXmlElement snipElement = ((this as SnipElementNode).Element) as SnipXmlElement;
                snipElement.SnipName = strNewText;

                //通知页面设计器,更改FORM的TEXT
                string[] strArray = new string[2];
                strArray[0] = snipElement.Id;
                strArray[1] = strNewText;
                SdsiteXmlDocument.OnSnipDesignerFormTextChange(new EventArgs <string[]>(strArray));
            }
        }
Example #2
0
        /// <summary>
        /// 页面的Css设置
        /// </summary>
        /// <param name="doc">对应的模板文档</param>
        public CssSetupForm(TmpltXmlDocument doc)
        {
            InitializeComponent();
            if (!Service.Util.DesignMode)
            {
                this.tabControlGeneral.TabPages.Clear();
            }
            Doc = doc;
            XmlElement ele = doc.DocumentElement;

            CSSText                          = ele.GetAttribute("webCss");
            _webPageDicA                     = CssSection.Parse(ele.GetAttribute("a"));
            _webPageDicA_visited             = CssSection.Parse(ele.GetAttribute("a_visited"));
            this.checkBoxUsingCurImg.Visible = false;
            checkBoxIsAutoSize.Enabled       = true;
            tabControlGeneral.TabPages.Add(this.tabPageBackGroud);
            tabControlGeneral.TabPages.Add(this.tabPageBorder);
            tabControlGeneral.TabPages.Add(this.tabPageFont);
            this.groupBoxLinkOption.Visible = true;
            //this.cssDesignerDisplayControl.NumericUpDown.Enabled = true;
            _curType = CurType.WebPage;
            this.textBoxCurType.Text = StringParserService.Parse("${res:tmpltDesign.tmpltDrawPanel.cssSetupFormType.tmplt}");
            this.Text = StringParserService.Parse("${res:tmpltDesign.tmpltDrawPanel.cssSetupFormText.tmplt}");
            _tmpltID  = doc.Id;
            this.textBoxTitle.Enabled = false;
            this.textBoxTitle.Text    = ele.GetAttribute("title");
            //InitEvent();
        }
Example #3
0
 /// <summary>
 /// 生成正文页面片内容
 /// </summary>
 static public string GetContentPageContent(string contentId)
 {
     try
     {
         PageSimpleExXmlElement pageEle  = ToHtmlSdsiteService.SdsiteXmlDocument.GetPageElementById(contentId);
         TmpltXmlDocument       tmpltDoc = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(pageEle.TmpltId);
         SnipXmlElement         snipEle  = tmpltDoc.GetContentSnipEle();
         string contentHtml = null;
         if (snipEle != null)
         {
             // lukan, 2008-6-23 10:38:45, 重构
             //contentHtml = snipEle.ToRealContentHtml(contentId);
             //if (snipEle.IsHaveContent == false && tmpltDoc.TmpltType == TmpltType.General)
             //{
             //    contentHtml += "<span>您在正文页面片中还没有添加正文,正文部分将无法显示</span>";
             //}
             //if (!string.IsNullOrEmpty(snipEle.ToRealCss()))
             //{
             //    ActiveTmpltAndSnip.AddSnipElementIntoDictionary(snipEle);
             //}
         }
         else
         {
             return("您还没有添加正文页面片!");
         }
         return(contentHtml);
     }
     catch (Exception e)
     {
         ExceptionService.CreateException(e);
         return(string.Empty);
     }
 }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        public static string GetKeywordListSnip(string tmpltId, string pageId)
        {
            PageSimpleExXmlElement pageEle    = ToHtmlSdsiteService.SdsiteXmlDocument.GetPageElementById(pageId);
            TmpltXmlDocument       tmpltDoc   = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId);
            SnipXmlElement         snipXmlEle = tmpltDoc.GetKeyListSnip();

            return("");// snipXmlEle.ToKeywordHtml(pageEle);
        }
Example #5
0
        protected override void LoadChildNodes(TmpltTreeNodeType NodeFilterType)
        {
            this.Nodes.Clear();
            TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(ID);

            foreach (SnipXmlElement snipEle in tmpltDoc.GetSnipElementList())
            {
                AddElementNode(snipEle, NodeFilterType);
            }
            SetNoChildNodesText();
        }
Example #6
0
        public TmpltDesignerPanel(int width, int height, Image backImage, TmpltXmlDocument doc)
            : base(width, height, backImage)
        {
            _backImg = backImage;
            TmpltID  = doc.Id;
            InitializeComponent();
            InitEvents();
            TmpltDoc = doc;
            LoadTmplt(doc);

            strRectsData = TmpltDoc.GetRectsElement().InnerXml;
        }
Example #7
0
        public PasteSnipDataCommand(DesignPanel tdPanel, List <Rect> pastedSnipRects, SnipData newData, TmpltXmlDocument doc)
        {
            PastedSnipRects = pastedSnipRects;
            Doc             = doc;
            NewSnipData     = newData;
            dPanel          = tdPanel;
            foreach (Rect rect in PastedSnipRects)
            {
                OldSnipDatas[rect] = rect.SnipData;
            }

            CommandInfo = "粘贴页面片数据";
        }
Example #8
0
        /// <summary>
        /// 在模板视图树上新添加一个页面片节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CurrentDocument_SnipAdd(object sender, EventArgs <SnipXmlElement> e)
        {
            //查找该页面所对应的模板的ID
            TmpltXmlDocument  tmpltDoc = (TmpltXmlDocument)e.Item.OwnerDocument; //测试增加页面片是
            TmpltBaseTreeNode elementNode;

            if (_dicNodeIndexs.TryGetValue(tmpltDoc.Id, out elementNode))
            {
                //如果一开始没有页面片, 当添加时,要处理一下没有页面片的TEXT

                elementNode.AddElementNode(e.Item, SnipFilter);
            }
        }
Example #9
0
 private void TmpltTreeView_BeforeExpand(object sender, TreeViewCancelEventArgs e)
 {
     e.Cancel = expandCollapse;
     //展开前的判断
     if (!e.Cancel && e.Node is TmpltElementNode)
     {
         TmpltElementNode tmpltNode = e.Node as TmpltElementNode;
         TmpltXmlDocument tmpltDoc  = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(tmpltNode.ID);
         if (tmpltDoc.GetSnipElementList().Count <= 0)
         {
             tmpltNode.ClearTmpltNode();
         }
     }
 }
Example #10
0
        /// <summary>
        /// 判断模板是否存在正文型面片
        /// </summary>
        /// <param name="tmpltID"></param>
        /// <returns></returns>
        private bool IshasContentSnip(string tmpltID)
        {
            TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(tmpltID);
            XmlNodeList      snips    = tmpltDoc.GetElementsByTagName("snip");

            foreach (XmlNode snip in snips)
            {
                if (((SnipXmlElement)snip).SnipType == PageSnipType.Content)
                {
                    return(true);
                }
            }
            return(false);
        }
Example #11
0
        /// <summary>
        /// 通过模板ID获得模板的TOHTML,并将该TmpltDoc实例加入到字典中,为Tocss做准备
        /// </summary>
        static public string GetTmpltContent(string tmpltId)
        {
            try
            {
                TmpltXmlDocument tmpltDoc = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId);
                ActiveTmpltAndSnip.AddTmpltDocIntoDictionary(tmpltDoc);

                return(tmpltDoc.ToHtml());
            }
            catch (Exception e)
            {
                ExceptionService.CreateException(e);
                return(string.Empty);
            }
        }
Example #12
0
        private void TmpltTreeView_AfterExpand(object sender, TreeViewEventArgs e)
        {
            //生成树
            if (e.Node is TmpltElementNode)
            {
                TmpltElementNode tmpltNode = e.Node as TmpltElementNode;
                TmpltXmlDocument tmpltDoc  = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(tmpltNode.ID);
                if (tmpltDoc.GetSnipElementList().Count <= 0 || tmpltNode.NodeExpand)
                {
                    return;
                }

                tmpltNode.NodeExpand = true;
                tmpltNode.LoadData(SnipFilter);
                ResetDicNodeIndexs();
            }
        }
Example #13
0
        /// <summary>
        /// 载入模板数据
        /// </summary>
        /// <param name="tmpltID"></param>
        public void LoadTmplt(TmpltXmlDocument doc)
        {
            try
            {
                HasContentSnip = bool.Parse(doc.DocumentElement.GetAttribute("hasContent"));
            }
            catch (Exception)
            {
                HasContentSnip = false;
            }

            LoadLines(doc);
            LoadRects(doc);
            //DrawPanel.TmpltDoc = doc;
            ((TmpltDrawPanel)DrawPanel).TmpltDoc = doc;
            TmpltDoc = doc;
            DrawPanel.Invalidate();
        }
Example #14
0
 /// <summary>
 /// 将已经运行过Tohtml的TmpltDoc实例加入字典,以便ToCSS的产生
 /// </summary>
 static public void AddTmpltDocIntoDictionary(TmpltXmlDocument tmpltDoc)
 {
     if (_activeTmpltDictionary == null)
     {
         _activeTmpltDictionary = new Dictionary <string, TmpltXmlDocument>();
         _activeTmpltDictionary.Add(tmpltDoc.Id, tmpltDoc);
     }
     else
     {
         if (_activeTmpltDictionary.ContainsKey(tmpltDoc.Id) == true)
         {
             _activeTmpltDictionary[tmpltDoc.Id] = tmpltDoc;
         }
         else
         {
             _activeTmpltDictionary.Add(tmpltDoc.Id, tmpltDoc);
         }
     }
 }
Example #15
0
 /// <summary>
 /// 通过模板及snipID获得页面片的HTml,并将该SnipEle实例加入到字典中,为Tocss做准备
 /// </summary>
 static public string GetSnipContent(string tmpltId, string snipId)
 {
     try
     {
         TmpltXmlDocument tmpltDoc = ToHtmlSdsiteService.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId);
         SnipXmlElement   snipEle  = tmpltDoc.GetSnipElementById(snipId);
         string           snipHtml = "";// lukan, 2008-6-23 10:38:45, 重构             snipEle.ToRealHtml();
         //if (!string.IsNullOrEmpty(snipEle.ToRealCss()))
         //{
         //    ActiveTmpltAndSnip.AddSnipElementIntoDictionary(snipEle);
         //}
         return(snipHtml);
     }
     catch (Exception e)
     {
         ExceptionService.CreateException(e);
         return(string.Empty);
     }
 }
Example #16
0
        /// <summary>
        /// 打开或添加页面片属性
        /// </summary>
        /// <param name="selectedRect"></param>
        private void ChangeSnipPerperty(SnipRect selectedRect)
        {
            if (selectedRect.HasSnip)
            {
                ///打开页面片
                Form snipForm = Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, selectedRect.SnipID, (TDPanel as TmpltDesignerPanel).TmpltID);
            }
            else
            {
                TmpltXmlDocument   doc     = TmpltDoc;
                TmpltDesignerPanel tDpanel = TDPanel as TmpltDesignerPanel;
                //tDpanel.SaveTmplt(doc);
                tDpanel.SaveRects();
                NewSnipSetupForm form = new NewSnipSetupForm(doc, selectedRect, GetHasContentSnip());
                if (form.ShowDialog() == DialogResult.OK)
                {
                    SnipXmlElement snipElement = doc.GetSnipElementById(selectedRect.SnipID);
                    snipElement.SnipName = form.SnipName;
                    snipElement.SnipType = form.SnipType;
                    snipElement.Width    = selectedRect.Width.ToString() + "px";
                    snipElement.Height   = selectedRect.Height.ToString() + "px";
                    snipElement.Title    = form.SnipName;
                    snipElement.HasSnip  = true;

                    tDpanel.SaveRects();
                    selectedRect.HasSnip  = true;
                    TDPanel.Modified      = true;
                    selectedRect.SnipType = form.IsContent ? PageSnipType.Content : PageSnipType.General;
                    if (form.IsContent)
                    {
                        if (!doc.HasContentSnip)
                        {
                            doc.HasContentSnip = true;
                        }
                    }
                    TDPanel.HasContentSnip = form.IsContent;
                    ///打开页面片
                    Form snipForm = Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, selectedRect.SnipID, (TDPanel as TmpltDesignerPanel).TmpltID);
                }
            }
        }
Example #17
0
        private void NewMethod(string channelId)
        {
            //查找拥有此页面直属的频道节点的所有的模板节点,返回模板ID集合
            string[] tmpltIdArray = SdsiteDocument.GetTmpltIdArray(channelId);

            foreach (var tmpltId in tmpltIdArray)
            {
                TmpltXmlDocument tmpltDoc = SdsiteDocument.GetTmpltDocumentById(tmpltId);

                //得到当前模板下拥有此页面所属频道的类型为list的所有part的父父级snip的集合
                string[] snipIdArray = SdsiteDocument.GetSnipIdArray(tmpltId, channelId);

                //循环snip集合,获得每个snip节点下的分别有拥有此页面所属的频道的类型为list的part节点的集合
                foreach (var snipId in snipIdArray)
                {
                    //重新生成 snip 页面
                    SnipXmlElement snipEle = tmpltDoc.GetSnipElementById(snipId);
                    if (!snipEle.IsModified)
                    {
                        snipEle.SaveXhtml(ToHtmlHelperObj);
                    }

                    //对其part 的处理
                    snipEle.GetPartsElement();
                }

                //不论按哪种排序,则先将其所属的snip节点重新生成一遍


                //如果其排序方式为自动提取关键字,则取出此part下的所有频道id,及页面类型集合


                //循环这些频道,找出页面类型为以上类型集合的所有页面


                //此处应有一些分支操作:=====isModified = false的一定要重新生成(并记录下isModified=false,并记录重新生成过的页面),而ismodified为真或是isAlreadyPublish =false,或是isdeleted=true自然会有一些相应的操作


                //最后,将重新生成这些页面
            }
        }
        public BuildSite()
        {
            ToHtmlHelper siteHelper = new ToHtmlHelper("", @"D:\_abc\myabc");

            TmpltXmlDocument tmpltDoc = null;

            tmpltDoc.SaveXhtml(siteHelper);
            tmpltDoc.DeleteXhtml(siteHelper);

            PageXmlDocument pageDoc = null;

            pageDoc.SaveXhtml(siteHelper);
            pageDoc.DeleteXhtml(siteHelper);

            foreach (var item in tmpltDoc.GetSnipElementList())
            {
                SnipXmlElement snip = (SnipXmlElement)item;
                snip.SaveXhtml(siteHelper);
                snip.DeleteXhtml(siteHelper);
            }
        }
Example #19
0
        /// <summary>
        /// 保存模板
        /// </summary>
        public void SaveTmplt(TmpltXmlDocument doc)
        {
            if (doc.HasContentSnip != HasContentSnip)
            {
                TmpltDoc.HasContentSnip = HasContentSnip;
                Internal.InternalService.OnTmpltDocumentHealthChanged(new EventArgs <string>(TmpltID));
            }
            float x = DrawPanel.CurZoom;

            DrawPanel.CurZoom = 1;

            SaveLines();
            SaveRects();

            DrawPanel.CurZoom = x;

            doc.Save();

            //保存XML文档内容,如果恢复的话这里就是起点
            strRectsData = doc.GetRectsElement().InnerXml;
        }
Example #20
0
        private void TmpltHtmlCreator(TmpltXmlDocument tmpltdoc)
        {
            this.codeTextBox.Clear();
            this.outXmlTextBox.Clear();
            this.tree.Nodes.Clear();

            string source = tmpltdoc.GetRectsElement().OuterXml.Replace(">", ">\r\n");

            if (tmpltdoc.SaveXhtml(this._htmlHelper))
            {
                string html = File.ReadAllText(tmpltdoc.HtmlFile).Replace(">", ">\r\n");
                this.codeTextBox.Text = html;
            }

            this.outXmlTextBox.Text = source;

            TreeNode treenode = new TreeNode();

            this.SetTmpltTree(tmpltdoc.GetRectsElement(), treenode);
            this.tree.Nodes.Add(treenode);
            this.tree.ExpandAll();
        }
Example #21
0
        public override bool CannelSave()
        {
            if (string.IsNullOrEmpty(TmpltDesign.strRectsData))
            {
                return(false);
            }

            //得到该模板对应的 TmpltSimpleExXmlElement
            TmpltSimpleExXmlElement ele = Service.Sdsite.CurrentDocument.GetTmpltElementById(TmpltID);

            if (ele != null)
            {
                TmpltXmlDocument tmpltDoc = Service.Sdsite.CurrentDocument.GetTmpltDocumentById(TmpltID);


                tmpltDoc.DocumentElement.RemoveChild(tmpltDoc.GetRectsElement());

                XmlElement newRects = tmpltDoc.CreateElement("rects");
                newRects.InnerXml = TmpltDesign.strRectsData;
                tmpltDoc.DocumentElement.AppendChild(newRects);
            }
            return(true);
        }
Example #22
0
        public MdiTmpltDesignForm(string tmpltID)
        {
            ResourcesReader.SetControlPropertyHelper(this);
            TmpltID           = tmpltID;
            SnipDesignerForms = new List <Form>();
            InitializeComponent();
            this.ShowIcon = true;
            this.Icon     = Icon.FromHandle(ResourceService.GetResourceImage("tree.img.templet").GetHicon());
            TmpltSimpleExXmlElement tmpltEle = Service.Sdsite.CurrentDocument.GetTmpltElementById(tmpltID);

            if (tmpltEle == null)
            {
                MessageService.Show("文件不存在,打开失败!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                BeginClose();
                return;
            }
            this.Text = tmpltEle.Title;
            Service.Sdsite.CurrentDocument.ElementTitleChanged += new EventHandler <ChangeTitleEventArgs>(CurrentDocument_ElementTitleChanged);
            Service.Workbench.WorkDocumentNewOpened            += new EventHandler <EventArgs <FormData> >(WorkbenchService_WorkDocumentNewOpened);

            Debug.Assert(!string.IsNullOrEmpty(TmpltID));
            TmpltSimpleExXmlElement ele = Service.Sdsite.CurrentDocument.GetTmpltElementById(TmpltID);

            if (ele == null || !File.Exists(ele.AbsoluteFilePath))
            {
                MessageService.Show(StringParserService.Parse("${res:tmpltDesign.tmpltDrawPanel.message.mdiFormLoad}"), MessageBoxButtons.OK, MessageBoxIcon.Error);
                BeginClose();
                return;
            }
            TmpltDoc = ele.GetIndexXmlDocument();

            InitTmpltInfo();
            TmpltDesign.Dock = DockStyle.Fill;
            this.Controls.Add(TmpltDesign);
            TmpltDesign.BringToFront();
        }
Example #23
0
        /// <summary>
        /// 生成模板文件
        /// </summary>
        /// <param name="simpleEle"></param>
        public void BuildTmpltFile(SimpleExIndexXmlElement simpleEle)
        {
            //添加模板到Dictionary字典中
            AddElementToDictionary(simpleEle);

            /// tmpltFolderAbsPath ="Y:\zha\zhangling\projectname\TmpltRootFolder";
            ///string tmpltFolderAbsPath = Path.Combine(sdsiteAbsPath, SdsiteDocument.TmpltFolder.FileName);

            TmpltSimpleExXmlElement tmpltEle = (TmpltSimpleExXmlElement)simpleEle;
            string           tmpltId         = tmpltEle.Id;
            TmpltXmlDocument tmpltDoc        = ToHtmlHelperObj.SdsiteXmlDocument.GetTmpltDocumentById(tmpltId);

            if (tmpltEle.IsDeletedRecursive)
            {
                //删除模板本身的文件
                //删除此模板文件对应的模板文件夹(内有多个snip文件)
                //删除相应的css文件
                //string filePath = tmpltFolderAbsPath + @"\" + tmpltId + CommonService.Inc;
                //FileService.FileDelete(filePath);
                //string folderPath = tmpltFolderAbsPath + @"\" + tmpltId;
                //FolderService.FolderDelete(folderPath);
                //string cssPath = tmpltFolderAbsPath + @"\" + CommonService.Css + @"\" + tmpltId + CssDAT;
                //FileService.FileDelete(cssPath);
                tmpltDoc.DeleteXhtml(ToHtmlHelperObj);
            }
            else if (!tmpltEle.IsAlreadyPublished) //新建
            {
                //打开相应的模板
                //生成本身的文件.css
                //遍历生成相应的snip文件
                //string tmpltPath = tmpltFolderAbsPath + @"\" + tmpltId + CommonService.Inc;
                //TmpltXmlDocument tmpltDoc = SdsiteDocument.GetTmpltDocumentById(tmpltId);
                //tmpltDoc.SaveXhtml();
                //tmpltDoc.SaveXhtml(tmpltPath);
                //string tmpltCssPath = tmpltFolderAbsPath + @"\" + tmpltId + @"\" + CssDAT;
                //tmpltDoc.SaveCss();
                tmpltDoc.SaveXhtml(ToHtmlHelperObj);

                //string folderPath = tmpltFolderAbsPath + @"\" + tmpltId;
                XmlNodeList snipList = tmpltDoc.GetSnipElementList();
                foreach (var item in snipList)
                {
                    SnipXmlElement snipEle = item as SnipXmlElement;
                    //string snipfile = snipEle.Id + CommonService.Inc;
                    //string snipFilePath = Path.Combine(folderPath, snipfile);
                    //snipEle.SaveXhtml();
                    //snipEle.SaveXhtml(snipFilePath);
                    snipEle.SaveXhtml(ToHtmlHelperObj);
                }
            }
            else
            {
                //此处没有路径改变的问题
                if (tmpltEle.IsModified)
                {
                    //打开相应的模板文件
                    //则需要重新生成本身的文件,及有改变过的snip的对应的文件
                    //tmpltDoc.SaveXhtml(); //方法内部在保存此文件时,还需要检查此文件是否存在,存在,则删除掉,然后将其在保存
                    //tmpltDoc.SaveCss();
                    tmpltDoc.SaveXhtml(ToHtmlHelperObj);

                    Dictionary <string, string> dic = new Dictionary <string, string>();
                    XmlNodeList snipList            = tmpltDoc.GetSnipElementList();
                    foreach (var item in snipList)
                    {
                        SnipXmlElement snipEle = item as SnipXmlElement;

                        if (snipEle.IsModified)
                        {
                            //则需要重新生成
                            // snipEle.SaveXhtml();
                            snipEle.SaveXhtml(ToHtmlHelperObj);
                        }

                        string snipFileName = snipEle.Id + CommonService.Inc;
                        dic.Add(snipFileName, "");
                    }

                    //看是否存在多余的snip文件,并将其删除
                    string   snipFolderPath = sdWebAbsPath + @"\" + SdsiteDocument.TmpltFolder.Name + @"\" + tmpltId;
                    string[] allSnipFile    = GetAllSnipFile(snipFolderPath);
                    foreach (var file in allSnipFile)
                    {
                        if (!dic.ContainsKey(file))
                        {
                            //删除此文件
                            string filePath = snipFolderPath + @"\" + file;
                            FileService.FileDelete(filePath);
                        }
                    }
                }
            }
        }
Example #24
0
        /// <summary>
        /// 初始化工具箱中的工具组与工具
        /// </summary>
        /// <param name="isOnlyHasBase">是否仅载入基础的工具组</param>
        /// <param name="type">当前WorkDocument的类型</param>
        private void InitToolBox(bool isOnlyHasBase, WorkDocumentType type)
        {
            if (this.IsDisposed)
            {
                return;
            }
            _toolBox.Nodes.Clear();
            //_toolBox.Nodes.Add(this.BuildBaseTreeNode());//"常规"工具组

            if (isOnlyHasBase)
            {
                return;//仅载入基础的工具组
            }
            switch (Service.Workbench.ActiveWorkDocumentType)
            {
            case WorkDocumentType.SnipDesigner:
                #region 创建页面片的基本工具组和扩展工具组
            {
                MdiSnipDesignerForm form = WorkbenchForm.MainForm.ActiveView as MdiSnipDesignerForm;

                //增加基本的页面片工具箱中的工具
                _toolBox.Nodes.Add(BuildSnipBaseTreeNode());

                //根据定制特性增加扩展的页面片工具箱中的工具
                TmpltXmlDocument tmpltDoc = form.SnipElement.OwnerAnyDocument as TmpltXmlDocument;
                if (form.SnipElement.SnipType != PageSnipType.Content)
                {
                    return;
                }
                if (tmpltDoc.TmpltType != TmpltType.Home)
                {
                    Type pageType = null;
                    switch (tmpltDoc.TmpltType)
                    {
                    case TmpltType.General:
                        pageType = typeof(GeneralPageXmlDocument);
                        break;

                    case TmpltType.Product:
                        pageType = typeof(ProductXmlDocument);
                        break;

                    case TmpltType.Project:
                        pageType = typeof(ProjectXmlDocument);
                        break;

                    case TmpltType.InviteBidding:
                        pageType = typeof(InviteBiddingXmlDocument);
                        break;

                    case TmpltType.Knowledge:
                        pageType = typeof(KnowledgeXmlDocument);
                        break;

                    case TmpltType.Hr:
                        pageType = typeof(HrXmlDocument);
                        break;

                    default:
                        Debug.Fail("TmpltType is Fail!!!!!!");
                        break;
                    }
                    ToolBox.VSTreeNode node = BuildSnipAttributeTreeNode(pageType.GetProperties(), pageType);
                    _toolBox.Nodes.Add(node);
                }
                break;
            }

                #endregion
            case WorkDocumentType.TmpltDesigner:
                #region 创建模板下的工具集
            {
                //MdiTmpltDesignForm form = WorkbenchForm.MainForm.ActiveView as MdiTmpltDesignForm;


                //_toolBox.Nodes.Add(BuildRectBaseTreeNode());
                break;
            }

                #endregion
            default:
                break;
            }
        }