Browse Source

clean up ClassBrowserWorkspace logic and implement assembly model for loaded assemblies;

pull/48/head
Siegfried Pammer 12 years ago
parent
commit
9e5416c8ad
  1. 5
      src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs
  2. 37
      src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserWorkspace.cs
  3. 10
      src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs
  4. 7
      src/Main/Base/Project/Dom/IAssemblyModel.cs
  5. 6
      src/Main/Base/Project/Dom/IEntityModel.cs
  6. 49
      src/Main/Base/Project/Dom/IEntityModelContext.cs
  7. 6
      src/Main/Base/Project/Dom/IMemberModel.cs
  8. 2
      src/Main/Base/Project/Dom/INamespaceModel.cs
  9. 6
      src/Main/Base/Project/Dom/ITypeDefinitionModel.cs
  10. 6
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  11. 1
      src/Main/Base/Project/Src/Project/CompilableProject.cs
  12. 4
      src/Main/Base/Project/Util/SharpDevelopExtensions.cs
  13. 20
      src/Main/SharpDevelop/Dom/AssemblyModel.cs
  14. 8
      src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs
  15. 44
      src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs
  16. 18
      src/Main/SharpDevelop/Dom/ClassBrowser/OpenAssemblyCommand.cs
  17. 9
      src/Main/SharpDevelop/Dom/MemberModel.cs
  18. 2
      src/Main/SharpDevelop/Dom/ModelFactory.cs
  19. 10
      src/Main/SharpDevelop/Dom/NamespaceModel.cs
  20. 9
      src/Main/SharpDevelop/Dom/TypeDefinitionModel.cs
  21. 5
      src/Main/SharpDevelop/SharpDevelop.csproj

5
src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserTreeView.cs

