From 571a8d08bba6cc0d41b8cfcbd3efa36e20257ea1 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 4 Apr 2013 05:34:26 +0200 Subject: [PATCH] Move all code related to file/project templates to SharpDevelop.Templates. --- .gitignore | 2 +- .../Coverage/OpenCoverSettingsTestFixture.cs | 1 - .../Test/Utils/MockCSharpProject.cs | 1 - .../Test/Helpers/MSBuildProjectHelper.cs | 1 - .../Test/Helpers/TestableProject.cs | 1 - .../AspNet.Mvc/Test/Src/WebProjectTests.cs | 1 - .../Project/Src/CSharpProjectBinding.cs | 1 - .../Src/Parser/CSharpFullParseInformation.cs | 23 +++-- .../Project/Src/Project/CSharpProject.cs | 1 - .../CppBinding/CppProjectBinding.cs | 1 - .../CppBinding/Project/CppProject.cs | 1 - .../FSharpBinding/FSharpProject.cs | 1 - .../Project/Src/Project/WixProject.cs | 1 - .../Project/Src/WixProjectBinding.cs | 1 - .../Test/Gui/AddWixProjectNodeTestFixture.cs | 1 - .../Gui/DeleteWixExtensionNodeTestFixture.cs | 1 - .../Gui/DeleteWixLibraryNodeTestFixture.cs | 1 - .../WixProjectWithLibraryItemsTestFixture.cs | 1 - ...ctWithUnexpandedLibraryItemsTestFixture.cs | 1 - ...ProjectWithWixExtensionItemsTestFixture.cs | 1 - .../Project/AddWixExtensionTestFixture.cs | 1 - .../Test/Project/AddWixLibraryTestFixture.cs | 1 - .../CreateNewWixProjectObjectTestFixture.cs | 1 - .../Test/Project/CreateWixProjectItemTests.cs | 1 - .../Test/Project/WixInstallerPathTests.cs | 1 - ...odeBuilderCanBuildWixProjectTestFixture.cs | 1 - .../Test/Utils/WixBindingTestsHelper.cs | 1 - .../Utils/WixProjectWithOverriddenSave.cs | 1 - .../InstallProjectTemplatePackagesCommand.cs | 1 - .../Test/Src/Helpers/ProjectHelper.cs | 1 - .../Test/Src/Helpers/TestableProject.cs | 1 - ...tallProjectTemplatePackagesCommandTests.cs | 1 - .../Test/Helpers/ProjectHelper.cs | 1 - .../Test/Helpers/TestableProject.cs | 1 - ...TextTemplatingAssemblyPathResolverTests.cs | 1 - .../TextTemplatingAssemblyResolverTests.cs | 1 - .../Project/ICSharpCode.SharpDevelop.csproj | 17 +--- .../BooleanTypeConverter.cs | 0 .../Components/SideBar/TextEditorSideBar.cs | 7 +- .../Project/Src/Gui/Dialogs/NewFileDialog.cs | 2 - .../Src/Gui/Dialogs/NewProjectDialog.cs | 1 - .../EditStandardHeaderPanel.xaml.cs | 2 +- .../Commands/FolderNodeCommands.cs | 1 - .../Src/Internal/Templates/StandardHeaders.cs | 2 +- .../StringParserPropertyContainer.cs | 2 +- .../Templates}/TemplateCategoryComparer.cs | 3 +- .../TemplateCategorySortOrderFile.cs | 2 +- .../Src/Internal/Templates/TextTemplate.cs | 84 ------------------ .../Project/Src/Project/AbstractProject.cs | 1 - .../Project/Converter/LanguageConverter.cs | 1 - .../ProjectBinding/IProjectBinding.cs | 1 - .../Project/Templates/ITemplateService.cs | 5 ++ .../Base/Project/Templates/TextTemplate.cs | 79 +++++++++++++++++ .../Project/Util/SharpDevelopExtensions.cs | 85 ++++++++++++++++++- .../Test/Templates/CategorySortOrderTests.cs | 9 +- .../FileTemplateCategoryComparerTests.cs | 3 +- .../ProjectTemplateCategoryComparerTests.cs | 3 +- .../WebReferences/WebReferenceTestHelper.cs | 1 - src/Main/SharpDevelop/Services/UIService.cs | 7 +- src/Main/SharpDevelop/SharpDevelop.csproj | 12 +++ .../CustomizationObject}/LocalizedProperty.cs | 0 .../LocalizedTypeDescriptor.cs | 4 +- .../TemplateTypeConverter.cs | 4 +- .../Templates/File/FileDescriptionTemplate.cs | 3 +- .../Templates/File/FileTemplateImpl.cs} | 3 +- .../Templates/File/ScriptRunner.cs | 2 +- .../Templates/Project/ProjectDescriptor.cs | 3 +- .../Templates/Project/ProjectTemplateImpl.cs} | 2 +- .../Templates/Project/SolutionDescriptor.cs | 3 +- .../SharpDevelop/Templates/TemplateService.cs | 28 ++++-- 70 files changed, 254 insertions(+), 187 deletions(-) rename src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/{CustomTypeConverter => }/BooleanTypeConverter.cs (100%) rename src/Main/Base/Project/Src/{Gui/Components/LocalizedPropertyGrid => Internal/Templates}/StringParserPropertyContainer.cs (96%) rename src/Main/Base/Project/Src/{Gui/Dialogs => Internal/Templates}/TemplateCategoryComparer.cs (93%) delete mode 100644 src/Main/Base/Project/Src/Internal/Templates/TextTemplate.cs create mode 100644 src/Main/Base/Project/Templates/TextTemplate.cs rename src/Main/{Base/Project/Src/Gui/Components/LocalizedPropertyGrid => SharpDevelop/Templates/CustomizationObject}/LocalizedProperty.cs (100%) rename src/Main/{Base/Project/Src/Gui/Components/LocalizedPropertyGrid => SharpDevelop/Templates/CustomizationObject}/LocalizedTypeDescriptor.cs (95%) rename src/Main/{Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter => SharpDevelop/Templates/CustomizationObject}/TemplateTypeConverter.cs (95%) rename src/Main/{Base/Project/Src/Internal => SharpDevelop}/Templates/File/FileDescriptionTemplate.cs (97%) rename src/Main/{Base/Project/Src/Internal/Templates/File/FileTemplate.cs => SharpDevelop/Templates/File/FileTemplateImpl.cs} (99%) rename src/Main/{Base/Project/Src/Internal => SharpDevelop}/Templates/File/ScriptRunner.cs (98%) rename src/Main/{Base/Project/Src/Internal => SharpDevelop}/Templates/Project/ProjectDescriptor.cs (99%) rename src/Main/{Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs => SharpDevelop/Templates/Project/ProjectTemplateImpl.cs} (99%) rename src/Main/{Base/Project/Src/Internal => SharpDevelop}/Templates/Project/SolutionDescriptor.cs (97%) diff --git a/.gitignore b/.gitignore index 6c257bad2c..d8e1a848b8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ bin/ /src/Tools/UpdateAssemblyInfo/bin /src/Setup/SharpDevelop.Setup.wixproj.user /src/Main/ICSharpCode.SharpDevelop.Sda/ICSharpCode.SharpDevelop.Sda.dll.config -/src/Main/SharpDevelop/SharpDevelop.exe.config +/src/Main/SharpDevelop/app.config /src/Main/GlobalAssemblyInfo.cs /src/AddIns/Misc/UsageDataCollector/UsageDataCollector.AddIn/AnalyticsMonitor.AppProperties.cs diff --git a/src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs b/src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs index 5b9422bdd7..62fb020449 100644 --- a/src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs +++ b/src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs @@ -9,7 +9,6 @@ using System.Xml; using ICSharpCode.CodeCoverage; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using NUnit.Framework; using Rhino.Mocks; diff --git a/src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs b/src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs index 277fdde2cc..4230cf99bb 100644 --- a/src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs +++ b/src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs @@ -6,7 +6,6 @@ using ICSharpCode.Core; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem.Implementation; using ICSharpCode.NRefactory.CSharp; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Rhino.Mocks; diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MSBuildProjectHelper.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MSBuildProjectHelper.cs index c23599425b..0c365daa19 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MSBuildProjectHelper.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MSBuildProjectHelper.cs @@ -3,7 +3,6 @@ using System; using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Rhino.Mocks; diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs index 94efb6d918..fa29fb0122 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs @@ -4,7 +4,6 @@ using System; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Rhino.Mocks; using Dom = ICSharpCode.SharpDevelop.Dom; diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/WebProjectTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/WebProjectTests.cs index 13cc2f4abd..373e3c444b 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/WebProjectTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/WebProjectTests.cs @@ -10,7 +10,6 @@ using System.Xml.Linq; using AspNet.Mvc.Tests.Helpers; using ICSharpCode.AspNet.Mvc; using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using NUnit.Framework; using Rhino.Mocks; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpProjectBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpProjectBinding.cs index 7e7f3fbe5f..14ddba17a5 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpProjectBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpProjectBinding.cs @@ -3,7 +3,6 @@ using System; using System.Xml; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; namespace CSharpBinding diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpFullParseInformation.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpFullParseInformation.cs index 94744c032f..0cb0b92e44 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpFullParseInformation.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpFullParseInformation.cs @@ -17,7 +17,7 @@ namespace CSharpBinding.Parser { public class CSharpFullParseInformation : ParseInformation { - readonly SyntaxTree compilationUnit; + readonly SyntaxTree syntaxTree; internal List newFoldings; public CSharpFullParseInformation(CSharpUnresolvedFile unresolvedFile, ITextSourceVersion parsedVersion, SyntaxTree compilationUnit) @@ -27,7 +27,7 @@ namespace CSharpBinding.Parser throw new ArgumentNullException("unresolvedFile"); if (compilationUnit == null) throw new ArgumentNullException("compilationUnit"); - this.compilationUnit = compilationUnit; + this.syntaxTree = compilationUnit; } public new CSharpUnresolvedFile UnresolvedFile { @@ -35,14 +35,25 @@ namespace CSharpBinding.Parser } public SyntaxTree SyntaxTree { - get { return compilationUnit; } + get { return syntaxTree; } } + static readonly object ResolverCacheKey = new object(); + public CSharpAstResolver GetResolver(ICompilation compilation) { - return (CSharpAstResolver)compilation.CacheManager.GetOrAddShared( - this, _ => new CSharpAstResolver(compilation, compilationUnit, UnresolvedFile) - ); + // Cache the resolver within the compilation. + // (caching in the parse information could prevent the compilation from being garbage-collected) + + // Also, don't cache CSharpAstResolvers for every file - doing so would require too much memory, + // and we rarely usually only need to access the same file several times. + // So we use a static key to get the resolver, and verify that it belongs to this parse information. + var resolver = compilation.CacheManager.GetShared(ResolverCacheKey) as CSharpAstResolver; + if (resolver == null || resolver.RootNode != syntaxTree || resolver.UnresolvedFile != UnresolvedFile) { + resolver = new CSharpAstResolver(compilation, syntaxTree, UnresolvedFile); + compilation.CacheManager.SetShared(ResolverCacheKey, resolver); + } + return resolver; } public override IEnumerable GetFoldings(IDocument document, out int firstErrorOffset) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs index 6897e02629..28b01e331f 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs @@ -12,7 +12,6 @@ using ICSharpCode.Core; using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project.Converter; using ICSharpCode.SharpDevelop.Refactoring; diff --git a/src/AddIns/BackendBindings/CppBinding/CppBinding/CppProjectBinding.cs b/src/AddIns/BackendBindings/CppBinding/CppBinding/CppProjectBinding.cs index 34a7a2a44c..9ead7cd0d7 100644 --- a/src/AddIns/BackendBindings/CppBinding/CppBinding/CppProjectBinding.cs +++ b/src/AddIns/BackendBindings/CppBinding/CppBinding/CppProjectBinding.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using ICSharpCode.CppBinding.Project; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; namespace ICSharpCode.CppBinding diff --git a/src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs b/src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs index dfd4af432c..5da2e8ade0 100644 --- a/src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs +++ b/src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs @@ -8,7 +8,6 @@ using System.Linq; using ICSharpCode.Core; using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.TypeSystem; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Microsoft.Build.Construction; using Microsoft.Build.Exceptions; diff --git a/src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs b/src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs index a52956f722..c8c65bb3bb 100644 --- a/src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs +++ b/src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Microsoft.Build.Exceptions; using System.IO; diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs index 604f898590..1f075f5677 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs @@ -10,7 +10,6 @@ using System.IO; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; namespace ICSharpCode.WixBinding diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixProjectBinding.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixProjectBinding.cs index feedad5a38..6d471fda51 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixProjectBinding.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixProjectBinding.cs @@ -3,7 +3,6 @@ using System; using System.Xml; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; namespace ICSharpCode.WixBinding diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Gui/AddWixProjectNodeTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Gui/AddWixProjectNodeTestFixture.cs index 8ef957a597..dfdf50cf18 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Gui/AddWixProjectNodeTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Gui/AddWixProjectNodeTestFixture.cs @@ -3,7 +3,6 @@ using ICSharpCode.Core; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixExtensionNodeTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixExtensionNodeTestFixture.cs index f2b9281a55..816bc26be7 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixExtensionNodeTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixExtensionNodeTestFixture.cs @@ -3,7 +3,6 @@ using ICSharpCode.Core; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using Microsoft.Build.Evaluation; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixLibraryNodeTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixLibraryNodeTestFixture.cs index ddf6683a14..c3b0710e22 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixLibraryNodeTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixLibraryNodeTestFixture.cs @@ -5,7 +5,6 @@ using System; using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using Microsoft.Build.Evaluation; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithLibraryItemsTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithLibraryItemsTestFixture.cs index 023233ad59..44764c83eb 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithLibraryItemsTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithLibraryItemsTestFixture.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithUnexpandedLibraryItemsTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithUnexpandedLibraryItemsTestFixture.cs index 13aacb715d..a560214b7f 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithUnexpandedLibraryItemsTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithUnexpandedLibraryItemsTestFixture.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithWixExtensionItemsTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithWixExtensionItemsTestFixture.cs index 5615de5d32..4fcc45bab8 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithWixExtensionItemsTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithWixExtensionItemsTestFixture.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixExtensionTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixExtensionTestFixture.cs index 9f29ce3001..e0d2e3d092 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixExtensionTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixExtensionTestFixture.cs @@ -4,7 +4,6 @@ using System; using System.Linq; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixLibraryTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixLibraryTestFixture.cs index b640b11365..0f1bc2ee8f 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixLibraryTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixLibraryTestFixture.cs @@ -4,7 +4,6 @@ using System; using System.Linq; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateNewWixProjectObjectTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateNewWixProjectObjectTestFixture.cs index 3779eb487a..607008b27c 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateNewWixProjectObjectTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateNewWixProjectObjectTestFixture.cs @@ -6,7 +6,6 @@ using System.Linq; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using Microsoft.Build.Construction; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateWixProjectItemTests.cs b/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateWixProjectItemTests.cs index 1e73ce5687..b7738b2489 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateWixProjectItemTests.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Project/CreateWixProjectItemTests.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Generic; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs b/src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs index 942bd3f2f6..261a24fb0e 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs @@ -3,7 +3,6 @@ using System; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Project/WixNodeBuilderCanBuildWixProjectTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Project/WixNodeBuilderCanBuildWixProjectTestFixture.cs index a47b813c1c..5361475c55 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Project/WixNodeBuilderCanBuildWixProjectTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Project/WixNodeBuilderCanBuildWixProjectTestFixture.cs @@ -3,7 +3,6 @@ using System; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using NUnit.Framework; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixBindingTestsHelper.cs b/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixBindingTestsHelper.cs index 3ef3e12c45..ee2c134e25 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixBindingTestsHelper.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixBindingTestsHelper.cs @@ -9,7 +9,6 @@ using System.Resources; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using Microsoft.Build.Evaluation; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixProjectWithOverriddenSave.cs b/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixProjectWithOverriddenSave.cs index 79fd109074..85f7616050 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixProjectWithOverriddenSave.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Utils/WixProjectWithOverriddenSave.cs @@ -1,7 +1,6 @@ // Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.WixBinding; using System; diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/InstallProjectTemplatePackagesCommand.cs b/src/AddIns/Misc/PackageManagement/Project/Src/InstallProjectTemplatePackagesCommand.cs index 01aa38043a..10dd20cb6a 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/InstallProjectTemplatePackagesCommand.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/InstallProjectTemplatePackagesCommand.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Linq; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Templates; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs index 03f3a1b0ee..92330a124a 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Rhino.Mocks; diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs index 69ca7d1965..a0957120ec 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; namespace PackageManagement.Tests.Helpers diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/InstallProjectTemplatePackagesCommandTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/InstallProjectTemplatePackagesCommandTests.cs index 4921d69112..93636d46f1 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/InstallProjectTemplatePackagesCommandTests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/InstallProjectTemplatePackagesCommandTests.cs @@ -7,7 +7,6 @@ using System.Windows.Input; using ICSharpCode.PackageManagement; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Templates; using NUnit.Framework; diff --git a/src/AddIns/Misc/TextTemplating/Test/Helpers/ProjectHelper.cs b/src/AddIns/Misc/TextTemplating/Test/Helpers/ProjectHelper.cs index 28d171c5e5..662159ab92 100644 --- a/src/AddIns/Misc/TextTemplating/Test/Helpers/ProjectHelper.cs +++ b/src/AddIns/Misc/TextTemplating/Test/Helpers/ProjectHelper.cs @@ -3,7 +3,6 @@ using System; using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Microsoft.Build.Evaluation; using Rhino.Mocks; diff --git a/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableProject.cs b/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableProject.cs index 3e021417c9..2aac543b39 100644 --- a/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableProject.cs +++ b/src/AddIns/Misc/TextTemplating/Test/Helpers/TestableProject.cs @@ -4,7 +4,6 @@ using System; using System.CodeDom.Compiler; using ICSharpCode.SharpDevelop.Dom; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using Microsoft.CSharp; diff --git a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs index 6071dd3f8f..47466354c9 100644 --- a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs +++ b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs @@ -4,7 +4,6 @@ using System; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Parser; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.TextTemplating; diff --git a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyResolverTests.cs b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyResolverTests.cs index 8c332f1f97..2b223c3e24 100644 --- a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyResolverTests.cs +++ b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyResolverTests.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.TextTemplating; using NUnit.Framework; diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 663e5e01a2..c10a360378 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -213,7 +213,7 @@ FontSelector.xaml Code - + @@ -234,6 +234,8 @@ OutputWindowOptionsPanel.xaml Code + + @@ -244,6 +246,7 @@ + @@ -465,10 +468,6 @@ - - - - @@ -549,8 +548,6 @@ - - @@ -634,12 +631,7 @@ - - - - - @@ -774,7 +766,6 @@ - diff --git a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/BooleanTypeConverter.cs b/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/BooleanTypeConverter.cs similarity index 100% rename from src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/BooleanTypeConverter.cs rename to src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/BooleanTypeConverter.cs diff --git a/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs b/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs index 1a8d9dfab1..5a0794aa04 100644 --- a/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs +++ b/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs @@ -4,9 +4,10 @@ using System; using System.IO; using System.Xml; + using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Templates; using ICSharpCode.SharpDevelop.Widgets.SideBar; -using ICSharpCode.SharpDevelop.Internal.Templates; namespace ICSharpCode.SharpDevelop.Gui { @@ -36,11 +37,11 @@ namespace ICSharpCode.SharpDevelop.Gui private void Initialize() { - foreach (TextTemplate template in TextTemplate.TextTemplates) { + foreach (TextTemplateGroup template in SD.Templates.TextTemplates) { SideTab tab = new SideTab(this, template.Name); tab.DisplayName = StringParser.Parse(tab.Name); tab.CanSaved = false; - foreach (TextTemplate.Entry entry in template.Entries) { + foreach (TextTemplate entry in template.Entries) { tab.Items.Add(SideTabItemFactory.CreateSideTabItem(entry.Display, entry.Value)); } tab.CanBeDeleted = tab.CanDragDrop = false; diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs index abe7a71a39..c5c3ff4e4d 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs @@ -20,8 +20,6 @@ using ICSharpCode.SharpDevelop.Templates; namespace ICSharpCode.SharpDevelop.Gui { - using ICSharpCode.SharpDevelop.Internal.Templates; - /// /// This class is for creating a new "empty" file /// diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs index b6dc7ee2a2..835693d872 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs @@ -9,7 +9,6 @@ using System.Linq; using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Gui; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project.Commands; using ICSharpCode.SharpDevelop.WinForms; using Microsoft.Build.Exceptions; diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/EditStandardHeaderPanel.xaml.cs b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/EditStandardHeaderPanel.xaml.cs index 1765d396a6..95393c40ec 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/EditStandardHeaderPanel.xaml.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/EditStandardHeaderPanel.xaml.cs @@ -5,7 +5,7 @@ using System; using System.Windows.Controls; using System.Windows.Media; -using ICSharpCode.SharpDevelop.Internal.Templates; +using ICSharpCode.SharpDevelop.Templates; namespace ICSharpCode.SharpDevelop.Gui.OptionPanels { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs index e25dbdba07..9c718b57fc 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs @@ -8,7 +8,6 @@ using System.IO; using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Gui; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Templates; namespace ICSharpCode.SharpDevelop.Project.Commands diff --git a/src/Main/Base/Project/Src/Internal/Templates/StandardHeaders.cs b/src/Main/Base/Project/Src/Internal/Templates/StandardHeaders.cs index b1500704b6..606344f3dd 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/StandardHeaders.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/StandardHeaders.cs @@ -8,7 +8,7 @@ using System.IO; using System.Xml; using ICSharpCode.Core; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { public class StandardHeader { diff --git a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/StringParserPropertyContainer.cs b/src/Main/Base/Project/Src/Internal/Templates/StringParserPropertyContainer.cs similarity index 96% rename from src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/StringParserPropertyContainer.cs rename to src/Main/Base/Project/Src/Internal/Templates/StringParserPropertyContainer.cs index 487169f916..39d988291a 100644 --- a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/StringParserPropertyContainer.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/StringParserPropertyContainer.cs @@ -7,7 +7,7 @@ using System.Collections.Generic; using ICSharpCode.Core; -namespace ICSharpCode.SharpDevelop.Gui +namespace ICSharpCode.SharpDevelop.Templates { /// /// Contains values for localized properties. diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/TemplateCategoryComparer.cs b/src/Main/Base/Project/Src/Internal/Templates/TemplateCategoryComparer.cs similarity index 93% rename from src/Main/Base/Project/Src/Gui/Dialogs/TemplateCategoryComparer.cs rename to src/Main/Base/Project/Src/Internal/Templates/TemplateCategoryComparer.cs index 946b91f2b9..ecd20b048e 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/TemplateCategoryComparer.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/TemplateCategoryComparer.cs @@ -3,9 +3,8 @@ using System; using System.Collections; -using ICSharpCode.SharpDevelop.Internal.Templates; -namespace ICSharpCode.SharpDevelop.Gui +namespace ICSharpCode.SharpDevelop.Templates { public interface ICategory { diff --git a/src/Main/Base/Project/Src/Internal/Templates/TemplateCategorySortOrderFile.cs b/src/Main/Base/Project/Src/Internal/Templates/TemplateCategorySortOrderFile.cs index 936301b341..fbfbf1665d 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/TemplateCategorySortOrderFile.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/TemplateCategorySortOrderFile.cs @@ -8,7 +8,7 @@ using System.Xml; using ICSharpCode.Core; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { /// /// File that defines the sort order for the file and project template diff --git a/src/Main/Base/Project/Src/Internal/Templates/TextTemplate.cs b/src/Main/Base/Project/Src/Internal/Templates/TextTemplate.cs deleted file mode 100644 index 392b09e340..0000000000 --- a/src/Main/Base/Project/Src/Internal/Templates/TextTemplate.cs +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) -// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) - -using System; -using System.Collections.Generic; -using System.IO; -using System.Xml; - -using ICSharpCode.Core; - -namespace ICSharpCode.SharpDevelop.Internal.Templates -{ - /// - /// This class defines and holds text templates - /// they're a bit similar than code templates, but they're - /// not inserted automaticaly - /// - public class TextTemplate - { - public static List TextTemplates = new List(); - - string name = null; - List entries = new List(); - - public string Name { - get { - return name; - } - } - - public List Entries { - get { - return entries; - } - } - - public class Entry - { - public string Display; - public string Value; - - public Entry(XmlElement el) - { - this.Display = el.Attributes["display"].InnerText; - this.Value = el.Attributes["value"].InnerText; - } - - public override string ToString() - { - return Display; - } - } - - public TextTemplate(string filename) - { - try { - XmlDocument doc = new XmlDocument(); - doc.Load(filename); - - name = doc.DocumentElement.Attributes["name"].InnerText; - - XmlNodeList nodes = doc.DocumentElement.ChildNodes; - foreach (XmlElement entrynode in nodes) { - entries.Add(new Entry(entrynode)); - } - } catch (Exception e) { - throw new System.IO.FileLoadException("Can't load standard sidebar template file", filename, e); - } - } - - static void LoadTextTemplate(string filename) - { - TextTemplates.Add(new TextTemplate(filename)); - } - - static TextTemplate() - { - List files = FileUtility.SearchDirectory(Path.Combine(PropertyService.DataDirectory, "options", "textlib"), "*.xml"); - foreach (string file in files) { - LoadTextTemplate(file); - } - } - } -} diff --git a/src/Main/Base/Project/Src/Project/AbstractProject.cs b/src/Main/Base/Project/Src/Project/AbstractProject.cs index 8045cf6f0c..7f63788fdb 100644 --- a/src/Main/Base/Project/Src/Project/AbstractProject.cs +++ b/src/Main/Base/Project/Src/Project/AbstractProject.cs @@ -19,7 +19,6 @@ using ICSharpCode.SharpDevelop.Debugging; using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui.OptionPanels; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Parser; using ICSharpCode.SharpDevelop.Refactoring; using ICSharpCode.SharpDevelop.Workbench; diff --git a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs index 3e64fe4b06..0fc4508719 100644 --- a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs +++ b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs @@ -12,7 +12,6 @@ using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.NRefactory; using ICSharpCode.SharpDevelop.Gui; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project.Commands; using Microsoft.Build.Construction; diff --git a/src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs b/src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs index 7692362238..119bbe46ed 100644 --- a/src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs +++ b/src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; -using ICSharpCode.SharpDevelop.Internal.Templates; namespace ICSharpCode.SharpDevelop.Project { diff --git a/src/Main/Base/Project/Templates/ITemplateService.cs b/src/Main/Base/Project/Templates/ITemplateService.cs index d9163fa19f..099162dbe1 100644 --- a/src/Main/Base/Project/Templates/ITemplateService.cs +++ b/src/Main/Base/Project/Templates/ITemplateService.cs @@ -26,6 +26,11 @@ namespace ICSharpCode.SharpDevelop.Templates /// void UpdateTemplates(); + /// + /// Gets the list of text templates. + /// + IEnumerable TextTemplates { get; } + /// /// Loads a file template (.xft or .xpt file) from disk. /// diff --git a/src/Main/Base/Project/Templates/TextTemplate.cs b/src/Main/Base/Project/Templates/TextTemplate.cs new file mode 100644 index 0000000000..8da09b4c05 --- /dev/null +++ b/src/Main/Base/Project/Templates/TextTemplate.cs @@ -0,0 +1,79 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using System.Collections.Generic; +using System.IO; +using System.Xml; + +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.Templates +{ + /// + /// This class defines and holds text templates + /// they're a bit similar than code templates, but they're + /// not inserted automaticaly. + /// They are shown in the Tools pad (TextEditorSideBar). + /// + public class TextTemplateGroup + { + string name; + IReadOnlyList entries; + + public string Name { + get { return name; } + } + + public IReadOnlyList Entries { + get { return entries; } + } + + public TextTemplateGroup(string name, IReadOnlyList entries) + { + this.name = name; + this.entries = entries; + } + + internal static TextTemplateGroup Load(string filename) + { + try { + XmlDocument doc = new XmlDocument(); + doc.Load(filename); + + string name = doc.DocumentElement.Attributes["name"].InnerText; + + List entries = new List(); + foreach (XmlElement el in doc.DocumentElement.ChildNodes) { + string display = el.Attributes["display"].InnerText; + string value = el.Attributes["value"].InnerText; + entries.Add(new TextTemplate(display, value)); + } + return new TextTemplateGroup(name, entries); + } catch (Exception e) { + throw new System.IO.FileLoadException("Can't load standard sidebar template file", filename, e); + } + } + } + + public class TextTemplate + { + public string Display { get; private set; } + public string Value { get; private set; } + + public TextTemplate(string display, string value) + { + if (display == null) + throw new ArgumentNullException("display"); + if (value == null) + throw new ArgumentNullException("value"); + this.Display = display; + this.Value = value; + } + + public override string ToString() + { + return Display; + } + } +} diff --git a/src/Main/Base/Project/Util/SharpDevelopExtensions.cs b/src/Main/Base/Project/Util/SharpDevelopExtensions.cs index 4b482def61..86718242e7 100644 --- a/src/Main/Base/Project/Util/SharpDevelopExtensions.cs +++ b/src/Main/Base/Project/Util/SharpDevelopExtensions.cs @@ -262,11 +262,92 @@ namespace ICSharpCode.SharpDevelop return result; } - public static IEnumerable DistinctBy(this IEnumerable input, Func keySelector) + public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) where K : IEquatable { - return input.Distinct(KeyComparer.Create(keySelector)); + // Don't just use .Distinct(KeyComparer.Create(keySelector)) - that would evaluate the keySelector multiple times. + var hashSet = new HashSet(); + foreach (var element in source) { + if (hashSet.Add(keySelector(element))) { + yield return element; + } + } } + /// + /// Returns the minimum element. + /// + /// The input sequence is empty + public static T MinBy(this IEnumerable source, Func keySelector) where K : IComparable + { + return source.MinBy(keySelector, Comparer.Default); + } + + /// + /// Returns the minimum element. + /// + /// The input sequence is empty + public static T MinBy(this IEnumerable source, Func keySelector, IComparer keyComparer) + { + if (source == null) + throw new ArgumentNullException("source"); + if (keySelector == null) + throw new ArgumentNullException("selector"); + if (keyComparer == null) + keyComparer = Comparer.Default; + using (var enumerator = source.GetEnumerator()) { + if (!enumerator.MoveNext()) + throw new InvalidOperationException("Sequence contains no elements"); + T minElement = enumerator.Current; + K minKey = keySelector(minElement); + while (enumerator.MoveNext()) { + T element = enumerator.Current; + K key = keySelector(element); + if (keyComparer.Compare(key, minKey) < 0) { + minElement = element; + minKey = key; + } + } + return minElement; + } + } + + /// + /// Returns the maximum element. + /// + /// The input sequence is empty + public static T MaxBy(this IEnumerable source, Func keySelector) where K : IComparable + { + return source.MaxBy(keySelector, Comparer.Default); + } + + /// + /// Returns the maximum element. + /// + /// The input sequence is empty + public static T MaxBy(this IEnumerable source, Func keySelector, IComparer keyComparer) + { + if (source == null) + throw new ArgumentNullException("source"); + if (keySelector == null) + throw new ArgumentNullException("selector"); + if (keyComparer == null) + keyComparer = Comparer.Default; + using (var enumerator = source.GetEnumerator()) { + if (!enumerator.MoveNext()) + throw new InvalidOperationException("Sequence contains no elements"); + T maxElement = enumerator.Current; + K maxKey = keySelector(maxElement); + while (enumerator.MoveNext()) { + T element = enumerator.Current; + K key = keySelector(element); + if (keyComparer.Compare(key, maxKey) > 0) { + maxElement = element; + maxKey = key; + } + } + return maxElement; + } + } /// /// Returns the index of the first element for which returns true. diff --git a/src/Main/Base/Test/Templates/CategorySortOrderTests.cs b/src/Main/Base/Test/Templates/CategorySortOrderTests.cs index 7f16dcc173..d389a3a2d6 100644 --- a/src/Main/Base/Test/Templates/CategorySortOrderTests.cs +++ b/src/Main/Base/Test/Templates/CategorySortOrderTests.cs @@ -1,14 +1,15 @@ // Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) -using ICSharpCode.SharpDevelop.Internal.Templates; -using ICSharpCode.SharpDevelop.Gui; -using ICSharpCode.SharpDevelop.Project.Dialogs; -using NUnit.Framework; using System; using System.IO; using System.Xml; +using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Project.Dialogs; +using ICSharpCode.SharpDevelop.Templates; +using NUnit.Framework; + namespace ICSharpCode.SharpDevelop.Tests.Templates { [TestFixture] diff --git a/src/Main/Base/Test/Templates/FileTemplateCategoryComparerTests.cs b/src/Main/Base/Test/Templates/FileTemplateCategoryComparerTests.cs index 30329a8b57..1f0428b353 100644 --- a/src/Main/Base/Test/Templates/FileTemplateCategoryComparerTests.cs +++ b/src/Main/Base/Test/Templates/FileTemplateCategoryComparerTests.cs @@ -1,10 +1,11 @@ // Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) +using System; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Project.Dialogs; +using ICSharpCode.SharpDevelop.Templates; using NUnit.Framework; -using System; namespace ICSharpCode.SharpDevelop.Tests.Templates { diff --git a/src/Main/Base/Test/Templates/ProjectTemplateCategoryComparerTests.cs b/src/Main/Base/Test/Templates/ProjectTemplateCategoryComparerTests.cs index a16b7e2047..4abec3e5ff 100644 --- a/src/Main/Base/Test/Templates/ProjectTemplateCategoryComparerTests.cs +++ b/src/Main/Base/Test/Templates/ProjectTemplateCategoryComparerTests.cs @@ -1,10 +1,11 @@ // Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) +using System; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Project.Dialogs; +using ICSharpCode.SharpDevelop.Templates; using NUnit.Framework; -using System; namespace ICSharpCode.SharpDevelop.Tests.Templates { diff --git a/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs b/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs index 0b5de5ad38..8f919a86d4 100644 --- a/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs +++ b/src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs @@ -2,7 +2,6 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using ICSharpCode.NRefactory.TypeSystem; -using ICSharpCode.SharpDevelop.Internal.Templates; using System; using System.Collections.Generic; using ICSharpCode.Core; diff --git a/src/Main/SharpDevelop/Services/UIService.cs b/src/Main/SharpDevelop/Services/UIService.cs index facda98d28..d7e958b065 100644 --- a/src/Main/SharpDevelop/Services/UIService.cs +++ b/src/Main/SharpDevelop/Services/UIService.cs @@ -8,7 +8,6 @@ using System.Windows.Forms; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Gui; -using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Project.Commands; using ICSharpCode.SharpDevelop.Project.Dialogs; @@ -32,6 +31,9 @@ namespace ICSharpCode.SharpDevelop public FileTemplateResult ShowNewFileDialog(IProject project, DirectoryName directory, IEnumerable templates) { + #if DEBUG + SD.Templates.UpdateTemplates(); + #endif using (NewFileDialog nfd = new NewFileDialog(project, directory, templates ?? SD.Templates.FileTemplates)) { if (nfd.ShowDialog(SD.WinForms.MainWin32Window) == DialogResult.OK) return nfd.result; @@ -42,6 +44,9 @@ namespace ICSharpCode.SharpDevelop public ProjectTemplateResult ShowNewProjectDialog(ISolutionFolder solutionFolder, IEnumerable templates) { + #if DEBUG + SD.Templates.UpdateTemplates(); + #endif using (NewProjectDialog npdlg = new NewProjectDialog(createNewSolution: solutionFolder == null, projectTemplates: templates ?? SD.Templates.ProjectTemplates)) { npdlg.SolutionFolder = solutionFolder; if (solutionFolder != null) { diff --git a/src/Main/SharpDevelop/SharpDevelop.csproj b/src/Main/SharpDevelop/SharpDevelop.csproj index c7d11ac22d..8c085cdfd9 100644 --- a/src/Main/SharpDevelop/SharpDevelop.csproj +++ b/src/Main/SharpDevelop/SharpDevelop.csproj @@ -150,6 +150,15 @@ + + + + + + + + + @@ -291,6 +300,9 @@ + + + diff --git a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedProperty.cs b/src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedProperty.cs similarity index 100% rename from src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedProperty.cs rename to src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedProperty.cs diff --git a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedTypeDescriptor.cs b/src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedTypeDescriptor.cs similarity index 95% rename from src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedTypeDescriptor.cs rename to src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedTypeDescriptor.cs index ade7ce895e..62ec13579d 100644 --- a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedTypeDescriptor.cs +++ b/src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedTypeDescriptor.cs @@ -5,9 +5,9 @@ using System; using System.Collections; using System.ComponentModel; -namespace ICSharpCode.SharpDevelop.Gui +namespace ICSharpCode.SharpDevelop.Templates { - public class LocalizedTypeDescriptor : ICustomTypeDescriptor + class LocalizedTypeDescriptor : ICustomTypeDescriptor { string defaultProperty = null; ArrayList properties = new ArrayList(); diff --git a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/TemplateTypeConverter.cs b/src/Main/SharpDevelop/Templates/CustomizationObject/TemplateTypeConverter.cs similarity index 95% rename from src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/TemplateTypeConverter.cs rename to src/Main/SharpDevelop/Templates/CustomizationObject/TemplateTypeConverter.cs index 8987dcbc80..0f8e6d55c7 100644 --- a/src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/TemplateTypeConverter.cs +++ b/src/Main/SharpDevelop/Templates/CustomizationObject/TemplateTypeConverter.cs @@ -6,9 +6,7 @@ using System.Collections; using System.ComponentModel; using System.Globalization; -using ICSharpCode.SharpDevelop.Internal.Templates; - -namespace ICSharpCode.SharpDevelop.Gui +namespace ICSharpCode.SharpDevelop.Templates { internal class CustomTypeConverter : TypeConverter { diff --git a/src/Main/Base/Project/Src/Internal/Templates/File/FileDescriptionTemplate.cs b/src/Main/SharpDevelop/Templates/File/FileDescriptionTemplate.cs similarity index 97% rename from src/Main/Base/Project/Src/Internal/Templates/File/FileDescriptionTemplate.cs rename to src/Main/SharpDevelop/Templates/File/FileDescriptionTemplate.cs index 2bdad85a0d..1993fa2efa 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/File/FileDescriptionTemplate.cs +++ b/src/Main/SharpDevelop/Templates/File/FileDescriptionTemplate.cs @@ -9,9 +9,8 @@ using System.Xml; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Project; -using ICSharpCode.SharpDevelop.Templates; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { internal class FileDescriptionTemplate { diff --git a/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs b/src/Main/SharpDevelop/Templates/File/FileTemplateImpl.cs similarity index 99% rename from src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs rename to src/Main/SharpDevelop/Templates/File/FileTemplateImpl.cs index 4e2615e674..848e6d5074 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs +++ b/src/Main/SharpDevelop/Templates/File/FileTemplateImpl.cs @@ -12,9 +12,8 @@ using System.Xml; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Project; -using ICSharpCode.SharpDevelop.Templates; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { internal class TemplateProperty { diff --git a/src/Main/Base/Project/Src/Internal/Templates/File/ScriptRunner.cs b/src/Main/SharpDevelop/Templates/File/ScriptRunner.cs similarity index 98% rename from src/Main/Base/Project/Src/Internal/Templates/File/ScriptRunner.cs rename to src/Main/SharpDevelop/Templates/File/ScriptRunner.cs index fb7a98b2c3..b2a23885ee 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/File/ScriptRunner.cs +++ b/src/Main/SharpDevelop/Templates/File/ScriptRunner.cs @@ -11,7 +11,7 @@ using System.Text; using System.Text.RegularExpressions; using ICSharpCode.Core; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { internal class ScriptRunner { diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs b/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs similarity index 99% rename from src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs rename to src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs index 6d291c7877..7b786ad40e 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs +++ b/src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs @@ -14,11 +14,10 @@ using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Parser; using ICSharpCode.SharpDevelop.Project; -using ICSharpCode.SharpDevelop.Templates; using Microsoft.Build.Exceptions; using Import = System.Collections.Generic.KeyValuePair; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { /// /// This class is used inside the solution templates for projects. diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs b/src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs similarity index 99% rename from src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs rename to src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs index 204022992e..2bd5c8b9a1 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs +++ b/src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs @@ -13,7 +13,7 @@ using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Templates; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { /// /// This class defines and holds the new project templates. diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/SolutionDescriptor.cs b/src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs similarity index 97% rename from src/Main/Base/Project/Src/Internal/Templates/Project/SolutionDescriptor.cs rename to src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs index 7c18ff82eb..6a97ec3fef 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/SolutionDescriptor.cs +++ b/src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs @@ -8,9 +8,8 @@ using System.Xml; using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Project; -using ICSharpCode.SharpDevelop.Templates; -namespace ICSharpCode.SharpDevelop.Internal.Templates +namespace ICSharpCode.SharpDevelop.Templates { internal class SolutionDescriptor { diff --git a/src/Main/SharpDevelop/Templates/TemplateService.cs b/src/Main/SharpDevelop/Templates/TemplateService.cs index 654d5bb0b2..deae24b4fc 100644 --- a/src/Main/SharpDevelop/Templates/TemplateService.cs +++ b/src/Main/SharpDevelop/Templates/TemplateService.cs @@ -8,7 +8,6 @@ using System.Linq; using System.Xml; using ICSharpCode.Core; -using ICSharpCode.SharpDevelop.Internal.Templates; namespace ICSharpCode.SharpDevelop.Templates { @@ -16,32 +15,45 @@ namespace ICSharpCode.SharpDevelop.Templates { const string TemplatePath = "/SharpDevelop/BackendBindings/Templates"; - Lazy> allTemplates; + Lazy> projectAndFileTemplates; + Lazy> textTemplates; public TemplateService() { - allTemplates = new Lazy>(LoadTemplates); + projectAndFileTemplates = new Lazy>(LoadProjectAndFileTemplates); } public IEnumerable FileTemplates { - get { return allTemplates.Value.OfType(); } + get { return projectAndFileTemplates.Value.OfType(); } } public IEnumerable ProjectTemplates { - get { return allTemplates.Value.OfType(); } + get { return projectAndFileTemplates.Value.OfType(); } } public void UpdateTemplates() { - var newTemplates = LoadTemplates(); - allTemplates = new Lazy>(() => newTemplates); + var newTemplates = LoadProjectAndFileTemplates(); + projectAndFileTemplates = new Lazy>(() => newTemplates); } - IReadOnlyList LoadTemplates() + IReadOnlyList LoadProjectAndFileTemplates() { return SD.AddInTree.BuildItems(TemplatePath, this, false); } + public IEnumerable TextTemplates { + get { return textTemplates.Value; } + } + + IReadOnlyList LoadTextTemplates() + { + var dir = PropertyService.DataDirectory.Combine(DirectoryName.Create("options/textlib")); + return SD.FileSystem.GetFiles(dir, "*.xml") + .Select(file => TextTemplateGroup.Load(file)) + .ToList(); + } + public TemplateBase LoadTemplate(FileName fileName) { var fileSystem = SD.FileSystem;