Home > Code Samples > How to load/change CodeRush templates from inside your DXCore plug-in

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;
    }
  }
}

Show Visual Basic code… »

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

Similar Posts: