Browse Source

Implement Namespace for EnvDTE.CodeType.

pull/375/head
Matt Ward 12 years ago
parent
commit
7f51827b3f
  1. 55
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeNamespace.cs
  2. 9
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs
  3. 35
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/FileCodeModelCodeNamespace.cs
  4. 37
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs

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

@ -36,59 +36,4 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -36,59 +36,4 @@ namespace ICSharpCode.PackageManagement.EnvDTE
get { return new CodeElementsInNamespace(context, ns); }
}
}
// Move code below into FileCodeModelNamespace
public class CodeNamespaceBase : CodeElement, global::EnvDTE.CodeNamespace
{
NamespaceName namespaceName;
public CodeNamespaceBase(CodeModelContext context, string qualifiedName)
: this(context, new NamespaceName(qualifiedName))
{
}
public CodeNamespaceBase(CodeModelContext context, NamespaceName namespaceName)
{
this.context = context;
this.namespaceName = namespaceName;
this.InfoLocation = global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal;
this.Language = context.CurrentProject.GetCodeModelLanguage();
}
public override global::EnvDTE.vsCMElement Kind {
get { return global::EnvDTE.vsCMElement.vsCMElementNamespace; }
}
internal NamespaceName NamespaceName {
get { return namespaceName; }
}
public string FullName {
get { return namespaceName.QualifiedName; }
}
public override string Name {
get { return namespaceName.LastPart; }
}
public virtual global::EnvDTE.CodeElements Members {
get { throw new NotImplementedException(); }
//get { return new CodeElementsInNamespace(context, namespaceName); }
}
// CodeElementsList<CodeElement> members;
// public virtual global::EnvDTE.CodeElements Members {
// get {
// if (members == null) {
// if (model == null)
// throw new NotSupportedException();
// IModelCollection<CodeElement> namespaceMembers = model.ChildNamespaces.Select(ns => new CodeNamespace(context, ns));
// IModelCollection<CodeElement> typeMembers = model.Types.Select(td => CodeType.Create(context, td));
// members = namespaceMembers.Concat(typeMembers).AsCodeElements();
// }
// return members;
// }
// }
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs

@ -145,14 +145,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -145,14 +145,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public virtual global::EnvDTE.CodeNamespace Namespace {
get {
if (context.FilteredFileName != null) {
return new FileCodeModel2(context, null).GetNamespace(typeDefinition.Namespace);
} else {
throw new NotImplementedException();
// return new CodeNamespace(context, typeDefinition.Namespace);
}
}
get { return new FileCodeModelCodeNamespace(context, typeDefinition.Namespace); }
}
public virtual global::EnvDTE.ProjectItem ProjectItem {

35
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/FileCodeModelCodeNamespace.cs

@ -13,24 +13,29 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -13,24 +13,29 @@ namespace ICSharpCode.PackageManagement.EnvDTE
/// This differs from the CodeModel CodeNamespace which breaks up the namespaces into
/// parts.
/// </summary>
public class FileCodeModelCodeNamespace : CodeNamespaceBase
public class FileCodeModelCodeNamespace : CodeElement, global::EnvDTE.CodeNamespace
{
NamespaceName namespaceName;
CodeElementsList<CodeElement> members = new CodeElementsList<CodeElement>();
public FileCodeModelCodeNamespace(CodeModelContext context, string namespaceName)
: base(context, namespaceName)
: this(context, new NamespaceName(namespaceName))
{
}
public override string Name {
get { return base.FullName; }
FileCodeModelCodeNamespace(CodeModelContext context, NamespaceName namespaceName)
{
this.context = context;
this.namespaceName = namespaceName;
this.InfoLocation = global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationExternal;
this.Language = context.CurrentProject.GetCodeModelLanguage();
}
public override global::EnvDTE.vsCMInfoLocation InfoLocation {
get { return global::EnvDTE.vsCMInfoLocation.vsCMInfoLocationProject; }
}
CodeElementsList<CodeElement> members = new CodeElementsList<CodeElement>();
public override global::EnvDTE.CodeElements Members {
public global::EnvDTE.CodeElements Members {
get { return members; }
}
@ -38,5 +43,21 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -38,5 +43,21 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
members.Add(member);
}
public override global::EnvDTE.vsCMElement Kind {
get { return global::EnvDTE.vsCMElement.vsCMElementNamespace; }
}
internal NamespaceName NamespaceName {
get { return namespaceName; }
}
public string FullName {
get { return namespaceName.QualifiedName; }
}
public override string Name {
get { return FullName; }
}
}
}

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

@ -187,31 +187,18 @@ namespace PackageManagement.Tests.EnvDTE @@ -187,31 +187,18 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual(global::EnvDTE.vsCMElement.vsCMElementClass, kind);
}
// [Test]
// public void Namespace_PublicClass_ReturnsClassNamespace()
// {
// CreateClass(
// "namespace MyNamespace.Test {\r\n" +
// " public class MyClass {}\r\n" +
// "}");
//
// global::EnvDTE.CodeNamespace codeNamespace = codeClass.Namespace;
//
// Assert.AreEqual("MyNamespace.Test", codeNamespace.FullName);
// }
//
// [Test]
// public void Namespace_PublicClassAndNamespaceNameChecked_ReturnsFullyQualifiedClassNamespace()
// {
// CreateProjectContent();
// helper.CreatePublicClass("MyNamespace.Test.MyClass");
// helper.AddClassNamespace("MyNamespace.Test");
// CreateClass();
//
// global::EnvDTE.CodeNamespace codeNamespace = codeClass.Namespace;
//
// Assert.AreEqual("MyNamespace.Test", codeNamespace.Name);
// }
[Test]
public void Namespace_PublicClass_ReturnsClassNamespace()
{
CreateClass(
"namespace MyNamespace.Test {\r\n" +
" public class MyClass {}\r\n" +
"}");
global::EnvDTE.CodeNamespace codeNamespace = codeClass.Namespace;
Assert.AreEqual("MyNamespace.Test", codeNamespace.FullName);
}
[Test]
public void PartialClasses_ClassIsNotPartial_ReturnsClass()

Loading…
Cancel
Save