Browse Source

split tree nodes in multiple files

pull/48/head
Siegfried Pammer 12 years ago
parent
commit
16e68f8d03
  1. 40
      src/Main/Base/Project/Dom/ClassBrowser/AssemblyTreeNode.cs
  2. 65
      src/Main/Base/Project/Dom/ClassBrowser/MemberTreeNode.cs
  3. 56
      src/Main/Base/Project/Dom/ClassBrowser/NamespaceTreeNode.cs
  4. 53
      src/Main/Base/Project/Dom/ClassBrowser/ProjectTreeNode.cs
  5. 53
      src/Main/Base/Project/Dom/ClassBrowser/SolutionTreeNode.cs
  6. 61
      src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs
  7. 244
      src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs
  8. 6
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  9. 2
      src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs
  10. 2
      src/Main/SharpDevelop/SharpDevelop.csproj

40
src/Main/Base/Project/Dom/ClassBrowser/AssemblyTreeNode.cs

@ -0,0 +1,40 @@
// 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 System.Collections.Generic;
using ICSharpCode.TreeView;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class AssemblyTreeNode : ModelCollectionTreeNode
{
IAssemblyModel model;
public AssemblyTreeNode(IAssemblyModel model)
{
if (model == null)
throw new ArgumentNullException("model");
this.model = model;
}
protected override object GetModel()
{
return model;
}
protected override IComparer<SharpTreeNode> NodeComparer {
get {
return NodeTextComparer;
}
}
protected override IModelCollection<object> ModelChildren {
get {
return model.Namespaces;
}
}
}
}

65
src/Main/Base/Project/Dom/ClassBrowser/MemberTreeNode.cs

@ -0,0 +1,65 @@
// 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.NRefactory.TypeSystem;
using ICSharpCode.TreeView;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class MemberTreeNode : SharpTreeNode
{
IMemberModel model;
public MemberTreeNode(IMemberModel model)
{
if (model == null)
throw new ArgumentNullException("model");
this.model = model;
// disable lazy loading to avoid showing a useless + sign in the tree.
// remove this line if you add child nodes
LazyLoading = false;
}
protected override object GetModel()
{
return model;
}
public override object Icon {
// TODO why do I have to resolve this?
get {
return ClassBrowserIconService.GetIcon(model.Resolve()).ImageSource;
}
}
object cachedText;
public override object Text {
get {
if (cachedText == null)
cachedText = GetText();
return cachedText;
}
}
object GetText()
{
var member = model.Resolve();
if (member == null)
return model.Name;
IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames;
return ambience.ConvertEntity(member);
}
public override void ActivateItem(System.Windows.RoutedEventArgs e)
{
var target = model.Resolve();
if (target != null)
NavigationService.NavigateTo(target);
}
}
}

56
src/Main/Base/Project/Dom/ClassBrowser/NamespaceTreeNode.cs

@ -0,0 +1,56 @@
// 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 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
{
public class NamespaceTreeNode : ModelCollectionTreeNode
{
INamespaceModel model;
public NamespaceTreeNode(INamespaceModel model)
{
if (model == null)
throw new ArgumentNullException("model");
this.model = model;
}
protected override object GetModel()
{
return model;
}
protected override IComparer<SharpTreeNode> NodeComparer {
get {
return NodeTextComparer;
}
}
protected override IModelCollection<object> ModelChildren {
get {
return model.Types;
}
}
public override object Icon {
get {
return ClassBrowserIconService.Namespace.ImageSource;
}
}
public override object Text {
get {
return model.FullName;
}
}
}
}

53
src/Main/Base/Project/Dom/ClassBrowser/ProjectTreeNode.cs

@ -0,0 +1,53 @@
// 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 System.Collections.Generic;
using ICSharpCode.TreeView;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class ProjectTreeNode : ModelCollectionTreeNode
{
IProject project;
public ProjectTreeNode(IProject project)
{
if (project == null)
throw new ArgumentNullException("project");
this.project = project;
}
protected override object GetModel()
{
return project;
}
public override object Text {
get {
return project.Name;
}
}
public override object Icon {
get {
return IconService.GetImageSource(IconService.GetImageForProjectType(project.Language));
}
}
protected override IComparer<SharpTreeNode> NodeComparer {
get {
return NodeTextComparer;
}
}
protected override IModelCollection<object> ModelChildren {
get {
return project.AssemblyModel.Namespaces;
}
}
}
}

53
src/Main/Base/Project/Dom/ClassBrowser/SolutionTreeNode.cs