@ -16,11 +16,6 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -16,11 +16,6 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
ClassBrowserWorkspace currentWorkspace;
public ClassBrowserTreeView()
{
Workspace = ClassBrowserSettings.LoadDefaultWorkspace();
}
public ClassBrowserWorkspace Workspace {
get { return currentWorkspace; }
set {

37
src/Main/Base/Project/Dom/ClassBrowser/ClassBrowserWorkspace.cs

@ -18,19 +18,19 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -18,19 +18,19 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
public class ClassBrowserWorkspace
{
ISolution assignedSolution;
IModelCollection<IUnresolvedAssembly> loadedAssemblies;
IModelCollection<IAssemblyModel> loadedAssemblies;
string workspaceName;
public ClassBrowserWorkspace(ISolution assignedSolution, IEnumerable<IUnresolvedAssembly> assemblies = null)
public ClassBrowserWorkspace(ISolution assignedSolution, IEnumerable<IAssemblyModel> assemblies = null)
: this(assignedSolution.FileName, assemblies)
{
this.assignedSolution = assignedSolution;
}
public ClassBrowserWorkspace(string workspaceName, IEnumerable<IUnresolvedAssembly> assemblies = null)
public ClassBrowserWorkspace(string workspaceName, IEnumerable<IAssemblyModel> assemblies = null)
{
this.workspaceName = workspaceName;
this.loadedAssemblies = new SimpleModelCollection<IUnresolvedAssembly>(assemblies ?? EmptyList<IUnresolvedAssembly>.Instance);
this.loadedAssemblies = new SimpleModelCollection<IAssemblyModel>(assemblies ?? EmptyList<IAssemblyModel>.Instance);
}
public bool IsAssigned {
@ -45,38 +45,49 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -45,38 +45,49 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
get { return workspaceName; }
}
public IModelCollection<IUnresolvedAssembly> LoadedAssemblies {
public IModelCollection<IAssemblyModel> LoadedAssemblies {
get { return loadedAssemblies; }
}
}
public static class ClassBrowserSettings
public class ClassBrowserSettings
{
static IUnresolvedAssembly[] LoadAssemblyList(string name)
IAssemblyReference[] ResolveReferences(IUnresolvedAssembly asm)
{
return new IAssemblyReference[0];
}
IAssemblyModel[] LoadAssemblyList(string name)
{
var assemblyNames = Container.GetList<string>("AssemblyList." + name);
CecilLoader loader = new CecilLoader();
return assemblyNames.Select(loader.LoadAssemblyFile).ToArray();
var factory = SD.GetRequiredService<IModelFactory>();
return assemblyNames
.Select(loader.LoadAssemblyFile)
.Select(asm => new AssemblyEntityModelContext(asm, ResolveReferences(asm)))
.Select(factory.CreateAssemblyModel)
.ToArray();
}
static readonly Properties Container = SD.PropertyService.NestedProperties(typeof(ClassBrowserSettings).FullName);
readonly Properties Container = SD.PropertyService.NestedProperties(typeof(ClassBrowserSettings).FullName);
public static ClassBrowserWorkspace LoadDefaultWorkspace()
public ClassBrowserWorkspace LoadDefaultWorkspace()
{
return LoadWorkspace("<default>");
}
public static ClassBrowserWorkspace LoadWorkspace(string name)
public ClassBrowserWorkspace LoadWorkspace(string name)
{
return new ClassBrowserWorkspace(name, LoadAssemblyList(name));
}
public static ClassBrowserWorkspace LoadForSolution(ISolution solution)
public ClassBrowserWorkspace LoadForSolution(ISolution solution)
{
// maybe use solution.Preferences?
return new ClassBrowserWorkspace(solution, LoadAssemblyList(solution.FileName));
}
public static void SaveWorkspace(ClassBrowserWorkspace workspace)
public void SaveWorkspace(ClassBrowserWorkspace workspace)
{
}

10
src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs

@ -3,11 +3,7 @@ @@ -3,11 +3,7 @@
using System;
using System.Collections.Generic;
using System.Windows.Media;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.TreeView;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
@ -44,6 +40,12 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -44,6 +40,12 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
}
}
public override object Icon {
get {
return SD.ResourceService.GetImageSource("PadIcons.ClassBrowser");
}
}
protected override bool IsSpecialNode()
{
return true;

7
src/Main/Base/Project/Dom/IAssemblyModel.cs

@ -53,9 +53,14 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -53,9 +53,14 @@ namespace ICSharpCode.SharpDevelop.Dom
/// </summary>
/// <remarks>
/// <paramref name="oldFile"/> is null if the file is newly added to the assemly.
/// <paramref name="newFile"/> is null if the file is removed from the assembly.
/// <paramref name="newFile"/> is null if the file is removed from the assembly.
/// </remarks>
void Update(IUnresolvedFile oldFile, IUnresolvedFile newFile);
/// <summary>
/// Gets the assembly name (short name).
/// </summary>
new string AssemblyName { get; set; }
}
public sealed class EmptyAssemblyModel : IAssemblyModel

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

@ -44,15 +44,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -44,15 +44,15 @@ namespace ICSharpCode.SharpDevelop.Dom
bool IsShadowing { get; }
/// <summary>
/// Resolves the entity in the current solution snapshot.
/// Resolves the entity in the current compilation.
/// Returns null if the entity could not be resolved.
/// </summary>
IEntity Resolve();
/// <summary>
/// Resolves the entity in the specified solution snapshot.
/// Resolves the entity in the specified compilation.
/// Returns null if the entity could not be resolved.
/// </summary>
IEntity Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot);
IEntity Resolve(ICompilation compilation);
}
}

