Browse Source

Started implementing the EnvDTE code model.

pull/45/merge
Daniel Grunwald 12 years ago
parent
commit
7fa7a51b5a
  1. 140
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElement.cs
  2. 102
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsList.cs
  3. 95
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeTypeMembers.cs
  4. 92
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeVariable.cs
  5. 65
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/EditPoint.cs
  6. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
  8. 24
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
  9. 90
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/TextPoint.cs
  10. 25
      src/AddIns/Misc/PackageManagement/Project/Src/IDocumentLoader.cs
  11. 67
      src/AddIns/Misc/PackageManagement/Project/Src/IProjectContentExtensions.cs
  12. 6
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs
  13. 4
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
  14. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
  15. 14
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs
  16. 10
      src/Main/Base/Project/Dom/IEntityModel.cs
  17. 12
      src/Main/Base/Project/Dom/IEventModel.cs
  18. 12
      src/Main/Base/Project/Dom/IFieldModel.cs
  19. 12
      src/Main/Base/Project/Dom/IMethodModel.cs
  20. 12
      src/Main/Base/Project/Dom/IPropertyModel.cs
  21. 4
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  22. 5
      src/Main/SharpDevelop/Dom/MemberModel.cs
  23. 17
      src/Main/SharpDevelop/Dom/TypeDefinitionModel.cs

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

@ -1,77 +1,63 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.NRefactory.TypeSystem;
//using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop.Dom;
// using ICSharpCode.SharpDevelop.Project;
//namespace ICSharpCode.PackageManagement.EnvDTE
//{ namespace ICSharpCode.PackageManagement.EnvDTE
// public class CodeElement : global::EnvDTE.CodeElementBase, global::EnvDTE.CodeElement {
// { public class CodeElement : global::EnvDTE.CodeElementBase, global::EnvDTE.CodeElement
// DTE dte; {
// DTE dte;
// public CodeElement() IEntityModel entityModel;
// {
// } public CodeElement()
// {
// public CodeElement(IEntity entity) }
// {
// this.Entity = entity; public CodeElement(IEntityModel entityModel)
// this.Language = entity.ProjectContent.GetCodeModelLanguage(); {
// } this.entityModel = entityModel;
// this.Language = entityModel.ParentProject.GetCodeModelLanguage();
// protected IEntity Entity { get; private set; } }
//
// public virtual string Name { public virtual string Name {
// get { return GetName(); } get { return entityModel.Name; }
// } }
//
// string GetName() public virtual string Language { get; protected set; }
// {
// int index = Entity.FullyQualifiedName.LastIndexOf('.'); // default is vsCMPart.vsCMPartWholeWithAttributes
// return Entity.FullyQualifiedName.Substring(index + 1); public virtual global::EnvDTE.TextPoint GetStartPoint()
// } {
// return null;
// public virtual string Language { get; protected set; } }
//
// // default is vsCMPart.vsCMPartWholeWithAttributes public virtual global::EnvDTE.TextPoint GetEndPoint()
// public virtual global::EnvDTE.TextPoint GetStartPoint() {
// { return null;
// return null; }
// }
// public virtual global::EnvDTE.vsCMInfoLocation InfoLocation { get; protected set; }
// public virtual global::EnvDTE.TextPoint GetEndPoint()
// { public virtual global::EnvDTE.DTE DTE {
// return null; get {
// } if (dte == null) {
// dte = new DTE();
// public virtual global::EnvDTE.vsCMInfoLocation InfoLocation { get; protected set; } }
// return dte;
// public virtual global::EnvDTE.DTE DTE { }
// get { }
// if (dte == null) {
// dte = new DTE(); public virtual global::EnvDTE.vsCMElement Kind {
// } get { return global::EnvDTE.vsCMElement.vsCMElementOther; }
// return dte; }
// }
// } protected override bool GetIsDerivedFrom(string fullName)
// {
// protected global::EnvDTE.vsCMAccess GetAccess() return false;
// { }
// if (Entity.IsPublic) { }
// return global::EnvDTE.vsCMAccess.vsCMAccessPublic; }
// }
// return global::EnvDTE.vsCMAccess.vsCMAccessPrivate;
// }
//
// public virtual global::EnvDTE.vsCMElement Kind {
// get { return global::EnvDTE.vsCMElement.vsCMElementOther; }
// }
//
// protected override bool GetIsDerivedFrom(string fullName)
// {
// return false;
// }
// }
//}

