Ejemplo n.º 1
0
        /// <summary>
        /// 通过元数据加载菜单
        /// </summary>
        public void LoadMenus()
        {
            //IMenuService menuService = (IMenuService)application.GetService(typeof(IMenuService));
            MainMenuPages.Clear();
            MenuDict.Clear();
            ISinoMenu _iSinoMenu = MenuConfig.GetMenuInterface();

            UserMenuList = _iSinoMenu.GetAllMenus(SessionClass.CurrentSinoUser.CurrentPost.PostID);
            if (UserMenuList != null)
            {
                SinoMenuFatherFinder _finder           = new SinoMenuFatherFinder("0");
                List <SinoMenuItem>  _TopLevelMenuList = UserMenuList.FindAll(new Predicate <SinoMenuItem>(_finder.FindByFather));
                _TopLevelMenuList.Sort(new SinoMenuComparer());
                foreach (SinoMenuItem _smi in _TopLevelMenuList)
                {
                    if (_smi.MenuType.Length > 3 && _smi.MenuType.Substring(0, 3) == "WEB")
                    {
                        //这是WEB的菜单
                    }
                    else if (_smi.MenuType.Length > 3 && _smi.MenuType.Substring(0, 3) == "SL_")
                    {
                        //这是Silverlight的菜单
                    }
                    else
                    {
                        FrmMenuPage _fmp = new FrmMenuPage(_smi.MenuID, _smi.MenuTitle, _smi.CanUse);
                        this.AddMainMenuPage(_fmp);
                        AddSubMenu(_smi, UserMenuList, _fmp);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void AddSubMenu(SinoMenuItem _fmenuitem, List <SinoMenuItem> _menuList, FrmMenuPage _fmp)
        {
            SinoMenuFatherFinder _finder      = new SinoMenuFatherFinder(_fmenuitem.MenuID);
            List <SinoMenuItem>  _subMenuList = _menuList.FindAll(new Predicate <SinoMenuItem>(_finder.FindByFather));

            _subMenuList.Sort(new SinoMenuComparer());
            foreach (SinoMenuItem _smi in _subMenuList)
            {
                FrmMenuGroup _fmg = new FrmMenuGroup(_smi.MenuID, _smi.MenuTitle, _smi.CanUse);
                this.AddMenuGroup(_fmp, _fmg);
                if (_smi.MenuType != "")
                {
                    MenuTypeBase   _mtype        = MenuTypeCreator.CreateMenuType(_smi.MenuType);
                    IPluginService pluginService = (IPluginService)application.GetService(typeof(IPluginService));
                    IPlugin        _plugin       = pluginService.GetPluginInstance(_mtype.MenuTypePluginName);
                    if (_plugin == null)
                    {
                        RaiseLoadErrord(new CommonEventArgs(string.Format("未找到组菜单定义:{0}", _mtype)));
                    }
                    else
                    {
                        _plugin.Load(_fmg, _smi.MenuParameter);
                    }
                }
                else
                {
                    this.AddSubMenuItem(_smi, _menuList, _fmg);
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 建三级子菜单记录
        /// </summary>
        /// <param name="_mitem"></param>
        /// <param name="_menuList"></param>
        /// <returns></returns>
        private List <FrmMenuItem> CreateChildItems(FrmMenuItem _fmenuitem, List <SinoMenuItem> _menuList)
        {
            FrmMenuItem          _mitem       = null;
            List <FrmMenuItem>   _ret         = new List <FrmMenuItem>();
            SinoMenuFatherFinder _finder      = new SinoMenuFatherFinder(_fmenuitem.MenuID);
            List <SinoMenuItem>  _subMenuList = _menuList.FindAll(new Predicate <SinoMenuItem>(_finder.FindByFather));

            _subMenuList.Sort(new SinoMenuComparer());
            foreach (SinoMenuItem _smi in _subMenuList)
            {
                if (_smi.CanUse)
                {
                    if (_smi.MenuType == "")
                    {
                        _mitem = new FrmMenuItem(_smi.MenuID, _smi.MenuTitle, "", global::SinoSZClientBase.Properties.Resources.foward2, _smi.CanUse, null);
                    }
                    else
                    {
                        #region  类型定义

                        string[] _typeStrs = _smi.MenuType.Split('.');
                        if (_typeStrs.Length > 1)
                        {
                            string         _pluginName   = _typeStrs[0];
                            string         _commandName  = _typeStrs[1];
                            IPluginService pluginService = (IPluginService)application.GetService(typeof(IPluginService));
                            IPlugin        _plugin       = pluginService.GetPluginInstance(_pluginName);
                            if (_plugin == null)
                            {
                                RaiseLoadErrord(new CommonEventArgs(string.Format("未找到菜单定义用的插件:{0}", _pluginName)));
                                _mitem = new FrmMenuItem(_smi.MenuID, _smi.MenuTitle, "", global::SinoSZClientBase.Properties.Resources.foward2, _smi.CanUse, null);
                            }
                            else
                            {
                                _mitem        = _plugin.GetMenuItem(_commandName, _smi.MenuTitle, _smi.MenuParameter);
                                _mitem.MenuID = _smi.MenuID;
                            }
                        }
                        #endregion
                    }
                    _ret.Add(_mitem);
                    _mitem.ChildMenus = CreateChildItems(_mitem, _menuList);
                }
            }
            return(_ret);
        }