From a9c0350db3b0f559562da41e75e78768addc02f1 Mon Sep 17 00:00:00 2001 From: Andreas Weizel Date: Mon, 19 Aug 2013 01:01:44 +0200 Subject: [PATCH] "Base types" node now only shown in ClassBrowser, if there are indeed any base types. --- .../Base/Project/Dom/ClassBrowser/BaseTypesTreeNode.cs | 7 ++++--- .../Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs | 10 +++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Main/Base/Project/Dom/ClassBrowser/BaseTypesTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/BaseTypesTreeNode.cs index 0297c65ac6..16f060cba2 100644 --- a/src/Main/Base/Project/Dom/ClassBrowser/BaseTypesTreeNode.cs +++ b/src/Main/Base/Project/Dom/ClassBrowser/BaseTypesTreeNode.cs @@ -2,6 +2,7 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.Linq; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser @@ -23,6 +24,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser this.definition.Updated += (sender, e) => UpdateBaseTypes(); this.text = SD.ResourceService.GetString("MainWindow.Windows.ClassBrowser.BaseTypes"); baseTypes = new SimpleModelCollection(); + UpdateBaseTypes(); } protected override IModelCollection ModelChildren { @@ -31,10 +33,9 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser } } - protected override void LoadChildren() + public bool HasBaseTypes() { - UpdateBaseTypes(); - base.LoadChildren(); + return baseTypes.Count > 0; } void UpdateBaseTypes() diff --git a/src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs b/src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs index 4a0fcf4def..e53205281f 100644 --- a/src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs +++ b/src/Main/Base/Project/Dom/ClassBrowser/TypeDefinitionTreeNode.cs @@ -22,6 +22,7 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser if (definition == null) throw new ArgumentNullException("definition"); this.definition = definition; + this.definition.Updated += (sender, e) => UpdateBaseTypesNode(); } protected override object GetModel() @@ -57,8 +58,15 @@ namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser protected override void LoadChildren() { base.LoadChildren(); + UpdateBaseTypesNode(); + } + + void UpdateBaseTypesNode() + { + this.Children.RemoveAll(n => n is BaseTypesTreeNode); var baseTypesTreeNode = new BaseTypesTreeNode(definition); - Children.Insert(0, baseTypesTreeNode); + if (baseTypesTreeNode.HasBaseTypes()) + Children.Insert(0, baseTypesTreeNode); } public override void ActivateItem(System.Windows.RoutedEventArgs e)