49
src/Main/Base/Project/Dom/IEntityModelContext.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Refactoring;
@ -27,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -27,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Dom
/// The solution snapshot provided to <see cref="IEntityModel.Resolve(ISolutionSnapshotWithProjectMapping)"/>,
/// or null if the <see cref="IEntityModel.Resolve()"/> overload was used.
/// </param>
ICompilation GetCompilation(ISolutionSnapshotWithProjectMapping solutionSnapshot);
ICompilation GetCompilation();
/// <summary>
/// Returns true if part1 is considered a better candidate for the primary part than part2.
@ -48,16 +49,17 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -48,16 +49,17 @@ namespace ICSharpCode.SharpDevelop.Dom
this.primaryCodeFileExtension = primaryCodeFileExtension;
}
public string AssemblyName {
get { return project.AssemblyName; }
}
public IProject Project {
get { return project; }
}
public ICompilation GetCompilation(ISolutionSnapshotWithProjectMapping solutionSnapshot)
public ICompilation GetCompilation()
{
if (solutionSnapshot != null)
return solutionSnapshot.GetCompilation(project);
else
return SD.ParserService.GetCompilation(project);
return SD.ParserService.GetCompilation(project);
}
public bool IsBetterPart(IUnresolvedTypeDefinition part1, IUnresolvedTypeDefinition part2)
@ -66,6 +68,41 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -66,6 +68,41 @@ namespace ICSharpCode.SharpDevelop.Dom
}
}
public class AssemblyEntityModelContext : IEntityModelContext
{
ICompilation compilation;
IUnresolvedAssembly mainAssembly;
IAssemblyReference[] references;
public AssemblyEntityModelContext(IUnresolvedAssembly mainAssembly, params IAssemblyReference[] references)
{
if (mainAssembly == null)
throw new ArgumentNullException("mainAssembly");
this.mainAssembly = mainAssembly;
this.references = references;
// implement lazy init + weak caching
this.compilation = new SimpleCompilation(mainAssembly, references);
}
public string AssemblyName {
get { return mainAssembly.AssemblyName; }
}
public ICompilation GetCompilation()
{
return compilation;
}
public bool IsBetterPart(IUnresolvedTypeDefinition part1, IUnresolvedTypeDefinition part2)
{
return false;
}
public IProject Project {
get { return null; }
}
}
public static class EntityModelContextUtils
{
public static bool IsBetterPart(IUnresolvedTypeDefinition part1, IUnresolvedTypeDefinition part2, string codeFileExtension)

6
src/Main/Base/Project/Dom/IMemberModel.cs

@ -13,16 +13,16 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -13,16 +13,16 @@ namespace ICSharpCode.SharpDevelop.Dom
public interface IMemberModel : IEntityModel
{
/// <summary>
/// Resolves the member in the current solution snapshot.
/// Resolves the member in the current compilation.
/// Returns null if the member could not be resolved.
/// </summary>
new IMember Resolve();
/// <summary>
/// Resolves the member in the specified solution snapshot.
/// Resolves the member in the specified compilation.
/// Returns null if the member could not be resolved.
/// </summary>
new IMember Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot);
new IMember Resolve(ICompilation compilation);
/// <summary>
/// Gets if the member is virtual. Is true only if the "virtual" modifier was used, but non-virtual

2
src/Main/Base/Project/Dom/INamespaceModel.cs

@ -49,7 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -49,7 +49,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged { add {} remove {} }
public string FullName {
get { return string.Empty; }

6
src/Main/Base/Project/Dom/ITypeDefinitionModel.cs

@ -22,16 +22,16 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -22,16 +22,16 @@ namespace ICSharpCode.SharpDevelop.Dom
IEnumerable<DomRegion> GetPartRegions();
/// <summary>
/// Resolves the type definition in the current solution snapshot.
/// Resolves the type definition in the current compilation.
/// Returns null if the type definition could not be resolved.
/// </summary>
new ITypeDefinition Resolve();
/// <summary>
/// Resolves the type definition in the specified solution snapshot.
/// Resolves the type definition in the specified compilation.
/// Returns null if the type definition could not be resolved.
/// </summary>
new ITypeDefinition Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot);
new ITypeDefinition Resolve(ICompilation compilation);
/// <summary>
/// Retrieves the nested type with the specified name and additional type parameter count

6
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -919,6 +919,10 @@ @@ -919,6 +919,10 @@
class = "ICSharpCode.SharpDevelop.Gui.ClassBrowser.ClassBrowserNavigateForward"/>
<ToolbarItem id = "NavigationSeparator" type = "Separator"/>
<ToolbarItem id = "OpenAssembly"
icon = "Icons.16x16.OpenProjectIcon"
tooltip = "${res:MainWindow.Windows.ClassBrowser.OpenAssembly.ToolTip}"
class = "ICSharpCode.SharpDevelop.Dom.ClassBrowser.OpenAssemblyCommand"/>
<ToolbarItem id = "SelectFilter"
type = "DropDownButton"
icon = "Icons.16x16.FindInFiles"
@ -2275,7 +2279,7 @@ @@ -2275,7 +2279,7 @@
</Path>
<Path name="/SharpDevelop/TreeNodeFactories">
<Class id="WorkspaceTreeNodesFactory" class="ICSharpCode.SharpDevelop.Dom.ClassBrowser.WorkspaceTreeNodesFactory" />
<Class id="ClassBrowserTreeNodesFactory" class="ICSharpCode.SharpDevelop.Dom.ClassBrowser.ClassBrowserTreeNodesFactory" />
</Path>
<Path name = "/SharpDevelop/Views/ClassBrowser/ClassNodeBuilders">

1
src/Main/Base/Project/Src/Project/CompilableProject.cs

@ -358,6 +358,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -358,6 +358,7 @@ namespace ICSharpCode.SharpDevelop.Project
assemblyModel = SD.GetRequiredService<IModelFactory>().CreateAssemblyModel(new ProjectEntityModelContext(this, ".cs"));
var pc = ProjectContent;
if (pc != null && assemblyModel is IUpdateableAssemblyModel) {
((IUpdateableAssemblyModel)assemblyModel).AssemblyName = AssemblyName;
// Add the already loaded files into the model
foreach (var file in pc.Files) {
((IUpdateableAssemblyModel)assemblyModel).Update(null, file);

4
src/Main/Base/Project/Util/SharpDevelopExtensions.cs

@ -537,7 +537,7 @@ namespace ICSharpCode.SharpDevelop @@ -537,7 +537,7 @@ namespace ICSharpCode.SharpDevelop
foreach (var memberModel in typeModel.Members) {
if (memberModel.Name == member.Name) {
if (memberModel.Resolve(snapshot) == member.MemberDefinition) {
if (memberModel.Resolve() == member.MemberDefinition) {
return memberModel;
}
}
@ -580,7 +580,7 @@ namespace ICSharpCode.SharpDevelop @@ -580,7 +580,7 @@ namespace ICSharpCode.SharpDevelop
foreach (var memberModel in typeModel.Members) {
if (memberModel.Name == unresolvedMember.Name) {
if (memberModel.Resolve(snapshot) == member.MemberDefinition) {
if (memberModel.Resolve() == member.MemberDefinition) {
return memberModel;
}
}

20
src/Main/SharpDevelop/Dom/ProjectAssemblyModel.cs → src/Main/SharpDevelop/Dom/AssemblyModel.cs

@ -11,29 +11,25 @@ using ICSharpCode.SharpDevelop.Project; @@ -11,29 +11,25 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom
{
sealed class ProjectAssemblyModel : IUpdateableAssemblyModel
sealed class AssemblyModel : IUpdateableAssemblyModel
{
IEntityModelContext context;
TopLevelTypeDefinitionModelCollection typeDeclarations;
KeyedModelCollection<string, NamespaceModel> namespaces;
NamespaceModel rootNamespace;
public ProjectAssemblyModel(IEntityModelContext context)
public AssemblyModel(IEntityModelContext context)
{
if (context == null)
throw new ArgumentNullException("context");
this.context = context;
this.rootNamespace = new NamespaceModel(context, null, "");
this.rootNamespace = new NamespaceModel(context.Project, null, "");
this.typeDeclarations = new TopLevelTypeDefinitionModelCollection(context);
this.typeDeclarations.CollectionChanged += TypeDeclarationsCollectionChanged;
this.namespaces = new KeyedModelCollection<string, NamespaceModel>(value => value.FullName);
}
public string AssemblyName {
get {
return context.Project.AssemblyName;
}
}
public string AssemblyName { get; set; }
public ITypeDefinitionModelCollection TopLevelTypeDefinitions {
get {
@ -76,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -76,7 +72,7 @@ namespace ICSharpCode.SharpDevelop.Dom
level++;
}
while (level < parts.Length) {
var child = new NamespaceModel(context, ns, parts[level]);
var child = new NamespaceModel(context.Project, ns, parts[level]);
batchList.AddIfNotNull(ns.ChildNamespaces.BatchUpdate());
ns.ChildNamespaces.Add(child);
ns = child;
@ -114,7 +110,5 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -114,7 +110,5 @@ namespace ICSharpCode.SharpDevelop.Dom
d.Dispose();
}
}
}
}
}
}

8
src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserPad.cs

@ -11,10 +11,11 @@ using ICSharpCode.SharpDevelop.Workbench; @@ -11,10 +11,11 @@ using ICSharpCode.SharpDevelop.Workbench;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class ClassBrowserPad : AbstractPadContent
class ClassBrowserPad : AbstractPadContent
{
IProjectService projectService;
ClassBrowserTreeView treeView;
ClassBrowserSettings settings;
DockPanel panel;
ToolBar toolBar;
@ -26,6 +27,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -26,6 +27,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
public ClassBrowserPad(IProjectService projectService)
{
this.projectService = projectService;
this.settings = new ClassBrowserSettings();
panel = new DockPanel();
treeView = new ClassBrowserTreeView(); // treeView must be created first because it's used by CreateToolBar
@ -59,9 +61,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -59,9 +61,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
void ProjectServiceCurrentSolutionChanged(object sender, EventArgs e)
{
if (projectService.CurrentSolution == null) {
treeView.Workspace = ClassBrowserSettings.LoadDefaultWorkspace();
treeView.Workspace = settings.LoadDefaultWorkspace();
} else {
treeView.Workspace = ClassBrowserSettings.LoadForSolution(projectService.CurrentSolution);
treeView.Workspace = settings.LoadForSolution(projectService.CurrentSolution);
}
}

44
src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
// 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.TreeView;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
class ClassBrowserTreeNodesFactory : ITreeNodeFactory
{
public Type GetSupportedType(object model)
{
if (model is ISolution)
return typeof(ISolution);
if (model is IProject)
return typeof(IProject);
if (model is INamespaceModel)
return typeof(INamespaceModel);
if (model is ITypeDefinitionModel)
return typeof(ITypeDefinitionModel);
if (model is IMemberModel)
return typeof(IMemberModel);
return null;
}
public SharpTreeNode CreateTreeNode(object model)
{
if (model is ISolution)
return new SolutionTreeNode((ISolution)model);
if (model is IProject)
return new ProjectTreeNode((IProject)model);
if (model is INamespaceModel)
return new NamespaceTreeNode((INamespaceModel)model);
if (model is ITypeDefinitionModel)
return new TypeDefinitionTreeNode((ITypeDefinitionModel)model);
if (model is IMemberModel)
return new MemberTreeNode((IMemberModel)model);
return null;
}
}
}

18
src/Main/SharpDevelop/Dom/ClassBrowser/OpenAssemblyCommand.cs

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
// 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 Microsoft.Win32;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
/// <summary>
/// Description of OpenAssemblyCommand.
/// </summary>
class OpenAssemblyCommand : SimpleCommand
{
public override void Execute(object parameter)
{
}
}
}

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

@ -77,13 +77,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -77,13 +77,12 @@ namespace ICSharpCode.SharpDevelop.Dom
#region Resolve
public IMember Resolve()
{
var compilation = context.GetCompilation(null);
var compilation = context.GetCompilation();
return member.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly));
}
public IMember Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot)
public IMember Resolve(ICompilation compilation)
{
var compilation = context.GetCompilation(solutionSnapshot);
return member.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly));
}
@ -92,9 +91,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -92,9 +91,9 @@ namespace ICSharpCode.SharpDevelop.Dom
return Resolve();
}
IEntity IEntityModel.Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot)
IEntity IEntityModel.Resolve(ICompilation compilation)
{
return Resolve(solutionSnapshot);
return Resolve(compilation);
}
#endregion