102
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeElementsList.cs

@ -1,51 +1,51 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using System.Collections; using System.Collections;
//using System.Collections.Generic; using System.Collections.Generic;
//using System.Linq; using System.Linq;
//
//namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
//{ {
// public class CodeElementsList : MarshalByRefObject, global::EnvDTE.CodeElements public class CodeElementsList : MarshalByRefObject, global::EnvDTE.CodeElements
// { {
// List<CodeElement> elements = new List<CodeElement>(); List<CodeElement> elements = new List<CodeElement>();
//
// public CodeElementsList() public CodeElementsList()
// { {
// } }
//
// protected virtual void AddCodeElement(CodeElement element) protected virtual void AddCodeElement(CodeElement element)
// { {
// elements.Add(element); elements.Add(element);
// } }
//
// public int Count { public int Count {
// get { return elements.Count; } get { return elements.Count; }
// } }
//
// public IEnumerator GetEnumerator() public IEnumerator GetEnumerator()
// { {
// return elements.GetEnumerator(); return elements.GetEnumerator();
// } }
//
// public global::EnvDTE.CodeElement Item(object index) public global::EnvDTE.CodeElement Item(object index)
// { {
// if (index is int) { if (index is int) {
// return Item((int)index); return Item((int)index);
// } }
// return Item((string)index); return Item((string)index);
// } }
//
// global::EnvDTE.CodeElement Item(int index) global::EnvDTE.CodeElement Item(int index)
// { {
// return elements[index - 1]; return elements[index - 1];
// } }
//
// global::EnvDTE.CodeElement Item(string name) global::EnvDTE.CodeElement Item(string name)
// { {
// return elements.Single(item => item.Name == name); return elements.Single(item => item.Name == name);
// } }
// } }
//} }

95
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeTypeMembers.cs

@ -1,49 +1,46 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.NRefactory.TypeSystem;
// using ICSharpCode.SharpDevelop.Dom;
//namespace ICSharpCode.PackageManagement.EnvDTE
//{ namespace ICSharpCode.PackageManagement.EnvDTE
// public class CodeTypeMembers : CodeElementsList {
// { public class CodeTypeMembers : CodeElementsList
// IProjectContent projectContent; {
// IClass c; public CodeTypeMembers(IModelCollection<IMemberModel> members)
// {
// public CodeTypeMembers(IProjectContent projectContent, IClass c) foreach (var m in members) {
// { var e = CreateMember(m);
// this.projectContent = projectContent; if (e != null)
// this.c = c; base.AddCodeElement(e);
// AddMembers(); }
// } // TODO track collection changes
// //members.CollectionChanged += members_CollectionChanged;
// void AddMembers() }
// {
// foreach (IProperty property in c.Properties) { CodeElement CreateMember(IMemberModel m)
// AddProperty(property); {
// } switch (m.SymbolKind) {
// foreach (IField field in c.Fields) { case SymbolKind.Field:
// AddField(field); // return new CodeVariable(m);
// } throw new NotImplementedException();
// foreach (IMethod method in c.Methods) { case SymbolKind.Property:
// AddMethod(method); case SymbolKind.Indexer:
// } // return new CodeProperty2(m);
// } throw new NotImplementedException();
// case SymbolKind.Event:
// void AddMethod(IMethod method) return null; // events are not supported in EnvDTE?
// { case SymbolKind.Method:
// AddCodeElement(new CodeFunction2(method)); case SymbolKind.Operator:
// } case SymbolKind.Constructor:
// case SymbolKind.Destructor:
// void AddField(IField field) // return new CodeFunction2(m);
// { throw new NotImplementedException();
// AddCodeElement(new CodeVariable(field)); default:
// } throw new NotSupportedException("Invalid value for SymbolKind");
// }
// void AddProperty(IProperty property) }
// { }
// AddCodeElement(new CodeProperty2(property)); }
// }
// }
//}

92
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeVariable.cs

