Browse Source

Put the SortOrder in the AddIn-Tree; and remove the SortOrder.xml files.

pull/45/merge
Daniel Grunwald 12 years ago
parent
commit
feab288aca
  1. 5
      data/templates/file/CSharp/FileCategorySortOrder.xml
  2. 5
      data/templates/file/VB/FileCategorySortOrder.xml
  3. 5
      data/templates/project/CSharp/ProjectCategorySortOrder.xml
  4. 5
      data/templates/project/VB/ProjectCategorySortOrder.xml
  5. 10
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
  6. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  7. 13
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  8. 13
      src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs
  9. 6
      src/Main/Base/Project/Templates/TemplateCategory.cs
  10. 18
      src/Main/SharpDevelop/Templates/TemplateCategoryDoozer.cs
  11. 13
      src/Main/SharpDevelop/Templates/TemplateService.cs

5
data/templates/file/CSharp/FileCategorySortOrder.xml

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
<Categories>
<Category Name="C#">
<Category Name="${res:Templates.File.Categories.WindowsApplications}" SortOrder="10"/>
</Category>
</Categories>

5
data/templates/file/VB/FileCategorySortOrder.xml

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
<Categories>
<Category Name="VB">
<Category Name="${res:Templates.File.Categories.WindowsApplications}" SortOrder="10"/>
</Category>
</Categories>

5
data/templates/project/CSharp/ProjectCategorySortOrder.xml

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
<Categories>
<Category Name="C#">
<Category Name="${res:Templates.File.Categories.WindowsApplications}" SortOrder="10"/>
</Category>
</Categories>

5
data/templates/project/VB/ProjectCategorySortOrder.xml

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
<Categories>
<Category Name="VB">
<Category Name="${res:Templates.File.Categories.WindowsApplications}" SortOrder="10"/>
</Category>
</Categories>

10
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin

@ -62,6 +62,16 @@ @@ -62,6 +62,16 @@
<CodeCompletionBinding id = "CSharp" extensions = ".cs" class = "CSharpBinding.Completion.CSharpCompletionBinding"/>
</Path>
<Path name = "/SharpDevelop/BackendBindings/Templates">
<!-- The contents of the template categories is provided by the data/templates folder
in which SharpDevelop looks by default. We explicitly list the category only in order to assign
the sortOrder.
-->
<TemplateCategory id = "C#">
<TemplateCategory id = "${res:Templates.File.Categories.WindowsApplications}" sortOrder="10" />
</TemplateCategory>
</Path>
<Path name="/SharpDevelop/Workbench/LanguageBindings">
<LanguageBinding
id="CSharp"

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
<Doozer name="TaskBoundAdditionalLogger" class="ICSharpCode.SharpDevelop.Project.TaskBoundAdditionalLoggerDoozer"/>
<Doozer name="TaskBoundLoggerFilter" class="ICSharpCode.SharpDevelop.Project.TaskBoundLoggerFilterDoozer"/>
<Doozer name="TemplateFile" class="ICSharpCode.SharpDevelop.Templates.TemplateFileDoozer"/>
<Doozer name="TemplateCategory" class="ICSharpCode.SharpDevelop.Templates.TemplateCategoryDoozer"/>
</Import>
<Import assembly=":SharpDevelop">
<Doozer name="Parser" class="ICSharpCode.SharpDevelop.Parser.ParserDoozer"/>

