diff options
author | Lluis Sanchez <lluis@xamarin.com> | 2014-01-20 19:32:53 +0400 |
---|---|---|
committer | Lluis Sanchez Gual <lluis@xamarin.com> | 2014-10-21 18:39:14 +0400 |
commit | f73b2a9990495587d514aa1856919c21170a3940 (patch) | |
tree | 9842411ee8644ead5915a715ee7e53984a601df4 /main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectSubtypeNode.cs | |
parent | a2046b6331a271e8203df7d3d0f14500d33d60fa (diff) |
Initial drop of the new project model
Diffstat (limited to 'main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectSubtypeNode.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectSubtypeNode.cs | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectSubtypeNode.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectSubtypeNode.cs deleted file mode 100644 index 2da66dcfa6..0000000000 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectSubtypeNode.cs +++ /dev/null @@ -1,214 +0,0 @@ -// DotNetProjectSubtype.cs -// -// Author: -// Lluis Sanchez Gual <lluis@novell.com> -// -// Copyright (c) 2008 Novell, Inc (http://www.novell.com) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// -// - -using System; -using System.Linq; -using Mono.Addins; -using MonoDevelop.Projects.Formats.MSBuild; -using System.Collections.Generic; -using MonoDevelop.Core; - -namespace MonoDevelop.Projects.Extensions -{ - [ExtensionNodeChild (typeof(DotNetProjectSubtypeNodeImport), "AddImport")] - [ExtensionNodeChild (typeof(DotNetProjectSubtypeNodeImport), "RemoveImport")] - public class DotNetProjectSubtypeNode: ExtensionNode - { - #pragma warning disable 649 - - [NodeAttribute] - string guid = null; - - [NodeAttribute] - string type = null; - - [NodeAttribute] - string import = null; - - [NodeAttribute] - string extension = null; - - [NodeAttribute] - string exclude = null; - - [NodeAttribute] - bool useXBuild = false; - - [NodeAttribute] - bool requireXBuild = true; - - [NodeAttribute] - string migrationHandler; - - [NodeAttribute] - bool migrationRequired = true; - - #pragma warning restore 649 - - Type itemType; - - public string Import { - get { - return import; - } - } - - public Type Type { - get { - if (itemType == null) { - itemType = Addin.GetType (type, true); - if (!typeof(MonoDevelop.Projects.DotNetProject).IsAssignableFrom (itemType)) - throw new InvalidOperationException ("Type must be a subclass of DotNetProject"); - } - return itemType; - } - } - - public string Extension { - get { - return extension; - } - } - - public string Exclude { - get { - return exclude; - } - } - - public string Guid { - get { return guid; } - } - - public bool UseXBuild { - get { return useXBuild; } - } - - public bool RequireXBuild { - get { return useXBuild && requireXBuild; } - } - - public bool IsMigration { - get { return migrationHandler != null; } - } - - public bool IsMigrationRequired { - get { return migrationRequired; } - } - - public IDotNetSubtypeMigrationHandler MigrationHandler { - get { return (IDotNetSubtypeMigrationHandler) Addin.CreateInstance (migrationHandler); } - } - - public bool SupportsType (string guid) - { - return string.Compare (this.guid, guid, true) == 0; - } - - public DotNetProject CreateInstance (string language) - { - return (DotNetProject) Activator.CreateInstance (Type, language); - } - - public virtual bool CanHandleItem (SolutionEntityItem item) - { - return !(IsMigration && IsMigrationRequired) && Type.IsAssignableFrom (item.GetType ()); - } - - public virtual bool CanHandleType (Type type) - { - return !(IsMigration && IsMigrationRequired) && Type.IsAssignableFrom (type); - } - - public virtual bool CanHandleFile (string fileName, string typeGuid) - { - if (typeGuid != null && typeGuid.ToLower().Contains(guid.ToLower())) - return true; - if (!string.IsNullOrEmpty (extension) && System.IO.Path.GetExtension (fileName) == "." + extension) - return true; - return false; - } - - public virtual void InitializeHandler (SolutionEntityItem item) - { - MSBuildProjectHandler h = (MSBuildProjectHandler) ProjectExtensionUtil.GetItemHandler (item); - UpdateImports (item, h.TargetImports); - h.SubtypeGuids.Add (guid); - h.UseMSBuildEngineByDefault |= UseXBuild; - h.RequireMSBuildEngine |= RequireXBuild; - } - - public void UpdateImports (SolutionEntityItem item, List<string> imports) - { - DotNetProject p = (DotNetProject) item; - if (!string.IsNullOrEmpty (import)) - imports.AddRange (import.Split (':')); - if (!string.IsNullOrEmpty (exclude)) - exclude.Split (':').ToList ().ForEach (i => imports.Remove (i)); - - foreach (DotNetProjectSubtypeNodeImport iob in ChildNodes) { - if (iob.Language == p.LanguageName) { - if (iob.IsAdd) - imports.AddRange (iob.Projects.Split (':')); - else - iob.Projects.Split (':').ToList ().ForEach (i => imports.Remove (i)); - } - } - } - } - - class DotNetProjectSubtypeNodeImport: ExtensionNode - { - protected override void Read (NodeElement elem) - { - IsAdd = elem.NodeName == "AddImport"; - base.Read (elem); - } - - [NodeAttribute ("language")] - public string Language { get; set; } - - [NodeAttribute ("projects")] - public string Projects { get; set; } - - public bool IsAdd { get; private set; } - } - - public interface IDotNetSubtypeMigrationHandler - { - IEnumerable<string> FilesToBackup (string filename); - Type Migrate (IProjectLoadProgressMonitor monitor, MSBuildProject project, string fileName, string language); - bool CanPromptForMigration { get; } - MigrationType PromptForMigration (IProjectLoadProgressMonitor monitor, MSBuildProject project, string fileName, string language); - } - - public enum MigrationType { - Ignore, - Migrate, - BackupAndMigrate, - } -} |