@ -1,49 +1,43 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Dom;
//
//namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
//{ {
// public class CodeVariable : CodeElement, global::EnvDTE.CodeVariable public class CodeVariable : CodeElement, global::EnvDTE.CodeVariable
// { {
// IField field; readonly IFieldModel field;
// IDocumentLoader documentLoader; readonly IDocumentLoader documentLoader;
//
// public CodeVariable() public CodeVariable()
// { {
// } }
//
// public CodeVariable(IField field) public CodeVariable(IFieldModel field, IDocumentLoader documentLoader)
// : this(field, new DocumentLoader()) {
// { this.field = field;
// } this.documentLoader = documentLoader;
// }
// public CodeVariable(IField field, IDocumentLoader documentLoader)
// : base(field) public override global::EnvDTE.vsCMElement Kind {
// { get { return global::EnvDTE.vsCMElement.vsCMElementVariable; }
// this.field = field; }
// this.documentLoader = documentLoader;
// } public global::EnvDTE.vsCMAccess Access {
// get { return field.Accessibility.ToAccess(); }
// public override global::EnvDTE.vsCMElement Kind { set { field.Accessibility = value.ToAccessibility(); }
// get { return global::EnvDTE.vsCMElement.vsCMElementVariable; } }
// }
// public override global::EnvDTE.TextPoint GetStartPoint()
// public global::EnvDTE.vsCMAccess Access { {
// get { return GetAccess(); } return TextPoint.CreateStartPoint(field.Region, documentLoader);
// set { } }
// }
// public override global::EnvDTE.TextPoint GetEndPoint()
// public override global::EnvDTE.TextPoint GetStartPoint() {
// { return TextPoint.CreateEndPoint(field.Region, documentLoader);
// return new TextPoint(field.GetStartPosition(), documentLoader); }
// } }
// }
// public override global::EnvDTE.TextPoint GetEndPoint()
// {
// return new TextPoint(field.GetEndPosition(), documentLoader);
// }
// }
//}

65
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/EditPoint.cs

@ -1,36 +1,37 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.NRefactory;
//using ICSharpCode.SharpDevelop.Dom.Refactoring; using ICSharpCode.SharpDevelop.Dom;
//
//namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
//{ {
// public class EditPoint : TextPoint, global::EnvDTE.EditPoint public class EditPoint : TextPoint, global::EnvDTE.EditPoint
// { {
// IRefactoringDocument document; // IRefactoringDocument document;
// IRefactoringDocumentView documentView; // IRefactoringDocumentView documentView;
//
// internal EditPoint(FilePosition filePosition, IDocumentLoader documentLoader) internal EditPoint(string fileName, TextLocation location, IDocumentLoader documentLoader)
// : base(filePosition, documentLoader) : base(fileName, location, documentLoader)
// { {
// } }
//
// public void ReplaceText(object pointOrCount, string text, int flags) public void ReplaceText(object pointOrCount, string text, int flags)
// { {
// ReplaceText((TextPoint)pointOrCount, text, (global::EnvDTE.vsEPReplaceTextOptions)flags); ReplaceText((TextPoint)pointOrCount, text, (global::EnvDTE.vsEPReplaceTextOptions)flags);
// } }
//
// void ReplaceText(TextPoint endPoint, string text, global::EnvDTE.vsEPReplaceTextOptions textFormatOptions) void ReplaceText(TextPoint endPoint, string text, global::EnvDTE.vsEPReplaceTextOptions textFormatOptions)
// { {
throw new NotImplementedException();
// OpenDocument(); // OpenDocument();
// int offset = GetStartOffset(); // int offset = GetStartOffset();
// int endOffset = GetEndOffset(endPoint); // int endOffset = GetEndOffset(endPoint);
// document.Replace(offset, endOffset - offset, text); // document.Replace(offset, endOffset - offset, text);
// IndentReplacedText(text); // IndentReplacedText(text);
// } }
//
// void OpenDocument() // void OpenDocument()
// { // {
// documentView = DocumentLoader.LoadRefactoringDocumentView(FilePosition.FileName); // documentView = DocumentLoader.LoadRefactoringDocumentView(FilePosition.FileName);
@ -64,9 +65,9 @@
// return text.Split('\n').Length; // return text.Split('\n').Length;
// } // }
// //
// public void Insert(string text) public void Insert(string text)
// { {
// throw new NotImplementedException(); throw new NotImplementedException();
// } }
// } }
//} }

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