13
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -98,15 +98,22 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -98,15 +98,22 @@ namespace ICSharpCode.SharpDevelop.Gui
void InitializeTemplates(IEnumerable<TemplateCategory> templateCategories)
{
foreach (var templateCategory in templateCategories) {
categoryTreeView.Nodes.Add(CreateCategory(templateCategory));
foreach (var templateCategory in Sorted(templateCategories)) {
var cat = CreateCategory(templateCategory);
if (!cat.IsEmpty)
categoryTreeView.Nodes.Add(cat);
}
}
IEnumerable<TemplateCategory> Sorted(IEnumerable<TemplateCategory> templateCategories)
{
return templateCategories.OrderByDescending(c => c.SortOrder).ThenBy(c => StringParser.Parse(c.DisplayName));
}
Category CreateCategory(TemplateCategory templateCategory)
{
Category node = new NewFileDialog.Category(templateCategory.DisplayName);
foreach (var subcategory in templateCategory.Subcategories) {
foreach (var subcategory in Sorted(templateCategory.Subcategories)) {
var subnode = CreateCategory(subcategory);
if (!subnode.IsEmpty)
node.Nodes.Add(subnode);

13
src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs

@ -89,17 +89,24 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs @@ -89,17 +89,24 @@ namespace ICSharpCode.SharpDevelop.Project.Dialogs
}
IEnumerable<TemplateCategory> Sorted(IEnumerable<TemplateCategory> templateCategories)
{
return templateCategories.OrderByDescending(c => c.SortOrder).ThenBy(c => StringParser.Parse(c.DisplayName));
}
protected virtual void InitializeTemplates(IEnumerable<TemplateCategory> templateCategories)
{
foreach (var templateCategory in templateCategories) {
categoryTreeView.Nodes.Add(CreateCategory(templateCategory));
foreach (var templateCategory in Sorted(templateCategories)) {
var cat = CreateCategory(templateCategory);
if (!cat.IsEmpty)
categoryTreeView.Nodes.Add(cat);
}
}
Category CreateCategory(TemplateCategory templateCategory)
{
Category node = new Category(templateCategory.DisplayName);
foreach (var subcategory in templateCategory.Subcategories) {
foreach (var subcategory in Sorted(templateCategory.Subcategories)) {
var subnode = CreateCategory(subcategory);
if (!subnode.IsEmpty)
node.Nodes.Add(subnode);

6
src/Main/Base/Project/Templates/TemplateCategory.cs

@ -16,6 +16,12 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -16,6 +16,12 @@ namespace ICSharpCode.SharpDevelop.Templates
readonly string description;
readonly IImage icon;
/// <summary>
/// An integer that is used for sorting; categories with higher values are listed first.
/// For equal values, the categories will be sorted by the display name.
/// </summary>
public int SortOrder { get; set; }
public override string Name {
get { return name; }
}

18
src/Main/SharpDevelop/Templates/TemplateCategoryDoozer.cs

@ -2,7 +2,9 @@ @@ -2,7 +2,9 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Utils;
namespace ICSharpCode.SharpDevelop.Templates
{
@ -12,6 +14,10 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -12,6 +14,10 @@ namespace ICSharpCode.SharpDevelop.Templates
/// <attribute name="displayName" use="optional">
/// The display name to use. If not specified, the codon id is used instead.
/// </attribute>
/// <attribute name="sortOrder" use="optional">
/// An integer that is used for sorting; categories with higher values are listed first.
/// For equal values, the categories will be sorted by the display name.
/// </attribute>
/// <children childTypes="TemplateBase">
/// The &lt;TemplateCategory&gt; may have templates and subcategories as children.
/// </children>
@ -31,18 +37,26 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -31,18 +37,26 @@ namespace ICSharpCode.SharpDevelop.Templates
if (args.Codon.Properties.Contains("icon"))
icon = SD.ResourceService.GetImage(args.Codon.Properties["icon"]);
TemplateCategory category = new TemplateCategory(
args.Codon.Id,
args.Codon.Id,
args.Codon.Properties["displayName"],
args.Codon.Properties["description"],
icon
);
int sortOrder;
if (int.TryParse(args.Codon.Properties["sortOrder"], out sortOrder))
category.SortOrder = sortOrder;
LoadSubItems(category, args);
return category;
}
void LoadSubItems(TemplateCategory category, BuildItemArgs args)
{
foreach (TemplateBase item in args.BuildSubItems<TemplateBase>()) {
if (item is TemplateCategory)
category.Subcategories.Add((TemplateCategory)item);
else
category.Templates.Add(item);
}
return category;
}
}
}

13
src/Main/SharpDevelop/Templates/TemplateService.cs

@ -6,8 +6,8 @@ using System.Collections.Generic; @@ -6,8 +6,8 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.Utils;
namespace ICSharpCode.SharpDevelop.Templates
{
@ -38,14 +38,15 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -38,14 +38,15 @@ namespace ICSharpCode.SharpDevelop.Templates
{
var items = SD.AddInTree.BuildItems<TemplateBase>(TemplatePath, this, false);
var categories = items.OfType<TemplateCategory>().ToList();
foreach (ICategory classicTemplate in items.Except(categories)) {
foreach (var classicTemplate in items.Except(categories)) {
// compatibility with the SD <=4.x way of adding templates:
// define category+subcategory in the .xft/.xpt file,
// and the category gets created automatically
var cat = GetOrCreateClassicCategory(categories, classicTemplate.Category);
if (!string.IsNullOrEmpty(classicTemplate.Subcategory))
cat = GetOrCreateClassicCategory(cat.Subcategories, classicTemplate.Subcategory);
cat.Templates.Add((TemplateBase)classicTemplate);
ICategory classicCategory = (ICategory)classicTemplate;
var cat = GetOrCreateClassicCategory(categories, classicCategory.Category);
if (!string.IsNullOrEmpty(classicCategory.Subcategory))
cat = GetOrCreateClassicCategory(cat.Subcategories, classicCategory.Subcategory);
cat.Templates.Add(classicTemplate);
}
return categories;
}

Loading…
Cancel
Save