2
src/Main/SharpDevelop/Dom/ModelFactory.cs

@ -10,7 +10,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -10,7 +10,7 @@ namespace ICSharpCode.SharpDevelop.Dom
{
public IAssemblyModel CreateAssemblyModel(IEntityModelContext context)
{
return new ProjectAssemblyModel(context);
return new AssemblyModel(context);
}
public ITypeDefinitionModel CreateTypeDefinitionModel(IEntityModelContext context, params IUnresolvedTypeDefinition[] parts)

10
src/Main/SharpDevelop/Dom/NamespaceModel.cs

@ -11,17 +11,15 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -11,17 +11,15 @@ namespace ICSharpCode.SharpDevelop.Dom
{
sealed class NamespaceModel : INamespaceModel
{
IEntityModelContext context;
IProject parentProject;
string name;
NamespaceModel parent;
NullSafeSimpleModelCollection<NamespaceModel> childNamespaces;
NullSafeSimpleModelCollection<ITypeDefinitionModel> typeDefinitions;
public NamespaceModel(IEntityModelContext context, NamespaceModel parent, string name)
public NamespaceModel(IProject parentProject, NamespaceModel parent, string name)
{
if (context == null)
throw new ArgumentNullException("context");
this.context = context;
this.parentProject = parentProject;
this.parent = parent;
this.name = name;
this.typeDefinitions = new NullSafeSimpleModelCollection<ITypeDefinitionModel>();
@ -67,7 +65,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -67,7 +65,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
public IProject ParentProject {
get { return context.Project; }
get { return parentProject; }
}
public DomRegion Region {

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

@ -79,13 +79,12 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -79,13 +79,12 @@ namespace ICSharpCode.SharpDevelop.Dom
#region Resolve
public ITypeDefinition Resolve()
{
var compilation = context.GetCompilation(null);
var compilation = context.GetCompilation();
return compilation.MainAssembly.GetTypeDefinition(fullTypeName);
}
public ITypeDefinition Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot)
public ITypeDefinition Resolve(ICompilation compilation)
{
var compilation = context.GetCompilation(solutionSnapshot);
return compilation.MainAssembly.GetTypeDefinition(fullTypeName);
}
@ -94,9 +93,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -94,9 +93,9 @@ namespace ICSharpCode.SharpDevelop.Dom
return Resolve();
}
IEntity IEntityModel.Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot)
IEntity IEntityModel.Resolve(ICompilation compilation)
{
return Resolve(solutionSnapshot);
return Resolve(compilation);
}
#endregion

5
src/Main/SharpDevelop/SharpDevelop.csproj

@ -107,12 +107,13 @@ @@ -107,12 +107,13 @@
<Link>Project\Build\MSBuildEngine\ExtendedBinaryReader.cs</Link>
</Compile>
<Compile Include="Dom\ClassBrowser\ClassBrowserPad.cs" />
<Compile Include="Dom\ClassBrowser\WorkspaceTreeNodesFactory.cs" />
<Compile Include="Dom\ClassBrowser\ClassBrowserTreeNodesFactory.cs" />
<Compile Include="Dom\ClassBrowser\OpenAssemblyCommand.cs" />
<Compile Include="Dom\ModelFactory.cs" />
<Compile Include="Dom\MemberModel.cs" />
<Compile Include="Dom\NamespaceModel.cs" />
<Compile Include="Dom\NestedTypeDefinitionModelCollection.cs" />
<Compile Include="Dom\ProjectAssemblyModel.cs" />
<Compile Include="Dom\AssemblyModel.cs" />
<Compile Include="Dom\TopLevelTypeDefinitionModelCollection.cs" />
<Compile Include="Dom\TreeNodeFactoryService.cs" />
<Compile Include="Dom\TypeDefinitionModel.cs" />

Loading…
Cancel
Save