How to load/change CodeRush templates from inside your DXCore plug-in
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