Browse Source

Implement EnvDTE.CodeElement.Language.

pull/28/head
Matt Ward 13 years ago
parent
commit
5b528bc2eb
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 29
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs
  3. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeModelLanguageConstants.cs
  4. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeNamespace.cs
  5. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  6. 61
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs
  7. 24
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeNamespaceTests.cs
  8. 14
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectContentHelper.cs

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -86,6 +86,7 @@ @@ -86,6 +86,7 @@
<Compile Include="Src\EnvDTE\CodeFunction.cs" />
<Compile Include="Src\EnvDTE\CodeInterface.cs" />
<Compile Include="Src\EnvDTE\CodeModel.cs" />
<Compile Include="Src\EnvDTE\CodeModelLanguageConstants.cs" />
<Compile Include="Src\EnvDTE\CodeNamespace.cs" />
<Compile Include="Src\EnvDTE\CodeProperty.cs" />
<Compile Include="Src\EnvDTE\CodeProperty2.cs" />

29
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs

@ -3,18 +3,33 @@ @@ -3,18 +3,33 @@
using System;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeElement : MarshalByRefObject
{
DTE dte;
public CodeElement()
{
}
public CodeElement(IEntity entity)
{
this.Entity = entity;
this.Language = GetLanguage(entity.ProjectContent);
}
public CodeElement()
protected string GetLanguage(IProjectContent projectContent)
{
if (projectContent.Project != null) {
var projectType = new ProjectType(projectContent.Project as MSBuildBasedProject);
if (projectType.Type == ProjectType.VBNet) {
return CodeModelLanguageConstants.vsCMLanguageVB;
}
}
return CodeModelLanguageConstants.vsCMLanguageCSharp;
}
protected IEntity Entity { get; private set; }
@ -29,7 +44,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -29,7 +44,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return Entity.FullyQualifiedName.Substring(index + 1);
}
public virtual string Language { get; private set; }
public virtual string Language { get; protected set; }
// default is vsCMPart.vsCMPartWholeWithAttributes
public virtual TextPoint GetStartPoint()
@ -43,6 +58,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -43,6 +58,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public virtual vsCMInfoLocation InfoLocation { get; protected set; }
public virtual DTE DTE { get; private set; }
public virtual DTE DTE {
get {
if (dte == null) {
dte = new DTE();
}
return dte;
}
}
}
}

13
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeModelLanguageConstants.cs

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
// 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;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public abstract class CodeModelLanguageConstants
{
public const string vsCMLanguageCSharp = "{B5E9BD34-6D3E-4B5D-925E-8A43B79820B4}";
public const string vsCMLanguageVB = "{B5E9BD33-6D3E-4B5D-925E-8A43B79820B4}";
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeNamespace.cs

@ -18,11 +18,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -18,11 +18,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public CodeNamespace(IProjectContent projectContent, NamespaceName namespaceName)
: base(null)
{
this.projectContent = projectContent;
this.namespaceName = namespaceName;
this.InfoLocation = vsCMInfoLocation.vsCMInfoLocationExternal;
this.Language = GetLanguage(projectContent);
}
internal string QualifiedName {

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -72,6 +72,7 @@ @@ -72,6 +72,7 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Src\EnvDTE\CodeClass2Tests.cs" />
<Compile Include="Src\EnvDTE\CodeElementsInNamespaceTests.cs" />
<Compile Include="Src\EnvDTE\CodeModelTests.cs" />
<Compile Include="Src\EnvDTE\CodeNamespaceTests.cs" />

61
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs

@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
// 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.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Dom;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using Rhino.Mocks;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class CodeClass2Tests
{
CodeClass2 codeClass;
ProjectContentHelper helper;
IClass fakeClass;
void CreateProjectContent()
{
helper = new ProjectContentHelper();
}
void CreateClass(string name)
{
fakeClass = helper.AddClassToProjectContent(name);
codeClass = new CodeClass2(helper.FakeProjectContent, fakeClass);
}
void CreateMSBuildClass(string name)
{
fakeClass = MockRepository.GenerateStub<IClass>();
fakeClass.Stub(c => c.FullyQualifiedName).Return(name);
}
[Test]
public void Language_CSharpProject_ReturnsCSharpModelLanguage()
{
CreateProjectContent();
helper.ProjectContentIsForCSharpProject();
CreateClass("MyClass");
string language = codeClass.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageCSharp, language);
}
[Test]
public void Language_VisualBasicProject_ReturnsVisualBasicModelLanguage()
{
CreateProjectContent();
helper.ProjectContentIsForVisualBasicProject();
CreateClass("MyClass");
string language = codeClass.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageVB, language);
}
}
}

24
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeNamespaceTests.cs

@ -125,5 +125,29 @@ namespace PackageManagement.Tests.EnvDTE @@ -125,5 +125,29 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(0, members.Count);
}
[Test]
public void Language_CSharpProject_ReturnsCSharpModelLanguage()
{
CreateProjectContent();
helper.ProjectContentIsForCSharpProject();
CreateCodeNamespace(String.Empty);
string language = codeNamespace.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageCSharp, language);
}
[Test]
public void Language_VisualBasicProject_ReturnsVisualBasicModelLanguage()
{
CreateProjectContent();
helper.ProjectContentIsForVisualBasicProject();
CreateCodeNamespace(String.Empty);
string language = codeNamespace.Language;
Assert.AreEqual(CodeModelLanguageConstants.vsCMLanguageVB, language);
}
}
}

14
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectContentHelper.cs

@ -138,5 +138,19 @@ namespace PackageManagement.Tests.Helpers @@ -138,5 +138,19 @@ namespace PackageManagement.Tests.Helpers
entries.Add(fakeClass);
AddCompletionEntriesToNamespace(namespaceName, entries);
}
public void ProjectContentIsForCSharpProject()
{
TestableProject project = ProjectHelper.CreateTestProject();
project.FileName = @"c:\projects\myproject.csproj";
SetProjectForProjectContent(project);
}
public void ProjectContentIsForVisualBasicProject()
{
TestableProject project = ProjectHelper.CreateTestProject();
project.FileName = @"c:\projects\myproject.vbproj";
SetProjectForProjectContent(project);
}
}
}

Loading…
Cancel
Save