Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,14 @@ internal partial class AnalyzerItem : BaseItem
{
private readonly AnalyzersFolderItem _analyzersFolder;
private readonly AnalyzerReference _analyzerReference;
private readonly IContextMenuController _contextMenuController;

private static readonly ContextMenuController s_itemContextMenuController =
new ContextMenuController(
ID.RoslynCommands.AnalyzerContextMenu,
items => items.All(item => item is AnalyzerItem));

public AnalyzerItem(AnalyzersFolderItem analyzersFolder, AnalyzerReference analyzerReference)
public AnalyzerItem(AnalyzersFolderItem analyzersFolder, AnalyzerReference analyzerReference, IContextMenuController contextMenuController)
: base(GetNameText(analyzerReference))
{
_analyzersFolder = analyzersFolder;
_analyzerReference = analyzerReference;
_contextMenuController = contextMenuController;
}

public override ImageMoniker IconMoniker
Expand Down Expand Up @@ -70,7 +67,7 @@ public AnalyzerReference AnalyzerReference

public override IContextMenuController ContextMenuController
{
get { return s_itemContextMenuController; }
get { return _contextMenuController; }
}

public AnalyzersFolderItem AnalyzersFolder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,14 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.SolutionExplore
[Order]
internal class AnalyzerItemProvider : AttachedCollectionSourceProvider<AnalyzersFolderItem>
{
[Import(typeof(AnalyzersCommandHandler))]
private IAnalyzersCommandHandler _commandHandler = null;

protected override IAttachedCollectionSource CreateCollectionSource(AnalyzersFolderItem analyzersFolder, string relationshipName)
{
if (relationshipName == KnownRelationships.Contains)
{
return new AnalyzerItemSource(analyzersFolder);
return new AnalyzerItemSource(analyzersFolder, _commandHandler);
}

return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.SolutionExplore
internal class AnalyzerItemSource : IAttachedCollectionSource, INotifyPropertyChanged
{
private readonly AnalyzersFolderItem _analyzersFolder;
private readonly IAnalyzersCommandHandler _commandHandler;
private IReadOnlyCollection<AnalyzerReference> _analyzerReferences;
private BulkObservableCollection<AnalyzerItem> _analyzerItems;

public event PropertyChangedEventHandler PropertyChanged;

public AnalyzerItemSource(AnalyzersFolderItem analyzersFolder)
public AnalyzerItemSource(AnalyzersFolderItem analyzersFolder, IAnalyzersCommandHandler commandHandler)
{
_analyzersFolder = analyzersFolder;
_commandHandler = commandHandler;

_analyzersFolder.Workspace.WorkspaceChanged += Workspace_WorkspaceChanged;
}

Expand Down Expand Up @@ -98,7 +101,7 @@ private void UpdateAnalyzers()

foreach (var reference in referencesToAdd)
{
_analyzerItems.Add(new AnalyzerItem(_analyzersFolder, reference));
_analyzerItems.Add(new AnalyzerItem(_analyzersFolder, reference, _commandHandler.AnalyzerContextMenuController));
}

var sorted = _analyzerItems.OrderBy(item => item.AnalyzerReference.Display).ToArray();
Expand Down Expand Up @@ -161,7 +164,7 @@ public IEnumerable Items
_analyzerReferences = project.AnalyzerReferences;
var initialSet = _analyzerReferences
.OrderBy(ar => ar.Display)
.Select(ar => new AnalyzerItem(_analyzersFolder, ar));
.Select(ar => new AnalyzerItem(_analyzersFolder, ar, _commandHandler.AnalyzerContextMenuController));
_analyzerItems.AddRange(initialSet);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ internal class AnalyzerItemsTracker : IVsSelectionEvents
private IVsMonitorSelection _vsMonitorSelection = null;
private uint _selectionEventsCookie = 0;

public event EventHandler SelectedDiagnosticItemsChanged;
public event EventHandler SelectedHierarchyItemChanged;

[ImportingConstructor]
Expand Down Expand Up @@ -59,6 +58,7 @@ int IVsSelectionEvents.OnElementValueChanged(uint elementid, object varValueOld,
{
return VSConstants.S_OK;
}

int IVsSelectionEvents.OnSelectionChanged(
IVsHierarchy pHierOld,
uint itemidOld,
Expand Down Expand Up @@ -87,7 +87,6 @@ int IVsSelectionEvents.OnSelectionChanged(
.Select(b => b.Folder)
.FirstOrDefault();

var oldSelectedDiagnosticItems = this.SelectedDiagnosticItems;
this.SelectedDiagnosticItems = selectedObjects
.OfType<DiagnosticItem.BrowseObject>()
.Select(b => b.DiagnosticItem)
Expand All @@ -99,11 +98,6 @@ int IVsSelectionEvents.OnSelectionChanged(
this.SelectedHierarchyItemChanged?.Invoke(this, EventArgs.Empty);
}

if (oldSelectedDiagnosticItems != this.SelectedDiagnosticItems)
{
this.SelectedDiagnosticItemsChanged?.Invoke(this, EventArgs.Empty);
}

return VSConstants.S_OK;
}

Expand Down
Loading