@ -99,7 +99,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string GetProjectType() string GetProjectType()
{ {
return new ProjectType(this).Type; return ProjectType.GetProjectType(MSBuildProject);
} }
public virtual string Kind { public virtual string Kind {

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

@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string GetProjectKind(Project project) string GetProjectKind(Project project)
{ {
string type = new ProjectType(project).Type; string type = ProjectType.GetProjectType(project);
if (type == ProjectType.CSharp) { if (type == ProjectType.CSharp) {
return SD.ProjectTypeGuids.CSharp.ToString(); return SD.ProjectTypeGuids.CSharp.ToString();
} else if (type == ProjectType.VBNet.ToString()) { } else if (type == ProjectType.VBNet.ToString()) {

24
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs

@ -6,32 +6,22 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class ProjectType public static class ProjectType
{ {
public static readonly string VBNet = "VB.NET"; public static readonly string VBNet = "VB.NET";
public static readonly string CSharp = "C#"; public static readonly string CSharp = "C#";
public ProjectType(Project project) public static string GetProjectType(Project project)
{ {
this.Type = GetProjectType(project); return GetProjectType(project.MSBuildProject);
} }
public ProjectType(MSBuildBasedProject project) public static string GetProjectType(IProject project)
: this(new Project(project))
{ {
} if (project.Language == "VB")
string GetProjectType(Project project)
{
string extension = project.GetLowercaseFileExtension();
if (extension == ".csproj") {
return CSharp;
} else if (extension == ".vbproj") {
return VBNet; return VBNet;
} else
return String.Empty; return project.Language;
} }
public string Type { get; private set; }
} }
} }

90
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/TextPoint.cs

@ -1,43 +1,47 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.NRefactory;
// using ICSharpCode.NRefactory.TypeSystem;
//namespace ICSharpCode.PackageManagement.EnvDTE using ICSharpCode.SharpDevelop.Dom;
//{
// public class TextPoint : MarshalByRefObject, global::EnvDTE.TextPoint namespace ICSharpCode.PackageManagement.EnvDTE
// { {
// internal TextPoint(FilePosition filePosition, IDocumentLoader documentLoader) public class TextPoint : MarshalByRefObject, global::EnvDTE.TextPoint
// { {
// this.FilePosition = filePosition; protected readonly string fileName;
// this.DocumentLoader = documentLoader; protected readonly TextLocation location;
// } protected readonly IDocumentLoader documentLoader;
//
// protected IDocumentLoader DocumentLoader { get; private set; } internal TextPoint(string fileName, TextLocation location, IDocumentLoader documentLoader)
// protected FilePosition FilePosition { get; private set; } {
// this.fileName = fileName;
// public int LineCharOffset { this.location = location;
// get { return FilePosition.Column; } this.documentLoader = documentLoader;
// } }
//
// public int Line { public int LineCharOffset {
// get { return FilePosition.Line; } get { return location.Column; }
// } }
//
// public global::EnvDTE.EditPoint CreateEditPoint() public int Line {
// { get { return location.Line; }
// return new EditPoint(FilePosition, DocumentLoader); }
// }
// public global::EnvDTE.EditPoint CreateEditPoint()
// internal static TextPoint CreateStartPoint(FilePosition position, IDocumentLoader documentLoader) {
// { return new EditPoint(fileName, location, documentLoader);
// return new TextPoint(position, documentLoader); }
// }
// internal static TextPoint CreateStartPoint(DomRegion region, IDocumentLoader documentLoader)
// internal static TextPoint CreateEndPoint(FilePosition position, IDocumentLoader documentLoader) {
// { return new TextPoint(region.FileName, region.Begin, documentLoader);
// return new TextPoint(position, documentLoader); }
// }
// } internal static TextPoint CreateEndPoint(DomRegion region, IDocumentLoader documentLoader)
//} {
return new TextPoint(region.FileName, region.End, documentLoader);
}
}
}

25
src/AddIns/Misc/PackageManagement/Project/Src/IDocumentLoader.cs

@ -1,15 +1,14 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.SharpDevelop.Dom.Refactoring; using ICSharpCode.SharpDevelop.Editor;
//using ICSharpCode.SharpDevelop.Editor;
// namespace ICSharpCode.PackageManagement
//namespace ICSharpCode.PackageManagement {
//{ public interface IDocumentLoader
// public interface IDocumentLoader {
// {
// IRefactoringDocument LoadRefactoringDocument(string fileName); // IRefactoringDocument LoadRefactoringDocument(string fileName);
// IRefactoringDocumentView LoadRefactoringDocumentView(string fileName); // IRefactoringDocumentView LoadRefactoringDocumentView(string fileName);
// } }
//} }

67
src/AddIns/Misc/PackageManagement/Project/Src/IProjectContentExtensions.cs

@ -1,24 +1,43 @@
//// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // 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) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
//
//using System; using System;
//using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.NRefactory.TypeSystem;
//using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.PackageManagement.EnvDTE;
//using ICSharpCode.SharpDevelop.Project; using ICSharpCode.SharpDevelop;
// using ICSharpCode.SharpDevelop.Dom;
//namespace ICSharpCode.PackageManagement using ICSharpCode.SharpDevelop.Project;
//{
// public static class IProjectContentExtensions namespace ICSharpCode.PackageManagement
// { {
// public static string GetCodeModelLanguage(this IProjectContent projectContent) public static class NRefactoryExtensionsForEnvDTE
// { {
// if (projectContent.Project != null) { public static string GetCodeModelLanguage(this IProject project)
// var projectType = new ProjectType(projectContent.Project as MSBuildBasedProject); {
// if (projectType.Type == ProjectType.VBNet) { if (project != null && project.Language == "VB") {
// return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB; return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageVB;
// } }
// } return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp;
// return global::EnvDTE.CodeModelLanguageConstants.vsCMLanguageCSharp; }
// }
// } public static global::EnvDTE.vsCMAccess ToAccess(this Accessibility accessiblity)
//} {
if (accessiblity == Accessibility.Public)
return global::EnvDTE.vsCMAccess.vsCMAccessPublic;
else
return global::EnvDTE.vsCMAccess.vsCMAccessPrivate;
}
public static Accessibility ToAccessibility(this global::EnvDTE.vsCMAccess access)
{
switch (access) {
case global::EnvDTE.vsCMAccess.vsCMAccessPublic:
return Accessibility.Public;
case global::EnvDTE.vsCMAccess.vsCMAccessPrivate:
return Accessibility.Private;
default:
throw new Exception("Invalid value for vsCMAccess");
}
}
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/FlavoredProject.cs

