diff --git a/src/VisualFindReferences.Core.Tests/Graph/Model/FoundReferencesTests.cs b/src/VisualFindReferences.Core.Tests/Graph/Model/FoundReferencesTests.cs index a2ee3de..0e5f36b 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/Model/FoundReferencesTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/Model/FoundReferencesTests.cs @@ -1,7 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.Model { using VisualFindReferences.Core.Graph.Model; - using System; using Xunit; using FluentAssertions; using NSubstitute; diff --git a/src/VisualFindReferences.Core.Tests/Graph/Model/GraphAnimationTests.cs b/src/VisualFindReferences.Core.Tests/Graph/Model/GraphAnimationTests.cs index 1088428..bb6aedd 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/Model/GraphAnimationTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/Model/GraphAnimationTests.cs @@ -1,7 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.Model { using VisualFindReferences.Core.Graph.Model; - using System; using Xunit; using FluentAssertions; using System.Collections.Generic; diff --git a/src/VisualFindReferences.Core.Tests/Graph/Model/NodeGraphTests.cs b/src/VisualFindReferences.Core.Tests/Graph/Model/NodeGraphTests.cs index 569e4fb..f734b63 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/Model/NodeGraphTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/Model/NodeGraphTests.cs @@ -1,13 +1,8 @@ namespace VisualFindReferences.Core.Tests.Graph.Model { using VisualFindReferences.Core.Graph.Model; - using System; using Xunit; using FluentAssertions; - using NSubstitute; - using System.Windows.Media; - using VisualFindReferences.Core.Graph.Layout; - using System.Collections.Generic; using VisualFindReferences.Core.Graph.ViewModel; using System.Collections.ObjectModel; diff --git a/src/VisualFindReferences.Core.Tests/Graph/Model/VFRNodeGraphTests.cs b/src/VisualFindReferences.Core.Tests/Graph/Model/VFRNodeGraphTests.cs index ed7c9fa..a440a6f 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/Model/VFRNodeGraphTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/Model/VFRNodeGraphTests.cs @@ -1,12 +1,8 @@ namespace VisualFindReferences.Core.Tests.Graph.Model { using VisualFindReferences.Core.Graph.Model; - using System; using Xunit; using FluentAssertions; - using NSubstitute; - using System.Windows.Media; - using Microsoft.CodeAnalysis; using VisualFindReferences.Core.Graph.ViewModel; public class VFRNodeGraphTests diff --git a/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewTests.cs b/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewTests.cs index 41970b7..a94f79e 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewTests.cs @@ -1,11 +1,8 @@ namespace VisualFindReferences.Core.Tests.Graph.View { using VisualFindReferences.Core.Graph.View; - using System; using Xunit; using FluentAssertions; - using System.ComponentModel; - using VisualFindReferences.Core.Graph.ViewModel; using VisualFindReferences.Core.Graph.Model; public class ConnectorViewTests diff --git a/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewsContainerTests.cs b/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewsContainerTests.cs index cd18f5c..8b59e2f 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewsContainerTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/View/ConnectorViewsContainerTests.cs @@ -1,7 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.View { using VisualFindReferences.Core.Graph.View; - using System; using Xunit; using System.Windows; using FluentAssertions; diff --git a/src/VisualFindReferences.Core.Tests/Graph/View/IgnoreSizeTests.cs b/src/VisualFindReferences.Core.Tests/Graph/View/IgnoreSizeTests.cs index e5c82b5..b5d799d 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/View/IgnoreSizeTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/View/IgnoreSizeTests.cs @@ -1,7 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.View { using VisualFindReferences.Core.Graph.View; - using System; using Xunit; using System.Windows; using System.Windows.Media; diff --git a/src/VisualFindReferences.Core.Tests/Graph/View/LoadingContainerTests.cs b/src/VisualFindReferences.Core.Tests/Graph/View/LoadingContainerTests.cs index f8d5db8..b8acd51 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/View/LoadingContainerTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/View/LoadingContainerTests.cs @@ -1,7 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.View { using VisualFindReferences.Core.Graph.View; - using System; using Xunit; using FluentAssertions; diff --git a/src/VisualFindReferences.Core.Tests/Graph/View/NodeGraphViewTests.cs b/src/VisualFindReferences.Core.Tests/Graph/View/NodeGraphViewTests.cs index f77ca41..e2463b3 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/View/NodeGraphViewTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/View/NodeGraphViewTests.cs @@ -1,18 +1,11 @@ namespace VisualFindReferences.Core.Tests.Graph.View { using VisualFindReferences.Core.Graph.View; - using System; using Xunit; using FluentAssertions; - using NSubstitute; - using System.Collections.Generic; using VisualFindReferences.Core.Graph.Model; - using VisualFindReferences.Core.Graph.Layout; using System.Windows.Media; using System.Windows; - using System.Windows.Input; - using System.Drawing; - using VisualFindReferences.Core.Graph.ViewModel; public class NodeGraphViewTests { diff --git a/src/VisualFindReferences.Core.Tests/Graph/View/NodeViewsContainerTests.cs b/src/VisualFindReferences.Core.Tests/Graph/View/NodeViewsContainerTests.cs index f271360..b283fcc 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/View/NodeViewsContainerTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/View/NodeViewsContainerTests.cs @@ -1,7 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.View { using VisualFindReferences.Core.Graph.View; - using System; using Xunit; using System.Windows; using FluentAssertions; diff --git a/src/VisualFindReferences.Core.Tests/Graph/View/ZoomAndPanTests.cs b/src/VisualFindReferences.Core.Tests/Graph/View/ZoomAndPanTests.cs index 6cdc23b..367f1e0 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/View/ZoomAndPanTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/View/ZoomAndPanTests.cs @@ -1,7 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.View { using VisualFindReferences.Core.Graph.View; - using System; using Xunit; using FluentAssertions; using VisualFindReferences.Core.Graph.Layout; diff --git a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/ConnectorViewModelTests.cs b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/ConnectorViewModelTests.cs index 265ea48..9663169 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/ConnectorViewModelTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/ConnectorViewModelTests.cs @@ -5,7 +5,6 @@ namespace VisualFindReferences.Core.Tests.Graph.ViewModel using FluentAssertions; using VisualFindReferences.Core.Graph.Model; using System.Windows.Media; - using System; public class ConnectorViewModelTests { diff --git a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeGraphViewModelTests.cs b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeGraphViewModelTests.cs index d4ce0f3..68ab50b 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeGraphViewModelTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeGraphViewModelTests.cs @@ -1,13 +1,9 @@ namespace VisualFindReferences.Core.Tests.Graph.ViewModel { using VisualFindReferences.Core.Graph.ViewModel; - using T = System.String; - using System; using Xunit; using FluentAssertions; - using System.Threading.Tasks; using VisualFindReferences.Core.Graph.Model; - using VisualFindReferences.Core.Graph.View; using System.Collections.ObjectModel; using VisualFindReferences.Core.Graph.Layout; diff --git a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeViewModelTests.cs b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeViewModelTests.cs index ddd58b8..fb038bb 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeViewModelTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/NodeViewModelTests.cs @@ -1,10 +1,8 @@ namespace VisualFindReferences.Core.Tests.Graph.ViewModel { using VisualFindReferences.Core.Graph.ViewModel; - using System; using Xunit; using FluentAssertions; - using VisualFindReferences.Core.Graph.View; using VisualFindReferences.Core.Graph.Model; using System.Collections.ObjectModel; using System.Windows.Media; diff --git a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/VFRNodeGraphViewModelTests.cs b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/VFRNodeGraphViewModelTests.cs index c2ef378..7b0fb8c 100644 --- a/src/VisualFindReferences.Core.Tests/Graph/ViewModel/VFRNodeGraphViewModelTests.cs +++ b/src/VisualFindReferences.Core.Tests/Graph/ViewModel/VFRNodeGraphViewModelTests.cs @@ -1,8 +1,6 @@ namespace VisualFindReferences.Core.Tests.Graph.ViewModel { using VisualFindReferences.Core.Graph.ViewModel; - using T = System.String; - using System; using Xunit; using FluentAssertions; using System.Collections.ObjectModel; diff --git a/src/VisualFindReferences.Core/Graph/Model/ModelBase.cs b/src/VisualFindReferences.Core/Graph/Model/ModelBase.cs index 215df3d..e1d7077 100644 --- a/src/VisualFindReferences.Core/Graph/Model/ModelBase.cs +++ b/src/VisualFindReferences.Core/Graph/Model/ModelBase.cs @@ -1,5 +1,4 @@ -using System; -using System.ComponentModel; +using System.ComponentModel; namespace VisualFindReferences.Core.Graph.Model { diff --git a/src/VisualFindReferences.Core/Graph/Model/Nodes/AnonymousMethodNode.cs b/src/VisualFindReferences.Core/Graph/Model/Nodes/AnonymousMethodNode.cs index a526b59..36cca31 100644 --- a/src/VisualFindReferences.Core/Graph/Model/Nodes/AnonymousMethodNode.cs +++ b/src/VisualFindReferences.Core/Graph/Model/Nodes/AnonymousMethodNode.cs @@ -1,6 +1,4 @@ -using System.Windows.Media; - -namespace VisualFindReferences.Core.Graph.Model.Nodes +namespace VisualFindReferences.Core.Graph.Model.Nodes { public class AnonymousMethodNode : VariableContainedFunctionNode { diff --git a/src/VisualFindReferences.Core/Graph/Model/Nodes/LambdaNode.cs b/src/VisualFindReferences.Core/Graph/Model/Nodes/LambdaNode.cs index dd2ca31..e7f3a0e 100644 --- a/src/VisualFindReferences.Core/Graph/Model/Nodes/LambdaNode.cs +++ b/src/VisualFindReferences.Core/Graph/Model/Nodes/LambdaNode.cs @@ -1,6 +1,4 @@ -using System.Windows.Media; - -namespace VisualFindReferences.Core.Graph.Model.Nodes +namespace VisualFindReferences.Core.Graph.Model.Nodes { public class LambdaNode : VariableContainedFunctionNode { diff --git a/src/VisualFindReferences.Core/Graph/Model/Nodes/VFRNode.cs b/src/VisualFindReferences.Core/Graph/Model/Nodes/VFRNode.cs index 1da23a4..84655cd 100644 --- a/src/VisualFindReferences.Core/Graph/Model/Nodes/VFRNode.cs +++ b/src/VisualFindReferences.Core/Graph/Model/Nodes/VFRNode.cs @@ -1,5 +1,4 @@ using Microsoft.CodeAnalysis; -using System; using System.Collections.Generic; using System.Windows.Media; diff --git a/src/VisualFindReferences.TestHarness/MainWindow.xaml.cs b/src/VisualFindReferences.TestHarness/MainWindow.xaml.cs index 8cae588..495e9b5 100644 --- a/src/VisualFindReferences.TestHarness/MainWindow.xaml.cs +++ b/src/VisualFindReferences.TestHarness/MainWindow.xaml.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; diff --git a/src/VisualFindReferences/Commands/FindReferencesForSymbolCommand.cs b/src/VisualFindReferences/Commands/FindReferencesForSymbolCommand.cs index b0a82ae..ef7ce09 100644 --- a/src/VisualFindReferences/Commands/FindReferencesForSymbolCommand.cs +++ b/src/VisualFindReferences/Commands/FindReferencesForSymbolCommand.cs @@ -2,10 +2,6 @@ { using System; using System.ComponentModel.Design; - using Microsoft.CodeAnalysis; - using Microsoft.CodeAnalysis.CSharp.Syntax; - using Microsoft.CodeAnalysis.FindSymbols; - using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.Shell; using VisualFindReferences; using VisualFindReferences.Helper; diff --git a/src/VisualFindReferences/Views/IVisualFindReferencesToolWindow.cs b/src/VisualFindReferences/Views/IVisualFindReferencesToolWindow.cs index 509aec6..0005478 100644 --- a/src/VisualFindReferences/Views/IVisualFindReferencesToolWindow.cs +++ b/src/VisualFindReferences/Views/IVisualFindReferencesToolWindow.cs @@ -1,5 +1,4 @@ -using Microsoft.CodeAnalysis; -using Microsoft.VisualStudio.Text.Editor; +using Microsoft.VisualStudio.Text.Editor; namespace VisualFindReferences.Views { diff --git a/src/VisualFindReferences/Views/VisualFindReferencesHost.xaml.cs b/src/VisualFindReferences/Views/VisualFindReferencesHost.xaml.cs index 62939d7..4f3360a 100644 --- a/src/VisualFindReferences/Views/VisualFindReferencesHost.xaml.cs +++ b/src/VisualFindReferences/Views/VisualFindReferencesHost.xaml.cs @@ -1,10 +1,6 @@ namespace VisualFindReferences.Views { using Microsoft.CodeAnalysis; - using Microsoft.VisualStudio.ComponentModelHost; - using Microsoft.VisualStudio.LanguageServices; - using Microsoft.VisualStudio.Shell; - using Microsoft.VisualStudio.TextManager.Interop; using System; using System.Collections.Generic; using System.Linq; @@ -20,19 +16,25 @@ using VisualFindReferences.Core.Graph.View; using VisualFindReferences.Core.Graph.ViewModel; using VisualFindReferences.Helper; + using VisualFindReferences.Options; /// /// Interaction logic for VisualFindReferencesHost.xaml /// public partial class VisualFindReferencesHost : UserControl { - private VisualFindReferencesPackage _package; - - public VisualFindReferencesHost() + public VisualFindReferencesHost(GeneralOptions options) { InitializeComponent(); Model = new VFRNodeGraph(); MainDisplay.DataContext = FilteringDisplay.DataContext = ViewModel = Model.ViewModel as VFRNodeGraphViewModel; + + ViewModel.DoubleClickAction = options.DefaultDoubleClickAction; + ViewModel.ProjectFilterMatchPattern = options.DefaultProjectFilter; + ViewModel.LayoutType = options.DefaultLayoutAlgorithmType; + ViewModel.AutoFitToDisplay = options.DefaultFitToDisplay; + + SetMenuChecks(); } public VFRNodeGraphViewModel ViewModel { get; } @@ -132,21 +134,6 @@ private ICommand GetDeleteCommand(Node node) return new RelayCommand(() => Model.Nodes.Remove(node)); } - internal void SetPackage(VisualFindReferencesPackage visualFindReferencesPackage) - { - var packageWasNull = _package == null; - _package = visualFindReferencesPackage; - if (packageWasNull) - { - var options = _package.Options; - ViewModel.DoubleClickAction = options.DefaultDoubleClickAction; - ViewModel.ProjectFilterMatchPattern = options.DefaultProjectFilter; - ViewModel.LayoutType = options.DefaultLayoutAlgorithmType; - ViewModel.AutoFitToDisplay = options.DefaultFitToDisplay; - SetMenuChecks(); - } - } - private void SetMenuChecks() { var doubleClickMenu = (ContextMenu)FindResource("DoubleClickActionContextMenu"); diff --git a/src/VisualFindReferences/Views/VisualFindReferencesToolWindow.cs b/src/VisualFindReferences/Views/VisualFindReferencesToolWindow.cs index 1482cd5..18fcd31 100644 --- a/src/VisualFindReferences/Views/VisualFindReferencesToolWindow.cs +++ b/src/VisualFindReferences/Views/VisualFindReferencesToolWindow.cs @@ -15,20 +15,24 @@ using VisualFindReferences.Core.Graph.Model.Nodes; using VisualFindReferences.Core.Graph.ViewModel; using VisualFindReferences.Helper; +using VisualFindReferences.Options; namespace VisualFindReferences.Views { - [Guid("f27b912a-9ce0-4e68-a8db-cdd2516793cd")] + [Guid(ToolWindowGuid)] internal class VisualFindReferencesToolWindow : ToolWindowPane, IVisualFindReferencesToolWindow { + public const string ToolWindowGuid = "f27b912a-9ce0-4e68-a8db-cdd2516793cd"; + public const string Title = "Visual Find References"; + private readonly VisualFindReferencesHost _host; - public VisualFindReferencesToolWindow() : + public VisualFindReferencesToolWindow(GeneralOptions options) : base(null) { - Caption = "Visual Find References"; + Caption = Title; - base.Content = _host = new VisualFindReferencesHost(); + base.Content = _host = new VisualFindReferencesHost(options); } public void Clear() @@ -98,10 +102,5 @@ async Task FindReferencesAsync(Action updateText, NodeG _host.ViewModel.RunAction(FindReferencesAsync, SymbolProcessor.ProcessFoundReferences); } - - internal void SetPackage(VisualFindReferencesPackage visualFindReferencesPackage) - { - _host.SetPackage(visualFindReferencesPackage); - } } } diff --git a/src/VisualFindReferences/VisualFindReferencesPackage.cs b/src/VisualFindReferences/VisualFindReferencesPackage.cs index fde9952..449259a 100644 --- a/src/VisualFindReferences/VisualFindReferencesPackage.cs +++ b/src/VisualFindReferences/VisualFindReferencesPackage.cs @@ -3,8 +3,8 @@ using System; using System.Runtime.InteropServices; using System.Threading; + using System.Threading.Tasks; using Microsoft.VisualStudio; - using Microsoft.VisualStudio.ComponentModelHost; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using VisualFindReferences.Commands; @@ -33,49 +33,44 @@ public IVisualFindReferencesToolWindow ShowToolWindow() StyleFinder.ResourceUri = "pack://application:,,,/VisualFindReferencesVS2019;component/views/generic.xaml"; #endif - var window = FindToolWindow(typeof(VisualFindReferencesToolWindow), 0, true); - if (window?.Frame == null) + VisualFindReferencesToolWindow window = null; + + JoinableTaskFactory.RunAsync(async () => { - throw new NotSupportedException("Cannot create Visual Find Reference tool window."); - } - var windowFrame = (IVsWindowFrame)window.Frame; - ErrorHandler.ThrowOnFailure(windowFrame.Show()); - var toolWin = window as VisualFindReferencesToolWindow; - toolWin?.SetPackage(this); - return toolWin; - } + window = await ShowToolWindowAsync(typeof(VisualFindReferencesToolWindow), 0, true, DisposalToken) as VisualFindReferencesToolWindow; + if (window?.Frame == null) + { + throw new NotSupportedException("Cannot create Visual Find Reference tool window."); + } + var windowFrame = (IVsWindowFrame)window.Frame; + ErrorHandler.ThrowOnFailure(windowFrame.Show()); + }).Join(); + return window; + } - /// - /// Initialization of the package; this method is called right after the package is sited, so this is the place - /// where you can put all the initialization code that rely on services provided by VisualStudio. - /// - /// A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down. - /// A provider for progress updates. - /// A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method. protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) { await base.InitializeAsync(cancellationToken, progress).ConfigureAwait(true); - // When initialized asynchronously, the current thread may be a background thread at this point. - // Do any initialization that requires the UI thread after switching to the UI thread. await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); -#pragma warning disable VSSDK006 // null check is present - var componentModel = (IComponentModel)await GetServiceAsync(typeof(SComponentModel)).ConfigureAwait(true); - if (componentModel == null) - { - throw new InvalidOperationException(); - } - await FindReferencesForSymbolCommand.InitializeAsync(this).ConfigureAwait(true); + } - //var window = FindToolWindow(typeof(VisualFindReferencesToolWindow), 0, true); - //if (window != null) - //{ - // var toolWin = window as VisualFindReferencesToolWindow; - // toolWin?.SetPackage(this); - //} + public override IVsAsyncToolWindowFactory GetAsyncToolWindowFactory(Guid toolWindowType) + { + return toolWindowType.Equals(Guid.Parse(VisualFindReferencesToolWindow.ToolWindowGuid)) ? this : null; + } + + protected override string GetToolWindowTitle(Type toolWindowType, int id) + { + return toolWindowType == typeof(VisualFindReferencesToolWindow) ? VisualFindReferencesToolWindow.Title : base.GetToolWindowTitle(toolWindowType, id); + } + + protected override Task InitializeToolWindowAsync(Type toolWindowType, int id, CancellationToken cancellationToken) + { + return Task.FromResult(Options); } } } \ No newline at end of file