diff --git a/src/Main/Base/Project/Dom/ClassBrowser/AssemblyTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/AssemblyTreeNode.cs new file mode 100644 index 0000000000..b07618baf4 --- /dev/null +++ b/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 NodeComparer { + get { + return NodeTextComparer; + } + } + + protected override IModelCollection ModelChildren { + get { + return model.Namespaces; + } + } + } +} + + diff --git a/src/Main/Base/Project/Dom/ClassBrowser/MemberTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/MemberTreeNode.cs new file mode 100644 index 0000000000..4a4e48e038 --- /dev/null +++ b/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); + } + } +} + + diff --git a/src/Main/Base/Project/Dom/ClassBrowser/NamespaceTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/NamespaceTreeNode.cs new file mode 100644 index 0000000000..94d9250917 --- /dev/null +++ b/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 NodeComparer { + get { + return NodeTextComparer; + } + } + + protected override IModelCollection ModelChildren { + get { + return model.Types; + } + } + + public override object Icon { + get { + return ClassBrowserIconService.Namespace.ImageSource; + } + } + + public override object Text { + get { + return model.FullName; + } + } + } +} + + diff --git a/src/Main/Base/Project/Dom/ClassBrowser/ProjectTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/ProjectTreeNode.cs new file mode 100644 index 0000000000..7f80b0fc78 --- /dev/null +++ b/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 NodeComparer { + get { + return NodeTextComparer; + } + } + + protected override IModelCollection ModelChildren { + get { + return project.AssemblyModel.Namespaces; + } + } + } +} + + diff --git a/src/Main/Base/Project/Dom/ClassBrowser/SolutionTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/SolutionTreeNode.cs new file mode 100644 index 0000000000..962d69e5db --- /dev/null +++ b/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 NodeComparer { + get { + return NodeTextComparer; + } + } + + protected override IModelCollection ModelChildren { + get { + return solution.Projects; + } + } + } +} + + diff --git a/src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs new file mode 100644 index 0000000000..fb9d8cc24b --- /dev/null +++ b/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 NodeComparer { + get { + return NodeTextComparer; + } + } + + protected override IModelCollection ModelChildren { + get { + return definition.Members; + } + } + + public override void ActivateItem(System.Windows.RoutedEventArgs e) + { + var target = definition.Resolve(); + if (target != null) + NavigationService.NavigateTo(target); + } + } +} + + diff --git a/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs index 40771a191b..6a2187b380 100644 --- a/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs +++ b/src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs @@ -8,7 +8,6 @@ using ICSharpCode.Core.Presentation; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.Utils; using ICSharpCode.TreeView; -using ICSharpCode.SharpDevelop.Project; 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 NodeComparer { - get { return NodeTextComparer; } - } - - protected override IModelCollection 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 NodeComparer { - get { return NodeTextComparer; } - } - - protected override IModelCollection 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 NodeComparer { - get { return NodeTextComparer; } - } - - protected override IModelCollection 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 NodeComparer { - get { return NodeTextComparer; } - } - - protected override IModelCollection 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 NodeComparer { - get { return NodeTextComparer; } - } - - protected override IModelCollection 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 NodeComparer { - get { return NodeTextComparer; } - } - - protected override IModelCollection ModelChildren { - get { return ImmutableModelCollection.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"); - } - } - } } diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 18843a7a4f..96b665bce5 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -84,8 +84,14 @@ + + + + + + diff --git a/src/Main/SharpDevelop/Dom/ClassBrowser/WorkspaceTreeNodesFactory.cs b/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs similarity index 95% rename from src/Main/SharpDevelop/Dom/ClassBrowser/WorkspaceTreeNodesFactory.cs rename to src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs index 7709e4f187..1d6a7885e4 100644 --- a/src/Main/SharpDevelop/Dom/ClassBrowser/WorkspaceTreeNodesFactory.cs +++ b/src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs @@ -10,7 +10,7 @@ using ICSharpCode.SharpDevelop.Project; namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser { - public class WorkspaceTreeNodesFactory : ITreeNodeFactory + public class ClassBrowserTreeNodesFactory : ITreeNodeFactory { public Type GetSupportedType(object model) { diff --git a/src/Main/SharpDevelop/SharpDevelop.csproj b/src/Main/SharpDevelop/SharpDevelop.csproj index 396f415c43..cf42266e1d 100644 --- a/src/Main/SharpDevelop/SharpDevelop.csproj +++ b/src/Main/SharpDevelop/SharpDevelop.csproj @@ -107,7 +107,7 @@ Project\Build\MSBuildEngine\ExtendedBinaryReader.cs - +