How to load/change CodeRush templates from inside your DXCore plug-in
April 22nd, 2011
CodeRush code templates are stored inside serialized objects (binary and XML files) as opposed to usual DXCore plug-ins settings storage mechanism. If you’d like to load templates (e.g. to dump and print some templates categories) you can use the DXCore Templates and Serialization services.
Here’s the sample:
private void BuildTemplatesTree(System.Windows.Forms.TreeView treeView) { treeView.Nodes.Clear(); TemplateCategoryCollection categories = CodeRush.Templates.GetCategories("CSharp"); if (categories == null || categories.Count == 0) return; treeView.BeginUpdate(); try { PopulateTreeView(treeView, categories, null); } finally { treeView.EndUpdate(); } } private void PopulateTreeView(TreeView treeView, TemplateCategoryCollection categories, TreeNode parentNode) { foreach (TemplateCategory category in categories) { TreeNode catNode = null; if (parentNode != null) catNode = parentNode.Nodes.Add(category.Name); else catNode = treeView.Nodes.Add(category.Name); catNode.Tag = category; PopulateTreeView(treeView, category.Categories, catNode); foreach (Template template in category.Templates) { TreeNode templateNode = catNode.Nodes.Add(template.Name); templateNode.Tag = template; } } }
Private Sub BuildTemplatesTree(ByVal treeView As System.Windows.Forms.TreeView) treeView.Nodes.Clear() Dim categories As TemplateCategoryCollection = CodeRush.Templates.GetCategories("Basic") If categories IsNot Nothing OrElse categories.Count = 0 Then Return End If treeView.BeginUpdate() Try PopulateTreeView(treeView, categories, Nothing) Finally treeView.EndUpdate() End Try End Sub Private Sub PopulateTreeView(ByVal treeView As TreeView, ByVal categories As TemplateCategoryCollection, ByVal parentNode As TreeNode) For Each category As TemplateCategory In categories Dim catNode As TreeNode = Nothing If parentNode IsNot Nothing Then catNode = parentNode.Nodes.Add(category.Name) Else catNode = treeView.Nodes.Add(category.Name) End If catNode.Tag = category PopulateTreeView(treeView, category.Categories, catNode) For Each template As Template In category.Templates Dim templateNode As TreeNode = catNode.Nodes.Add(template.Name) templateNode.Tag = template Next Next End Sub
The sample plug-in with the source code is attached (22,628 bytes, C# only, Visual Studio 2010).
—– Products: DXCore Versions: 10.2 and up VS IDEs: any Updated: Apr/22/2011 ID: D077