Example #1
0
        /// <summary>
        /// VSのテンプレートをTreeNodeItemに変換する
        /// </summary>
        /// <param name="o_ext">テンプレート</param>
        /// <param name="forTest">true:変換できるかテストだけをする</param>
        /// <returns></returns>
        private TreeNodeTemplateItem CreateTreeNodeItemFromExtension(object o_ext, bool forTest = false)
        {
            object o_name = o_ext.GetType().GetProperty("Name")?.GetValue(o_ext);

            if (o_name == null || o_name?.GetType().Name == "InstallMorePlaceHolderTemplate")
            {
                return(null);
            }

            TreeNodeTemplateItem node = new TreeNodeTemplateItem(o_ext);

            foreach (Tag tagTemp in node.TemplateWrapper.GetTemplateTags())
            {
                if (!forTest)
                {
                    var tag = this.Tags.FirstOrDefault(_ => _.Id == tagTemp.Id && _.Type == tagTemp.Type && _.Value == tagTemp.Value);
                    if (tag == null)
                    {
                        tag = tagTemp;
                        this.Tags.Add(tag);
                    }
                    node.AddTag(tag);
                }
                else
                {
                    node.AddTag(tagTemp);
                }
            }

            if (!forTest)
            {
                string[] grpkeys = this.TagTypeOrder.ToArray();
                if (!node.Tags.Any(_ => _.Type == TagTypeKey.ProjectType))
                {
                    var name = node.TemplateWrapper.NonLocalizedCategoryFullName;
                    Tag tag  = this.Tags.FirstOrDefault(_ => _.Type == TagTypeKey.ProjectType && _.Id == name);
                    if (tag == null)
                    {
                        tag       = new Tag();
                        tag.Id    = name;
                        tag.Type  = TagTypeKey.ProjectType;
                        tag.Value = name;
                        this.Tags.Add(tag);
                    }
                    node.AddTag(tag);
                }
                foreach (string grpKey in grpkeys)
                {
                    if (!node.Tags.Any(_ => _.Type == grpKey))
                    {
                        var tag = GetOtherTag(grpKey, forTest);
                        node.AddTag(tag);
                    }
                }
            }
            return(node);
        }
Example #2
0
 public TemplateWrapper(TreeNodeTemplateItem item)
 {
     this.TreeNodeTemplateItem = item;
     this.template             = item.Template;
 }