/// <summary>
        /// 下一步
        /// </summary>
        private void btn_next_Click(object sender, EventArgs e)
        {
            try
            {
                int selectPage = tabControl_WizPage.SelectedIndex;
                switch (selectPage)
                {
                case 0:
                    //如果未选择文件,则为创建模式;反之则读取xml文件,编辑模式
                    if (lv_XmlList.SelectedItems.Count == 1)
                    {
                        //数据初始化
                        InitData();
                        _selectedXmlFileName = lv_XmlList.SelectedItems[0].Text;
                        CustomShellTypeXmlHandle.ReadXml(_selectedXmlFileName,
                                                         _basePathDir,
                                                         ref _basicSetting,
                                                         ref _mainCode,
                                                         ref _funcCodeList);
                    }
                    LoadBasic();
                    tabControl_WizPage.SelectedIndex = tabControl_WizPage.SelectedIndex + 1;
                    break;

                case 1:
                    LoadMainCode();
                    tabControl_WizPage.SelectedIndex = tabControl_WizPage.SelectedIndex + 1;
                    break;

                case 2:
                    LoadFuncCode();
                    tabControl_WizPage.SelectedIndex = tabControl_WizPage.SelectedIndex + 1;
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 /// <summary>
 /// 确认保存
 /// </summary>
 private void btn_OK_Click(object sender, EventArgs e)
 {
     try
     {
         //保存之前数据初始化
         InitData();
         //保存数据
         SaveBasic();
         SaveMainCode();
         SaveFuncCode();
         //将数据写到xml文件中
         CustomShellTypeXmlHandle.WriteXml(_basicSetting.ShellTypeName,
                                           _basePathDir,
                                           _basicSetting,
                                           _mainCode,
                                           _funcCodeList);
         MessageBox.Show("已成功生成" + _basicSetting.ShellTypeName + ".xml");
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }
示例#3
0
        /// <summary>
        /// 注册CustomShellType
        /// </summary>
        public static void RegisterCustomShellType(string customShellTypePath)
        {
            //清空CustomShellTypeProvider
            CustomShellTypeProvider.Clear();

            //读取shelltype列表(.type)
            List <string> typeList = XmlHelper.LoadXMlList(customShellTypePath, "type");

            //1.注册CustomShellType
            foreach (string c in typeList)
            {
                var basicSetting    = new CustomShellType.Basic();
                var mainCodeSetting = new CustomShellType.MainCode();

                //读取basicSetting,mainCodeSetting
                CustomShellTypeXmlHandle.ReadXml(c, customShellTypePath, ref basicSetting, ref mainCodeSetting);
                //生成customShellType
                var customShellType = new CustomShellType(basicSetting, mainCodeSetting);
                //将CustomShellType注册到全局
                CustomShellTypeProvider.AddShellType(customShellType);
            }

            //读取funcTree定义列表(.tree)
            List <string> funcTreeList = XmlHelper.LoadXMlList(customShellTypePath, "tree");

            //2.初始化funcTree方法树
            foreach (string c in funcTreeList)
            {
                var treeInfoList = new List <CustomShellType.TreeInfo>();

                //读取funcCodeList
                CustomShellTypeXmlHandle.ReadXml(c, customShellTypePath, ref treeInfoList);
                //将func注册到CustomShellType
                foreach (CustomShellType.TreeInfo info in treeInfoList)
                {
                    /***
                     * 获取节点的类型
                     * 允许多个类型,以英文逗号分隔,如"aspx,aspx1"
                     */
                    string[] types = info.Type.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string type in types)
                    {
                        CustomShellType shellType = CustomShellTypeProvider.GetShellType(type);
                        FuncTreeNode    node      = shellType.AddFuncTreeNode(info.Path);
                        node.Info = info.Info;
                    }
                }
            }

            //读取funcCode列表(.func)
            List <string> funcList = XmlHelper.LoadXMlList(customShellTypePath, "func");

            //3.注册funcCode到functree
            foreach (string c in funcList)
            {
                var funcCodeList = new List <CustomShellType.FuncCode>();

                //读取funcCodeList
                CustomShellTypeXmlHandle.ReadXml(c, customShellTypePath, ref funcCodeList);
                //将func注册到CustomShellType
                foreach (CustomShellType.FuncCode func in funcCodeList)
                {
                    /***
                     * 获取func的类型
                     * type允许多个类型,以英文逗号分隔,如"aspx,aspx1"
                     */
                    string[] types = func.Type.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string type in types)
                    {
                        CustomShellType shellType = CustomShellTypeProvider.GetShellType(type);
                        //获取映射节点
                        //path为xpath形式,如"/cmder",
                        //允许多个,以英文逗号分隔,如"/cmder,/cmder1"
                        string[] xpaths = func.Path.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (string xpath in xpaths)
                        {
                            shellType.AddFuncCode(xpath, func);
                        }
                    }
                }
            }
        }