Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml10
-rw-r--r--main/src/addins/CSharpBinding/CSharpBinding.addin.xml4
-rw-r--r--main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml2
-rw-r--r--main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml4
-rw-r--r--main/src/addins/MonoDevelop.Autotools/MakefileProject.cs6
-rw-r--r--main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj5
-rw-r--r--main/src/addins/MonoDevelop.Autotools/packages.config4
-rw-r--r--main/src/addins/VBNetBinding/VBNetBinding.addin.xml7
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml9
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectTypeNode.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/ItemTypeCondition.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemHandler.cs88
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemTypeNode.cs6
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/TypeTagCondition.cs69
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs5
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs5
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs13
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs5
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ItemCollection.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs5
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs13
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceObject.cs20
-rw-r--r--main/src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/FileTemplate.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ParentProjectFileTemplateCondition.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs2
31 files changed, 158 insertions, 166 deletions
diff --git a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
index 34b4087a3e..ed70da8301 100644
--- a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
+++ b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
@@ -189,24 +189,24 @@
<ProjectFlavor
guid="{603C0E0B-DB56-11DC-BE95-000D561079B0}"
type="MonoDevelop.AspNet.Projects.AspMvc1ProjectFlavor"
- alias="AspNetMvc1" />
+ tag="AspNetMvc1" />
<ProjectFlavor
guid="{F85E285D-A4E0-4152-9332-AB1D724D3325}"
type="MonoDevelop.AspNet.Projects.AspMvc2ProjectFlavor"
- alias="AspNetMvc2" />
+ tag="AspNetMvc2" />
<ProjectFlavor
guid="{E53F8FEA-EAE0-44A6-8774-FFD645390401}"
type="MonoDevelop.AspNet.Projects.AspMvc3ProjectFlavor"
- alias="AspNetMvc3" />
+ tag="AspNetMvc3" />
<ProjectFlavor
guid="{E3E379DF-F4C6-4180-9B81-6769533ABE47}"
type="MonoDevelop.AspNet.Projects.AspMvc4ProjectFlavor"
- alias="AspNetMvc4" />
+ tag="AspNetMvc4" />
<ProjectFlavor
id="MonoDevelop.AspNet.Projects.AspNetAppProjectFlavor"
guid="{349C5851-65DF-11DA-9384-00065B846F21}"
type="MonoDevelop.AspNet.Projects.AspNetAppProjectFlavor"
- alias="AspNetApp" />
+ tag="AspNetApp" />
</Extension>
<Extension path = "/MonoDevelop/TypeSystem/Parser">
diff --git a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
index 6531dabcbe..100efeb22b 100644
--- a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
+++ b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
@@ -49,7 +49,7 @@
</Extension>
<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build/General">
- <Condition id="ActiveLanguage" value="C#">
+ <Condition id="TypeTag" value="C#">
<Panel id = "CSharpCompilerOptionsPanel"
_label = "C#"
class = "MonoDevelop.CSharp.Project.CompilerOptionsPanel"/>
@@ -57,7 +57,7 @@
</Extension>
<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build/Compiler">
- <Condition id="ActiveLanguage" value="C#">
+ <Condition id="TypeTag" value="C#">
<Panel id = "CSharpCodeGenerationPanel"
_label = "Compiler"
class = "MonoDevelop.CSharp.Project.CodeGenerationPanel"/>
diff --git a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml
index 226b186130..1af14056ce 100644
--- a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml
+++ b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml
@@ -17,7 +17,7 @@
<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/VersionControl">
<ComplexCondition>
<Or>
- <Condition id="ItemType" value="SolutionItem" />
+ <Condition id="ItemType" value="SolutionFolderItem" />
<Condition id="ItemType" value="Solution" />
</Or>
<Section id = "ChangeLogIntegration" _label = "ChangeLog Integration" fill="true" class="MonoDevelop.ChangeLogAddIn.ProjectOptionPanel" />
diff --git a/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml b/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml
index 113666b792..787286fb21 100644
--- a/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml
+++ b/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml
@@ -8,7 +8,7 @@
</Extension>
<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build">
- <Condition id="ActiveLanguage" value = "IL">
+ <Condition id="TypeTag" value = "IL">
<Section id = "ILAsmCompilerParametersPanel" _label = "Compiler" class = "ILAsmBinding.CompilerParametersPanel"/>
</Condition>
</Extension>
@@ -22,7 +22,7 @@
</Extension>
<Extension path = "/MonoDevelop/ProjectModel/MSBuildItemTypes">
- <DotNetProjectType language="IL" extension="ilproj" guid="{B4EC64DC-6D44-11DD-AAB0-C9A155D89593}"/>
+ <DotNetProjectType language="IL" extension="ilproj" guid="{B4EC64DC-6D44-11DD-AAB0-C9A155D89593}" tag="IL" />
</Extension>
</ExtensionModel>
diff --git a/main/src/addins/MonoDevelop.Autotools/MakefileProject.cs b/main/src/addins/MonoDevelop.Autotools/MakefileProject.cs
index 4be0cdfd12..2d341eaf09 100644
--- a/main/src/addins/MonoDevelop.Autotools/MakefileProject.cs
+++ b/main/src/addins/MonoDevelop.Autotools/MakefileProject.cs
@@ -2,7 +2,6 @@
using System;
using MonoDevelop.Projects;
using System.Collections.Generic;
-using System.Collections.Immutable;
namespace MonoDevelop.Autotools
{
@@ -19,9 +18,10 @@ namespace MonoDevelop.Autotools
return conf;
}
- protected override ImmutableHashSet<string> OnGetProjectTypes ()
+ protected override void OnGetTypeTags (HashSet<string> types)
{
- return base.OnGetProjectTypes ().Add ("MakefileProject");
+ base.OnGetTypeTags (types);
+ types.Add ("MakefileProject");
}
}
diff --git a/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj b/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj
index c58288205c..84c712ed90 100644
--- a/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj
+++ b/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj
@@ -86,10 +86,6 @@
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Xml" />
- <Reference Include="System.Collections.Immutable">
- <HintPath>..\..\..\packages\Microsoft.Bcl.Immutable.1.0.34\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
- <Private>False</Private>
- </Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs" />
@@ -134,7 +130,6 @@
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
- <None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="templates\Makefile.am.project.template">
diff --git a/main/src/addins/MonoDevelop.Autotools/packages.config b/main/src/addins/MonoDevelop.Autotools/packages.config
deleted file mode 100644
index 591f985ff1..0000000000
--- a/main/src/addins/MonoDevelop.Autotools/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
- <package id="Microsoft.Bcl.Immutable" version="1.0.34" targetFramework="net45" />
-</packages> \ No newline at end of file
diff --git a/main/src/addins/VBNetBinding/VBNetBinding.addin.xml b/main/src/addins/VBNetBinding/VBNetBinding.addin.xml
index 07f02843a9..8fb3684321 100644
--- a/main/src/addins/VBNetBinding/VBNetBinding.addin.xml
+++ b/main/src/addins/VBNetBinding/VBNetBinding.addin.xml
@@ -7,7 +7,8 @@
guid="{F184B08F-C81C-45F6-A57F-5ABD9991F28F}"
import="$(MSBuildBinPath)\Microsoft.VisualBasic.targets"
type="MonoDevelop.VBNetBinding.VBProject"
- resourceHandler="MonoDevelop.VBNetBinding.VBNetResourceIdBuilder"/>
+ resourceHandler="MonoDevelop.VBNetBinding.VBNetResourceIdBuilder"
+ tag="VBNet"/>
</Extension>
<Extension path = "/MonoDevelop/Ide/FileFilters">
@@ -29,7 +30,7 @@
</Extension>
<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build/General">
- <Condition id="ActiveLanguage" value="VBNet">
+ <Condition id="TypeTag" value="VBNet">
<Panel id = "VBNetProjectOptionsPanel"
_label = "General Options"
class = "MonoDevelop.VBNetBinding.ProjectOptionsPanel"/>
@@ -40,7 +41,7 @@
</Extension>
<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build/Compiler">
- <Condition id="ActiveLanguage" value="VBNet">
+ <Condition id="TypeTag" value="VBNet">
<Panel id = "VBNetConfigurationOptionsPanel"
_label = "Compiler Options"
class = "MonoDevelop.VBNetBinding.ConfigurationOptionsPanel"/>
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml b/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
index 5d92b87683..de0621993d 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
@@ -289,7 +289,7 @@
</Condition>
<ComplexCondition>
<Or>
- <Condition id="ItemType" value="SolutionItem" />
+ <Condition id="ItemType" value="SolutionFolderItem" />
<Condition id="ItemType" value="Solution" />
</Or>
<Section id="VersionControlGeneral" _label="Commit Message Style" fill="true" class="MonoDevelop.VersionControl.VersionControlPolicyPanel" icon="md-prefs-commit-message-style" />
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml
index bc0bbc1a00..a49854d995 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml
@@ -93,12 +93,6 @@
<ExtensionPoint path = "/MonoDevelop/ProjectModel/ProjectServiceExtensions" name = "Project service extensions">
<Description>Project service extensions. Specified classes must be a subclass of ProjectServiceExtension</Description>
- <ConditionType id="ItemType" type="MonoDevelop.Core.Gui.Dialogs.OptionPanels.ItemTypeCondition">
- <Description>Type of the item. If no namespace is provided, MonoDevelop.Projects is assumed.</Description>
- </ConditionType>
- <ConditionType id="ActiveLanguage" type="MonoDevelop.Projects.Extensions.ItemTypeCondition">
- <Description>Language of the project. It will evaluate to false if the project is not a .NET project.</Description>
- </ConditionType>
<ExtensionNode name="Class">
<Description>A subclass of ProjectServiceExtension.</Description>
</ExtensionNode>
@@ -112,6 +106,9 @@
<ExtensionNode name="ProjectFlavor" type="MonoDevelop.Projects.Extensions.SolutionItemExtensionNode">
<Description>A subclass of ProjectExtension.</Description>
</ExtensionNode>
+ <ConditionType id="ItemType" type="MonoDevelop.Core.Gui.Dialogs.OptionPanels.ItemTypeCondition">
+ <Description>Type of the item. If no namespace is provided, MonoDevelop.Projects is assumed.</Description>
+ </ConditionType>
</ExtensionPoint>
<ExtensionPoint path = "/MonoDevelop/ProjectModel/MSBuildProjectExtensions" name = "MSBuild project extensions">
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
index f4b43947ff..0a7d2ba2ca 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
@@ -295,7 +295,6 @@
<Compile Include="MonoDevelop.Projects.Extensions\DataTypeCodon.cs" />
<Compile Include="MonoDevelop.Projects.Extensions\SerlializationMapNode.cs" />
<Compile Include="MonoDevelop.Projects.Extensions\FileFormatNode.cs" />
- <Compile Include="MonoDevelop.Projects.Extensions\SolutionItemHandler.cs" />
<Compile Include="MonoDevelop.Projects.Extensions\PolicySetNode.cs" />
<Compile Include="MonoDevelop.Projects.Extensions\PolicyNode.cs" />
<Compile Include="MonoDevelop.Projects.Extensions\ItemTypeCondition.cs" />
@@ -486,6 +485,7 @@
<Compile Include="MonoDevelop.Projects\MSBuildSerializationExtension.cs" />
<Compile Include="MonoDevelop.Projects\WorkspaceSerializationExtension.cs" />
<Compile Include="MonoDevelop.Projects\IMSBuildFileObject.cs" />
+ <Compile Include="MonoDevelop.Projects.Extensions\TypeTagCondition.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectTypeNode.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectTypeNode.cs
index 971d8d3727..d3c5da7af8 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectTypeNode.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/DotNetProjectTypeNode.cs
@@ -47,7 +47,7 @@ namespace MonoDevelop.Projects.Extensions
public DotNetProjectTypeNode ()
{
- Alias = "DotNet";
+ TypeTag = "DotNet";
}
public override bool CanCreateSolutionItem (string type, ProjectCreateInformation info, System.Xml.XmlElement projectOptions)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/ItemTypeCondition.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/ItemTypeCondition.cs
index e832949326..b83091da19 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/ItemTypeCondition.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/ItemTypeCondition.cs
@@ -77,7 +77,7 @@ namespace MonoDevelop.Projects.Extensions
public override bool Evaluate (NodeElement conditionNode)
{
foreach (string type in conditionNode.GetAttribute ("value").Split ('|')) {
- if (MatchesType (type))
+ if (MatchesType (type.Trim ()))
return true;
}
return false;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemHandler.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemHandler.cs
deleted file mode 100644
index 04cc805c15..0000000000
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemHandler.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-// MD1SolutionItemHandler.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.CodeDom.Compiler;
-using MonoDevelop.Core;
-using MonoDevelop.Projects.Extensions;
-using System.Threading.Tasks;
-
-namespace MonoDevelop.Projects.Extensions
-{
- public abstract class SolutionItemHandler
- {
- SolutionFolderItem item;
-
- public SolutionItemHandler (SolutionFolderItem item)
- {
- this.item = item;
- }
-
- public virtual bool SyncFileName {
- get { return true; }
- }
-
- public SolutionFolderItem Item {
- get { return item; }
- }
-
- public async virtual Task<BuildResult> RunTarget (ProgressMonitor monitor, string target, ConfigurationSelector configuration)
- {
- switch (target)
- {
- case "Build":
- return await OnBuild (monitor, configuration);
- case "Clean":
- return await OnClean (monitor, configuration);
- }
- return new BuildResult (new CompilerResults (null), "");
- }
-
- protected virtual Task<BuildResult> OnBuild (ProgressMonitor monitor, ConfigurationSelector configuration)
- {
- return Task.FromResult (BuildResult.Success);
- }
-
- protected virtual Task<BuildResult> OnClean (ProgressMonitor monitor, ConfigurationSelector configuration)
- {
- return Task.FromResult (BuildResult.Success);
- }
-
- public virtual void Dispose ()
- {
- }
-
- public virtual void OnModified (string hint)
- {
- }
-
- public virtual object GetService (Type t)
- {
- return null;
- }
- }
-}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemTypeNode.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemTypeNode.cs
index f00b9dd561..8137ebf730 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemTypeNode.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/SolutionItemTypeNode.cs
@@ -52,8 +52,8 @@ namespace MonoDevelop.Projects.Extensions
[NodeAttribute]
string type = null;
- [NodeAttribute ("alias")]
- public string Alias { get; protected set; }
+ [NodeAttribute ("tag")]
+ public string TypeTag { get; protected set; }
public SolutionItemTypeNode ()
{
@@ -125,7 +125,7 @@ namespace MonoDevelop.Projects.Extensions
public virtual bool CanCreateSolutionItem (string type, ProjectCreateInformation info, System.Xml.XmlElement projectOptions)
{
- return type.Equals (Guid, StringComparison.OrdinalIgnoreCase) || type == Alias;
+ return type.Equals (Guid, StringComparison.OrdinalIgnoreCase) || type == TypeTag;
}
public virtual SolutionItem CreateSolutionItem (string type, ProjectCreateInformation info, System.Xml.XmlElement projectOptions)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/TypeTagCondition.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/TypeTagCondition.cs
new file mode 100644
index 0000000000..b895e95f5e
--- /dev/null
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/TypeTagCondition.cs
@@ -0,0 +1,69 @@
+//
+// TypeTagCondition.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.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;
+
+namespace MonoDevelop.Projects.Extensions
+{
+ public class TypeTagCondition: ConditionType
+ {
+ string[] tags;
+
+ public TypeTagCondition (Project project)
+ {
+ tags = project.GetTypeTags ().ToArray ();
+ }
+
+ public override bool Evaluate (NodeElement conditionNode)
+ {
+ var val = conditionNode.GetAttribute ("value");
+ if (val.IndexOf ('|') != -1) {
+ string[] ors = val.Split ('|');
+ foreach (var cond in ors) {
+ if (EvalAnd (cond))
+ return true;
+ }
+ return false;
+ }
+ return EvalAnd (val);
+ }
+
+ bool EvalAnd (string val)
+ {
+ if (val.IndexOf ('&') != -1) {
+ var ands = val.Split ('&');
+ foreach (var tag in ands) {
+ if (!tags.Contains (tag.Trim ()))
+ return false;
+ }
+ return true;
+ }
+ return tags.Contains (val.Trim ());
+ }
+ }
+}
+
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs
index 6d92dd85b1..b884992fc1 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.SharedAssetsProjects/SharedAssetsProject.cs
@@ -187,9 +187,10 @@ namespace MonoDevelop.Projects.SharedAssetsProjects
}
}
- protected override System.Collections.Immutable.ImmutableHashSet<string> OnGetProjectTypes ()
+ protected override void OnGetTypeTags (HashSet<string> types)
{
- return base.OnGetProjectTypes ().Add ("SharedAssets").Add ("DotNet");
+ types.Add ("SharedAssets");
+ types.Add ("DotNet");
}
public override string[] SupportedLanguages {
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs
index b572299c56..a74c61e9a0 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs
@@ -51,9 +51,10 @@ namespace MonoDevelop.Projects
StockIcon = "md-assembly-project";
}
- protected override System.Collections.Immutable.ImmutableHashSet<string> OnGetProjectTypes ()
+ protected override void OnGetTypeTags (HashSet<string> types)
{
- return base.OnGetProjectTypes ().Add ("CompiledAssembly");
+ base.OnGetTypeTags (types);
+ types.Add ("CompiledAssembly");
}
protected override SolutionItemConfiguration OnCreateConfiguration (string name)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
index c773cfb89b..effa6b6232 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
@@ -215,9 +215,11 @@ namespace MonoDevelop.Projects
return MSBuildSupport.Supported;
}
- protected override ImmutableHashSet<string> OnGetProjectTypes ()
+ protected override void OnGetTypeTags (HashSet<string> types)
{
- return base.OnGetProjectTypes ().Add ("DotNet").Add ("DotNetAssembly");
+ base.OnGetTypeTags (types);
+ types.Add ("DotNet");
+ types.Add ("DotNetAssembly");
}
DotNetProjectExtension projectExtension;
@@ -565,11 +567,6 @@ namespace MonoDevelop.Projects
get { return (flags & DotNetProjectFlags.SupportsPartialTypes) != 0; }
}
- protected override System.Collections.Immutable.ImmutableList<string> OnGetSupportedPlatforms ()
- {
- return base.OnGetSupportedPlatforms ().Add ("AnyCPU");
- }
-
void CheckReferenceChange (FilePath updatedFile)
{
for (int n=0; n<References.Count; n++) {
@@ -1090,7 +1087,7 @@ namespace MonoDevelop.Projects
/// Gets the default namespace for the file, according to the naming policy.
/// </summary>
/// <remarks>Always returns a valid namespace, even if the fileName is null.</remarks>
- public virtual string GetDefaultNamespace (string fileName)
+ public string GetDefaultNamespace (string fileName)
{
return OnGetDefaultNamespace (fileName);
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs
index ea253110b0..ca04f9a0c5 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs
@@ -50,9 +50,10 @@ namespace MonoDevelop.Projects
return conf;
}
- protected override ImmutableHashSet<string> OnGetProjectTypes ()
+ protected override void OnGetTypeTags (HashSet<string> types)
{
- return base.OnGetProjectTypes ().Add ("GenericProject");
+ base.OnGetTypeTags (types);
+ types.Add ("GenericProject");
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ItemCollection.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ItemCollection.cs
index 59a2eddd0f..8a23f51772 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ItemCollection.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ItemCollection.cs
@@ -73,6 +73,13 @@ namespace MonoDevelop.Projects
OnItemsAdded (items);
}
+ public void Insert (int index, T item)
+ {
+ list = list.Insert (index, item);
+ singleItem [0] = item;
+ OnItemsAdded (singleItem);
+ }
+
public void RemoveRange (IEnumerable<T> items)
{
AssertCanWrite ();
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs
index d039c6d105..e29fb6800a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs
@@ -33,9 +33,10 @@ namespace MonoDevelop.Projects
{
public class PortableDotNetProjectFlavor: DotNetProjectExtension
{
- internal protected override System.Collections.Immutable.ImmutableHashSet<string> OnGetProjectTypes ()
+ internal protected override void OnGetTypeTags (HashSet<string> types)
{
- return base.OnGetProjectTypes ().Add ("PortableDotNet");
+ base.OnGetTypeTags (types);
+ types.Add ("PortableDotNet");
}
internal protected override bool OnGetSupportsFormat (MSBuildFileFormat format)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
index 05f2753053..274aedcea8 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
@@ -361,14 +361,15 @@ namespace MonoDevelop.Projects
/// <summary>
/// Gets the project type and its base types.
/// </summary>
- public IEnumerable<string> GetProjectTypes ()
+ public IEnumerable<string> GetTypeTags ()
{
- return ProjectExtension.OnGetProjectTypes ();
+ HashSet<string> sset = new HashSet<string> ();
+ ProjectExtension.OnGetTypeTags (sset);
+ return sset;
}
- protected virtual ImmutableHashSet<string> OnGetProjectTypes ()
+ protected virtual void OnGetTypeTags (HashSet<string> types)
{
- return ImmutableHashSet<string>.Empty;
}
public bool HasFlavor<T> ()
@@ -2401,9 +2402,9 @@ namespace MonoDevelop.Projects
return Project.OnGetIsCompileable (fileName);
}
- internal protected override ImmutableHashSet<string> OnGetProjectTypes ()
+ internal protected override void OnGetTypeTags (HashSet<string> types)
{
- return Project.OnGetProjectTypes ();
+ Project.OnGetTypeTags (types);
}
internal protected override Task<BuildResult> OnRunTarget (ProgressMonitor monitor, string target, ConfigurationSelector configuration)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs
index 7cd3f446b8..4f3b579b45 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectExtension.cs
@@ -75,12 +75,11 @@ namespace MonoDevelop.Projects
next.OnGetDefaultImports (imports);
}
- internal protected virtual ImmutableHashSet<string> OnGetProjectTypes ()
+ internal protected virtual void OnGetTypeTags (HashSet<string> types)
{
- var res = next.OnGetProjectTypes ();
+ next.OnGetTypeTags (types);
if (TypeAlias != null)
- res = res.Add (TypeAlias);
- return res;
+ types.Add (TypeAlias);
}
/// <summary>
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceObject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceObject.cs
index 53a04cef73..2060a57b8d 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceObject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceObject.cs
@@ -46,6 +46,7 @@ namespace MonoDevelop.Projects
bool initializeCalled;
bool isShared;
object localLock = new object ();
+ ExtensionContext extensionContext;
internal protected void Initialize<T> (T instance)
{
@@ -61,6 +62,10 @@ namespace MonoDevelop.Projects
{
if (!initializeCalled) {
initializeCalled = true;
+
+ extensionContext = AddinManager.CreateExtensionContext ();
+ extensionContext.RegisterCondition ("ItemType", new ItemTypeCondition (GetType ()));
+
OnInitialize ();
InitializeExtensionChain ();
OnExtensionChainInitialized ();
@@ -246,6 +251,12 @@ namespace MonoDevelop.Projects
}
}
+ public ExtensionContext ExtensionContext {
+ get {
+ return this.extensionContext;
+ }
+ }
+
WorkspaceObjectExtension itemExtension;
WorkspaceObjectExtension ItemExtension {
@@ -270,7 +281,7 @@ namespace MonoDevelop.Projects
// Collect extensions that support this object
var extensions = new List<WorkspaceObjectExtension> ();
- foreach (ProjectModelExtensionNode node in GetModelExtensions ()) {
+ foreach (ProjectModelExtensionNode node in GetModelExtensions (extensionContext)) {
if (node.CanHandleObject (this)) {
var ext = node.CreateExtension ();
if (ext.SupportsObject (this))
@@ -294,9 +305,12 @@ namespace MonoDevelop.Projects
e.OnExtensionChainCreated ();
}
- internal static IEnumerable<ProjectModelExtensionNode> GetModelExtensions ()
+ internal static IEnumerable<ProjectModelExtensionNode> GetModelExtensions (ExtensionContext ctx)
{
- return AddinManager.GetExtensionNodes (ProjectService.ProjectModelExtensionsPath).Cast<ProjectModelExtensionNode> ().Concat (customNodes);
+ if (ctx != null)
+ return ctx.GetExtensionNodes (ProjectService.ProjectModelExtensionsPath).Cast<ProjectModelExtensionNode> ().Concat (customNodes);
+ else
+ return AddinManager.GetExtensionNodes (ProjectService.ProjectModelExtensionsPath).Cast<ProjectModelExtensionNode> ().Concat (customNodes);
}
static List<ProjectModelExtensionNode> customNodes = new List<ProjectModelExtensionNode> ();
diff --git a/main/src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml b/main/src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml
index a6c1eb8de9..dc70423675 100644
--- a/main/src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml
+++ b/main/src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml
@@ -9,8 +9,8 @@
<ConditionType id="FlavorType" type="MonoDevelop.Projects.Extensions.FlavorTypeCondition">
<Description>Type of a flavor that a project must have. If no namespace is provided, MonoDevelop.Projects is assumed.</Description>
</ConditionType>
- <ConditionType id="ActiveLanguage" type="MonoDevelop.Projects.Extensions.ProjectLanguageCondition">
- <Description>Language of the project. It will evaluate to false if the project is not a .NET project.</Description>
+ <ConditionType id="TypeTag" type="MonoDevelop.Projects.Extensions.TypeTagCondition">
+ <Description>Tag or tags that a project must have.</Description>
</ConditionType>
</ExtensionPoint>
@@ -38,7 +38,7 @@
</Section>
<Section id="Build" _label="Build">
<Section id="General" _label="General" icon="md-prefs-build">
- <Condition id="ItemType" value="DotNetAssemblyProject">
+ <Condition id="ItemType" value="DotNetProject">
<Panel id = "RuntimeOptionsPanel" _label = "Runtime Options" class = "MonoDevelop.Ide.Projects.OptionPanels.RuntimeOptionsPanel"/>
</Condition>
<Condition id="FlavorType" value="PortableDotNetProjectFlavor">
@@ -76,7 +76,7 @@
<Condition id="ItemType" value="Solution">
<Section id = "StartupOptionsPanel" _label = "Startup Project" fill = "true" class = "MonoDevelop.Ide.Projects.OptionPanels.StartupOptionsPanel"/>
</Condition>
- <Condition id="ItemType" value="SolutionEntityItem">
+ <Condition id="ItemType" value="SolutionItem">
<Section id = "CustomCommands" _label = "Custom Commands" fill = "true" class = "MonoDevelop.Ide.Projects.OptionPanels.ExecutionCustomCommandPanel" />
</Condition>
</Section>
@@ -85,7 +85,7 @@
<Condition id="ItemType" value="Solution">
<Panel id = "NamespaceSynchronisationPanel" class = "MonoDevelop.Ide.Projects.OptionPanels.NamespaceSynchronisationPanel" />
</Condition>
- <Condition id="ItemType" value="SolutionItem">
+ <Condition id="ItemType" value="SolutionFolderItem">
<Panel id = "NamespaceSynchronisationPanel" class = "MonoDevelop.Ide.Projects.OptionPanels.NamespaceSynchronisationPanel" />
</Condition>
</Section>
@@ -93,7 +93,7 @@
<Section id="CodeFormattingPolicies" _label="Code Formatting" fill="true" class="MonoDevelop.Ide.Projects.OptionPanels.CodeFormattingPanel" icon="md-prefs-code-formatting" />
<Section id="DefaultStandardHeader" _label="Standard Header" fill="true" class= "MonoDevelop.Ide.StandardHeader.StandardHeaderPolicyPanel" icon="md-prefs-standard-header" />
</Condition>
- <Condition id="ItemType" value="SolutionItem">
+ <Condition id="ItemType" value="SolutionFolderItem">
<Section id="CodeFormattingPolicies" _label="Code Formatting" fill="true" class="MonoDevelop.Ide.Projects.OptionPanels.CodeFormattingPanel" icon="md-prefs-code-formatting" />
<Section id="DefaultStandardHeader" _label="Standard Header" fill="true" class="MonoDevelop.Ide.StandardHeader.StandardHeaderPolicyPanel" icon="md-prefs-standard-header" />
</Condition>
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs
index 4c3b9bf860..e91c9edc7d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/ProjectActiveCondition.cs
@@ -62,7 +62,7 @@ namespace MonoDevelop.Ide.Codons
if (activeproject == "*") {
return project != null;
}
- return project != null && project.GetProjectTypes ().All (p => p != activeproject);
+ return project != null && project.GetTypeTags ().All (p => p != activeproject);
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
index 6264840f8b..0b863cf897 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
@@ -166,7 +166,7 @@ namespace MonoDevelop.Ide.Projects
{
string key = "Dialogs.NewFileDialog.LastSelectedCategory";
if (proj != null) {
- key += "." + proj.GetProjectTypes ().First ();
+ key += "." + proj.GetTypeTags ().First ();
var dnp = proj as DotNetProject;
if (dnp != null)
key += "." + dnp.LanguageName;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/FileTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/FileTemplate.cs
index 1a9e9486b6..e23954f781 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/FileTemplate.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/FileTemplate.cs
@@ -413,7 +413,7 @@ namespace MonoDevelop.Ide.Templates
//filter on conditions
if (project != null) {
- if (!string.IsNullOrEmpty (projecttype) && project.GetProjectTypes ().All (p => p != projecttype))
+ if (!string.IsNullOrEmpty (projecttype) && project.GetTypeTags ().All (p => p != projecttype))
return false;
foreach (FileTemplateCondition condition in conditions)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ParentProjectFileTemplateCondition.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ParentProjectFileTemplateCondition.cs
index 741a8b25de..769e896f5e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ParentProjectFileTemplateCondition.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ParentProjectFileTemplateCondition.cs
@@ -84,7 +84,7 @@ namespace MonoDevelop.Ide.Templates
if (proj == null)
return !requireExists;
- if (projectType != null && proj.GetProjectTypes ().All (p => p != projectType))
+ if (projectType != null && proj.GetTypeTags ().All (p => p != projectType))
return false;
//check for permitted creation paths
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
index d9585fd3c6..2abb3357b9 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
@@ -265,7 +265,7 @@ namespace MonoDevelop.Ide.TypeSystem
static bool IsOutputTracked (DotNetProject project)
{
- foreach (var projectType in project.GetProjectTypes ()) {
+ foreach (var projectType in project.GetTypeTags ()) {
if (outputTrackedProjects.Any (otp => otp.ProjectType != null && string.Equals (otp.ProjectType, projectType, StringComparison.OrdinalIgnoreCase))) {
return true;
}