/*
Copyright (C) 2014-2019 de4dot@gmail.com
This file is part of dnSpy
dnSpy is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
dnSpy is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with dnSpy. If not, see .
*/
using System;
using System.ComponentModel.Composition;
using dnSpy.Contracts.Decompiler;
namespace dnSpy.Contracts.Documents.Tabs.DocViewer {
///
/// Creates s. Use
/// to export an instance.
///
public interface IDocumentViewerReferenceEnablerProvider {
///
/// Creates a or returns null
///
/// Document viewer
///
IDocumentViewerReferenceEnabler? Create(IDocumentViewer documentViewer);
}
/// Metadata
public interface IDocumentViewerReferenceEnablerProviderMetadata {
/// See
string Id { get; }
}
///
/// Exports a instance
///
[MetadataAttribute, AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public sealed class ExportDocumentViewerReferenceEnablerProviderAttribute : ExportAttribute, IDocumentViewerReferenceEnablerProviderMetadata {
/// Constructor
/// Reference id, eg. . This id
/// must equal an id stored in
public ExportDocumentViewerReferenceEnablerProviderAttribute(string id)
: base(typeof(IDocumentViewerReferenceEnablerProvider)) => Id = id ?? throw new ArgumentNullException(nameof(id));
///
/// Reference id, eg.
///
public string Id { get; }
}
///
/// Enables or disables highlighting of references
///
public interface IDocumentViewerReferenceEnabler : IDisposable {
///
/// Raised whenever has changed
///
event EventHandler? IsEnabledChanged;
///
/// true if the reference is enabled and can be highlighted, false if the reference
/// is disabled and can't be highlighted.
///
bool IsEnabled { get; }
}
}