From 3d510625dd552edd508401658ee604e428c5e624 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Mon, 16 Jul 2018 22:44:06 +0200 Subject: [PATCH] Fix #623: move public Analyze method to AnalyzerTreeView, so it is accessible from plugins. --- ILSpy/Analyzers/AnalyzeContextMenuEntry.cs | 29 ++------------------ ILSpy/Analyzers/AnalyzerTreeView.cs | 32 +++++++++++++++++++++- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/ILSpy/Analyzers/AnalyzeContextMenuEntry.cs b/ILSpy/Analyzers/AnalyzeContextMenuEntry.cs index af51a38e8..d928c4197 100644 --- a/ILSpy/Analyzers/AnalyzeContextMenuEntry.cs +++ b/ILSpy/Analyzers/AnalyzeContextMenuEntry.cs @@ -57,35 +57,10 @@ namespace ICSharpCode.ILSpy.Analyzers { if (context.SelectedTreeNodes != null) { foreach (IMemberTreeNode node in context.SelectedTreeNodes) { - Analyze(node.Member); + AnalyzerTreeView.Instance.Analyze(node.Member); } } else if (context.Reference != null && context.Reference.Reference is IEntity entity) { - Analyze(entity); - } - } - - public static void Analyze(IEntity entity) - { - if (entity == null) - return; - switch (entity) { - case ITypeDefinition td: - AnalyzerTreeView.Instance.ShowOrFocus(new AnalyzedTypeTreeNode(td)); - break; - case IField fd: - AnalyzerTreeView.Instance.ShowOrFocus(new AnalyzedFieldTreeNode(fd)); - break; - case IMethod md: - AnalyzerTreeView.Instance.ShowOrFocus(new AnalyzedMethodTreeNode(md)); - break; - case IProperty pd: - AnalyzerTreeView.Instance.ShowOrFocus(new AnalyzedPropertyTreeNode(pd)); - break; - case IEvent ed: - AnalyzerTreeView.Instance.ShowOrFocus(new AnalyzedEventTreeNode(ed)); - break; - default: - throw new ArgumentOutOfRangeException(nameof(entity), $"Entity {entity.GetType().FullName} is not supported."); + AnalyzerTreeView.Instance.Analyze(entity); } } } diff --git a/ILSpy/Analyzers/AnalyzerTreeView.cs b/ILSpy/Analyzers/AnalyzerTreeView.cs index 1849cb52b..7a3329a40 100644 --- a/ILSpy/Analyzers/AnalyzerTreeView.cs +++ b/ILSpy/Analyzers/AnalyzerTreeView.cs @@ -16,10 +16,13 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. +using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Windows; +using ICSharpCode.Decompiler.TypeSystem; +using ICSharpCode.ILSpy.Analyzers.TreeNodes; using ICSharpCode.TreeView; namespace ICSharpCode.ILSpy.Analyzers @@ -82,7 +85,7 @@ namespace ICSharpCode.ILSpy.Analyzers this.SelectedItem = node; this.FocusNode(node); } - + public void ShowOrFocus(AnalyzerTreeNode node) { if (node is AnalyzerEntityTreeNode) { @@ -100,6 +103,33 @@ namespace ICSharpCode.ILSpy.Analyzers Show(node); } + public void Analyze(IEntity entity) + { + if (entity == null) { + throw new ArgumentNullException(nameof(entity)); + } + + switch (entity) { + case ITypeDefinition td: + ShowOrFocus(new AnalyzedTypeTreeNode(td)); + break; + case IField fd: + ShowOrFocus(new AnalyzedFieldTreeNode(fd)); + break; + case IMethod md: + ShowOrFocus(new AnalyzedMethodTreeNode(md)); + break; + case IProperty pd: + ShowOrFocus(new AnalyzedPropertyTreeNode(pd)); + break; + case IEvent ed: + ShowOrFocus(new AnalyzedEventTreeNode(ed)); + break; + default: + throw new ArgumentOutOfRangeException(nameof(entity), $"Entity {entity.GetType().FullName} is not supported."); + } + } + void IPane.Closed() { this.Root.Children.Clear();