@ -0,0 +1,53 @@
// 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 System.Collections.Generic;
using ICSharpCode.TreeView;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class SolutionTreeNode : ModelCollectionTreeNode
{
ISolution solution;
public SolutionTreeNode(ISolution solution)
{
if (solution == null)
throw new ArgumentNullException("solution");
this.solution = solution;
}
protected override object GetModel()
{
return solution;
}
public override object Text {
get {
return "Solution " + solution.Name;
}
}
public override object Icon {
get {
return IconService.GetImageSource("Icons.16x16.SolutionIcon");
}
}
protected override IComparer<SharpTreeNode> NodeComparer {
get {
return NodeTextComparer;
}
}
protected override IModelCollection<object> ModelChildren {
get {
return solution.Projects;
}
}
}
}

61
src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs

@ -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 System.Collections.Generic;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.TreeView;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class TypeDefinitionTreeNode : ModelCollectionTreeNode
{
ITypeDefinitionModel definition;
public TypeDefinitionTreeNode(ITypeDefinitionModel definition)
{
if (definition == null)
throw new ArgumentNullException("definition");
this.definition = definition;
}
protected override object GetModel()
{
return definition;
}
public override object Icon {
// TODO why do I have to resolve this?
get {
return ClassBrowserIconService.GetIcon(definition.Resolve()).ImageSource;
}
}
public override object Text {
get {
return definition.Name;
}
}
protected override IComparer<SharpTreeNode> NodeComparer {
get {
return NodeTextComparer;
}
}
protected override IModelCollection<object> ModelChildren {
get {
return definition.Members;
}
}
public override void ActivateItem(System.Windows.RoutedEventArgs e)
{
var target = definition.Resolve();
if (target != null)
NavigationService.NavigateTo(target);
}
}
}

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

@ -8,7 +8,6 @@ using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.Utils; using ICSharpCode.NRefactory.Utils;
using ICSharpCode.TreeView; using ICSharpCode.TreeView;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{ {
@ -57,247 +56,4 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
} }
} }
} }
public class SolutionTreeNode : ModelCollectionTreeNode
{
ISolution solution;
public SolutionTreeNode(ISolution solution)
{
if (solution == null)
throw new ArgumentNullException("solution");
this.solution = solution;
}
protected override object GetModel()
{
return solution;
}
public override object Text {
get { return "Solution " + solution.Name; }
}
public override object Icon {
get { return IconService.GetImageSource("Icons.16x16.SolutionIcon"); }
}
protected override IComparer<SharpTreeNode> NodeComparer {
get { return NodeTextComparer; }
}
protected override IModelCollection<object> ModelChildren {
get { return solution.Projects; }
}
}
public class ProjectTreeNode : ModelCollectionTreeNode
{
IProject project;
public ProjectTreeNode(IProject project)
{
if (project == null)
throw new ArgumentNullException("project");
this.project = project;
}
protected override object GetModel()
{
return project;
}
public override object Text {
get { return project.Name; }
}
public override object Icon {
get { return IconService.GetImageSource(IconService.GetImageForProjectType(project.Language)); }
}
protected override IComparer<SharpTreeNode> NodeComparer {
get { return NodeTextComparer; }
}
protected override IModelCollection<object> ModelChildren {
get { return project.AssemblyModel.Namespaces; }
}
}
public class AssemblyTreeNode : ModelCollectionTreeNode
{
IAssemblyModel model;
public AssemblyTreeNode(IAssemblyModel model)
{
if (model == null)
throw new ArgumentNullException("model");
this.model = model;
}
protected override object GetModel()
{
return model;
}
protected override IComparer<SharpTreeNode> NodeComparer {
get { return NodeTextComparer; }
}
protected override IModelCollection<object> ModelChildren {
get { return model.Namespaces; }
}
}
public class NamespaceTreeNode : ModelCollectionTreeNode
{
INamespaceModel model;
public NamespaceTreeNode(INamespaceModel model)
{
if (model == null)
throw new ArgumentNullException("model");
this.model = model;
}
protected override object GetModel()
{
return model;
}
protected override IComparer<SharpTreeNode> NodeComparer {
get { return NodeTextComparer; }
}
protected override IModelCollection<object> ModelChildren {
get { return model.Types; }
}
public override object Icon {
get { return ClassBrowserIconService.Namespace.ImageSource; }
}
public override object Text {
get { return model.FullName; }
}
}
public class TypeDefinitionTreeNode : ModelCollectionTreeNode
{
ITypeDefinitionModel definition;
public TypeDefinitionTreeNode(ITypeDefinitionModel definition)
{
if (definition == null)
throw new ArgumentNullException("definition");
this.definition = definition;
}
protected override object GetModel()
{
return definition;
}
public override object Icon {
// TODO why do I have to resolve this?
get { return ClassBrowserIconService.GetIcon(definition.Resolve()).ImageSource; }
}
public override object Text {
get { return definition.Name; }
}
protected override IComparer<SharpTreeNode> NodeComparer {
get { return NodeTextComparer; }
}
protected override IModelCollection<object> ModelChildren {
get { return definition.Members; }
}
public override void ActivateItem(System.Windows.RoutedEventArgs e)
{
var target = definition.Resolve();
if (target != null)
NavigationService.NavigateTo(target);
}
public override void ShowContextMenu()
{
var model = this.Model;
if (model is IEntityModel) {
var ctx = MenuService.ShowContextMenu(null, (IEntityModel) model, "/SharpDevelop/EntityContextMenu");
}
}
}
public class MemberTreeNode : ModelCollectionTreeNode
{
IMemberModel model;
public MemberTreeNode(IMemberModel model)
{
if (model == null)
throw new ArgumentNullException("model");
this.model = model;
// disable lazy loading to avoid showing a useless + sign in the tree.
// remove this line if you add child nodes
LazyLoading = false;
}
protected override object GetModel()
{
return model;
}
public override object Icon {
// TODO why do I have to resolve this?
get {
return ClassBrowserIconService.GetIcon(model.Resolve()).ImageSource;
}
}
object cachedText;
public override object Text {
get {
if (cachedText == null)
cachedText = GetText();
return cachedText;
}
}
object GetText()
{
var member = model.Resolve();
if (member == null)
return model.Name;
IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames;
return ambience.ConvertEntity(member);
}
protected override IComparer<SharpTreeNode> NodeComparer {
get { return NodeTextComparer; }
}
protected override IModelCollection<object> ModelChildren {
get { return ImmutableModelCollection<object>.Empty; }
}
public override void ActivateItem(System.Windows.RoutedEventArgs e)
{
var target = model.Resolve();
if (target != null)
NavigationService.NavigateTo(target);
}
public override void ShowContextMenu()
{
var model = this.Model;
if (model is IEntityModel) {
var ctx = MenuService.ShowContextMenu(null, (IEntityModel) model, "/SharpDevelop/EntityContextMenu");
}
}
}
} }

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