@ -33,10 +33,10 @@ namespace Microsoft.VisualStudio.Shell.Flavor
string GetProjectTypeGuidsBasedOnProjectFileExtension() string GetProjectTypeGuidsBasedOnProjectFileExtension()
{ {
var projectType = new ProjectType(project); var projectType = ProjectType.GetProjectType(project);
if (projectType.Type == ProjectType.CSharp) { if (projectType == ProjectType.CSharp) {
return ProjectTypeGuids.CSharp.ToString(); return ProjectTypeGuids.CSharp.ToString();
} else if (projectType.Type == ProjectType.VBNet) { } else if (projectType == ProjectType.VBNet) {
return ProjectTypeGuids.VBNet.ToString(); return ProjectTypeGuids.VBNet.ToString();
} }
return String.Empty; return String.Empty;

4
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs

@ -22,7 +22,7 @@ namespace PackageManagement.Tests.EnvDTE
IPackageManagementProjectService fakeProjectService; IPackageManagementProjectService fakeProjectService;
IPackageManagementFileService fakeFileService; IPackageManagementFileService fakeFileService;
void CreateProject(string fileName = @"d:\projects\MyProject\MyProject.csproj") void CreateProject(string fileName = @"d:\projects\MyProject\MyProject.csproj", string language = "C#")
{ {
msbuildProject = ProjectHelper.CreateTestProject(); msbuildProject = ProjectHelper.CreateTestProject();
msbuildProject.FileName = new FileName(fileName); msbuildProject.FileName = new FileName(fileName);
@ -86,7 +86,7 @@ namespace PackageManagement.Tests.EnvDTE
[Test] [Test]
public void Type_ProjectIsCSharpProject_ReturnsCSharp() public void Type_ProjectIsCSharpProject_ReturnsCSharp()
{ {
CreateProject(@"c:\projects\myproject\test.csproj"); CreateProject(@"c:\projects\myproject\test.csproj", "C#");
string projectType = project.Type; string projectType = project.Type;

10
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs

@ -102,15 +102,7 @@ namespace PackageManagement.Tests.Helpers
public static FileProjectItem GetFile(MSBuildBasedProject project, string fileName) public static FileProjectItem GetFile(MSBuildBasedProject project, string fileName)
{ {
foreach (ProjectItem projectItem in project.Items) { return project.FindFile(FileName.Create(fileName));
FileProjectItem fileItem = projectItem as FileProjectItem;
if (fileItem != null) {
if (fileItem.FileName == fileName) {
return fileItem;
}
}
}
return null;
} }
public static FileProjectItem GetFileFromInclude(TestableProject project, string include) public static FileProjectItem GetFileFromInclude(TestableProject project, string include)

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

@ -28,6 +28,20 @@ namespace PackageManagement.Tests.Helpers
{ {
} }
public override string Language {
get {
// HACK: unit tests only provide the file extension, but we now need the language
switch (this.FileName.GetExtension().ToLowerInvariant()) {
case ".csproj":
return "C#";
case ".vbproj":
return "VB";
default:
return string.Empty;
}
}
}
public override bool IsStartable { public override bool IsStartable {
get { return isStartable; } get { return isStartable; }
} }

10
src/Main/Base/Project/Dom/IEntityModel.cs

@ -19,6 +19,16 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary> /// </summary>
string Name { get; } string Name { get; }
/// <summary>
/// Gets the symbol kind of the entity.
/// </summary>
SymbolKind SymbolKind { get; }
/// <summary>
/// Gets/sets the accessibility of the entity.
/// </summary>
Accessibility Accessibility { get; set; }
/// <summary> /// <summary>
/// Gets the parent project that contains this entity. /// Gets the parent project that contains this entity.
/// May return null if the entity is not part of a project. /// May return null if the entity is not part of a project.

12
src/Main/Base/Project/Dom/IEventModel.cs

@ -0,0 +1,12 @@
// 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.SharpDevelop.Dom
{
public interface IEventModel : IMemberModel
{
}
}

12
src/Main/Base/Project/Dom/IFieldModel.cs

@ -0,0 +1,12 @@
// 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.SharpDevelop.Dom
{
public interface IFieldModel : IMemberModel
{
}
}

12
src/Main/Base/Project/Dom/IMethodModel.cs

@ -0,0 +1,12 @@
// 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.SharpDevelop.Dom
{
public interface IMethodModel : IMemberModel
{
}
}

12
src/Main/Base/Project/Dom/IPropertyModel.cs

@ -0,0 +1,12 @@
// 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.SharpDevelop.Dom
{
public interface IPropertyModel : IMemberModel
{
}
}

4
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -85,8 +85,12 @@
<Compile Include="Designer\IDesignerTypeResolutionService.cs" /> <Compile Include="Designer\IDesignerTypeResolutionService.cs" />
<Compile Include="Designer\TypeResolutionService.cs" /> <Compile Include="Designer\TypeResolutionService.cs" />
<Compile Include="Dom\IEntityModelContext.cs" /> <Compile Include="Dom\IEntityModelContext.cs" />
<Compile Include="Dom\IEventModel.cs" />
<Compile Include="Dom\IFieldModel.cs" />
<Compile Include="Dom\IMemberModel.cs" /> <Compile Include="Dom\IMemberModel.cs" />
<Compile Include="Dom\IMethodModel.cs" />
<Compile Include="Dom\IModelFactory.cs" /> <Compile Include="Dom\IModelFactory.cs" />
<Compile Include="Dom\IPropertyModel.cs" />
<Compile Include="Dom\ITypeDefinitionModel.cs" /> <Compile Include="Dom\ITypeDefinitionModel.cs" />
<Compile Include="Dom\ITypeDefinitionModelCollection.cs" /> <Compile Include="Dom\ITypeDefinitionModelCollection.cs" />
<Compile Include="Dom\IEntityModel.cs" /> <Compile Include="Dom\IEntityModel.cs" />

5
src/Main/SharpDevelop/Dom/MemberModel.cs

@ -58,6 +58,11 @@ namespace ICSharpCode.SharpDevelop.Dom
get { return member.SymbolKind; } get { return member.SymbolKind; }
} }
public Accessibility Accessibility {
get { return member.Accessibility; }
set { throw new NotImplementedException(); }
}
public DomRegion Region { public DomRegion Region {
get { return member.Region; } get { return member.Region; }
} }

17
src/Main/SharpDevelop/Dom/TypeDefinitionModel.cs

@ -42,6 +42,23 @@ namespace ICSharpCode.SharpDevelop.Dom
get { return context.Project; } get { return context.Project; }
} }
public SymbolKind SymbolKind {
get { return SymbolKind.TypeDefinition; }
}
public Accessibility Accessibility {
get {
var td = Resolve();
if (td != null)
return td.Accessibility;
else
return Accessibility.None;
}
set {
throw new NotImplementedException();
}
}
public FullTypeName FullTypeName { public FullTypeName FullTypeName {
get { return fullTypeName; } get { return fullTypeName; }
} }

Loading…
Cancel
Save