Esempio n. 1
0
        /// <summary>
        /// 获取指定名称的上下文菜单
        /// </summary>
        /// <param name="name">上下文菜单名称</param>
        /// <returns>返回正确的上下文菜单,如果不存在指定名称的上下文菜单则返回空的<see cref="PopupMenu"/>对象</returns>
        public object GetContentMenu(string name)
        {
            PopupMenu content = new PopupMenu();

            content.Manager = barManager;
            if (contents.ContainsKey(name))
            {
                AddInTree addInTree = workItem.Services.Get <AddInTree>();
                if (addInTree != null)
                {
                    try
                    {
                        AddInNode addInNode = addInTree.GetChild(name);
                        if (addInNode != null)
                        {
                            addInNode.BuildChildItems(this);
                        }
                    }
                    catch (Exception ex) {
                        throw new UniframeworkException(String.Format("无法创建指定路径 \"{0} \" 的插件单元,{1}", name, ex.Message));
                    }
                }
            }

            if (contents.ContainsKey(name))
            {
                foreach (BarItemLink link in contents[name].ItemLinks)
                {
                    BarItemLink barlink = content.AddItem(link.Item);
                    barlink.BeginGroup = link.BeginGroup;
                }
            }

            return(content);
        }
Esempio n. 2
0
        /// <summary>
        /// 创建指定路径下的插件节点
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="caller">调用者</param>
        /// <param name="throwOnNotFound">如果为true,当未找到指定路径的节点时将抛出异常</param>
        public List <T> BuildItems <T>(object caller, string path, bool throwOnNotFound)
        {
            AddInNode node = GetChild(path, throwOnNotFound);

            if (node == null)
            {
                return(new List <T>());
            }
            else
            {
                return(node.BuildChildItems <T>(caller));
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 创建指定路径下的插件节点列表
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="caller">调用者</param>
        /// <param name="throwOnNotFound">未找到是否触发异常</param>
        /// <returns>返回创建的插件节点列表</returns>
        public ArrayList BuildItems(object caller, string path, bool throwOnNotFound)
        {
            AddInNode node = GetChild(path, throwOnNotFound);

            if (node == null)
            {
                return(new ArrayList());
            }
            else
            {
                return(node.BuildChildItems(caller));
            }
        }