@ -84,8 +84,14 @@
</Compile> </Compile>
<Compile Include="Designer\IDesignerTypeResolutionService.cs" /> <Compile Include="Designer\IDesignerTypeResolutionService.cs" />
<Compile Include="Designer\TypeResolutionService.cs" /> <Compile Include="Designer\TypeResolutionService.cs" />
<Compile Include="Dom\ClassBrowser\AssemblyTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\ClassBrowserTreeView.cs" /> <Compile Include="Dom\ClassBrowser\ClassBrowserTreeView.cs" />
<Compile Include="Dom\ClassBrowser\ClassBrowserWorkspace.cs" /> <Compile Include="Dom\ClassBrowser\ClassBrowserWorkspace.cs" />
<Compile Include="Dom\ClassBrowser\MemberTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\NamespaceTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\ProjectTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\SolutionTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\TypeDefinitionTreeNode.cs" />
<Compile Include="Dom\ClassBrowser\WorkspaceTreeNode.cs" /> <Compile Include="Dom\ClassBrowser\WorkspaceTreeNode.cs" />
<Compile Include="Dom\IAssemblyModel.cs" /> <Compile Include="Dom\IAssemblyModel.cs" />
<Compile Include="Dom\IEntityModelContext.cs" /> <Compile Include="Dom\IEntityModelContext.cs" />

2
src/Main/SharpDevelop/Dom/ClassBrowser/WorkspaceTreeNodesFactory.cs → src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs

@ -10,7 +10,7 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{ {
public class WorkspaceTreeNodesFactory : ITreeNodeFactory public class ClassBrowserTreeNodesFactory : ITreeNodeFactory
{ {
public Type GetSupportedType(object model) public Type GetSupportedType(object model)
{ {

2
src/Main/SharpDevelop/SharpDevelop.csproj

@ -107,7 +107,7 @@
<Link>Project\Build\MSBuildEngine\ExtendedBinaryReader.cs</Link> <Link>Project\Build\MSBuildEngine\ExtendedBinaryReader.cs</Link>
</Compile> </Compile>
<Compile Include="Dom\ClassBrowser\ClassBrowserPad.cs" /> <Compile Include="Dom\ClassBrowser\ClassBrowserPad.cs" />
<Compile Include="Dom\ClassBrowser\WorkspaceTreeNodesFactory.cs" /> <Compile Include="Dom\ClassBrowser\ClassBrowserTreeNodesFactory.cs" />
<Compile Include="Dom\ModelFactory.cs" /> <Compile Include="Dom\ModelFactory.cs" />
<Compile Include="Dom\MemberModel.cs" /> <Compile Include="Dom\MemberModel.cs" />
<Compile Include="Dom\NamespaceModel.cs" /> <Compile Include="Dom\NamespaceModel.cs" />

Loading…
Cancel
Save