Added public api changes for TagHelper project system

This commit is contained in:
Ajay Bhargav Baaskaran 2017-11-15 15:52:02 -08:00
parent 6cf78ceb1b
commit 9a2e3ceab6
6 changed files with 52 additions and 10 deletions

View File

@ -8,5 +8,6 @@ namespace Microsoft.CodeAnalysis.Razor.ProjectSystem
Added,
Removed,
Changed,
TagHelpersChanged,
}
}

View File

@ -0,0 +1,17 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
namespace Microsoft.VisualStudio.Editor.Razor
{
public sealed class ContextChangeEventArgs : EventArgs
{
public ContextChangeEventArgs(ContextChangeKind kind)
{
Kind = kind;
}
public ContextChangeKind Kind { get; }
}
}

View File

@ -0,0 +1,12 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.VisualStudio.Editor.Razor
{
public enum ContextChangeKind
{
ProjectChanged,
EditorSettingsChanged,
TagHelpersChanged,
}
}

View File

@ -3,7 +3,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@ -133,7 +132,7 @@ namespace Microsoft.VisualStudio.Editor.Razor
}
// Internal for testing
internal void DocumentTracker_ContextChanged(object sender, EventArgs args)
internal void DocumentTracker_ContextChanged(object sender, ContextChangeEventArgs args)
{
_dispatcher.AssertForegroundThread();

View File

@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Razor.Editor;
using Microsoft.CodeAnalysis.Razor.ProjectSystem;
@ -13,12 +14,14 @@ namespace Microsoft.VisualStudio.Editor.Razor
{
public abstract class VisualStudioDocumentTracker
{
public abstract event EventHandler ContextChanged;
public abstract event EventHandler<ContextChangeEventArgs> ContextChanged;
internal abstract ProjectExtensibilityConfiguration Configuration { get; }
public abstract EditorSettings EditorSettings { get; }
public abstract IReadOnlyList<TagHelperDescriptor> TagHelpers { get; }
public abstract bool IsSupportedProject { get; }
public abstract string FilePath { get; }

View File

@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Razor;
using Microsoft.CodeAnalysis.Razor.Editor;
@ -27,7 +28,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor.Editor
private ProjectSnapshot _project;
private string _projectPath;
public override event EventHandler ContextChanged;
public override event EventHandler<ContextChangeEventArgs> ContextChanged;
public DefaultVisualStudioDocumentTracker(
string filePath,
@ -81,6 +82,8 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor.Editor
public override EditorSettings EditorSettings => _editorSettingsManager.Current;
public override IReadOnlyList<TagHelperDescriptor> TagHelpers => Array.Empty<TagHelperDescriptor>();
public override bool IsSupportedProject => _isSupportedProject;
public override Project Project => _workspace.CurrentSolution.GetProject(_project.UnderlyingProject.Id);
@ -176,7 +179,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor.Editor
_projectManager.Changed += ProjectManager_Changed;
_editorSettingsManager.Changed += EditorSettingsManager_Changed;
OnContextChanged(_project);
OnContextChanged(_project, ContextChangeKind.ProjectChanged);
}
private void Unsubscribe()
@ -187,17 +190,17 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor.Editor
// Detached from project.
_isSupportedProject = false;
_project = null;
OnContextChanged(project: null);
OnContextChanged(project: null, kind: ContextChangeKind.ProjectChanged);
}
private void OnContextChanged(ProjectSnapshot project)
private void OnContextChanged(ProjectSnapshot project, ContextChangeKind kind)
{
_project = project;
var handler = ContextChanged;
if (handler != null)
{
handler(this, EventArgs.Empty);
handler(this, new ContextChangeEventArgs(kind));
}
}
@ -206,14 +209,21 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor.Editor
if (_projectPath != null &&
string.Equals(_projectPath, e.Project.UnderlyingProject.FilePath, StringComparison.OrdinalIgnoreCase))
{
OnContextChanged(e.Project);
if (e.Kind == ProjectChangeKind.TagHelpersChanged)
{
OnContextChanged(e.Project, ContextChangeKind.TagHelpersChanged);
}
else
{
OnContextChanged(e.Project, ContextChangeKind.ProjectChanged);
}
}
}
// Internal for testing
internal void EditorSettingsManager_Changed(object sender, EditorSettingsChangedEventArgs args)
{
OnContextChanged(_project);
OnContextChanged(_project, ContextChangeKind.EditorSettingsChanged);
}
}
}